From f2bf60bad1dca5d716147839c1486b5cdf7f759e Mon Sep 17 00:00:00 2001 From: Jiaqi Luo <6218999+jiaqiluo@users.noreply.github.com> Date: Fri, 11 Jun 2021 13:44:21 -0700 Subject: [PATCH] delete charts/, assets/ and index.yaml --- assets/fleet-agent/fleet-agent-0.3.000.tgz | Bin 2162 -> 0 bytes assets/fleet-agent/fleet-agent-0.3.100.tgz | Bin 2164 -> 0 bytes assets/fleet-agent/fleet-agent-0.3.200.tgz | Bin 2120 -> 0 bytes assets/fleet-agent/fleet-agent-0.3.300.tgz | Bin 2120 -> 0 bytes assets/fleet-agent/fleet-agent-0.3.400.tgz | Bin 2281 -> 0 bytes .../fleet-agent-0.3.500+up0.3.5.tgz | Bin 2328 -> 0 bytes .../fleet-agent-0.3.600-rc1+up0.3.6-rc1.tgz | Bin 2335 -> 0 bytes assets/fleet-crd/fleet-crd-0.3.000.tgz | Bin 9676 -> 0 bytes assets/fleet-crd/fleet-crd-0.3.100.tgz | Bin 9676 -> 0 bytes assets/fleet-crd/fleet-crd-0.3.200.tgz | Bin 9718 -> 0 bytes assets/fleet-crd/fleet-crd-0.3.300.tgz | Bin 9718 -> 0 bytes assets/fleet-crd/fleet-crd-0.3.400.tgz | Bin 9990 -> 0 bytes .../fleet-crd/fleet-crd-0.3.500+up0.3.5.tgz | Bin 10058 -> 0 bytes .../fleet-crd-0.3.600-rc1+up0.3.6-rc1.tgz | Bin 10668 -> 0 bytes assets/fleet/fleet-0.3.000.tgz | Bin 2798 -> 0 bytes assets/fleet/fleet-0.3.100.tgz | Bin 2800 -> 0 bytes assets/fleet/fleet-0.3.200.tgz | Bin 2878 -> 0 bytes assets/fleet/fleet-0.3.300.tgz | Bin 2875 -> 0 bytes assets/fleet/fleet-0.3.400.tgz | Bin 3002 -> 0 bytes assets/fleet/fleet-0.3.500+up0.3.5.tgz | Bin 3029 -> 0 bytes .../fleet/fleet-0.3.600-rc1+up0.3.6-rc1.tgz | Bin 3127 -> 0 bytes assets/longhorn/longhorn-1.0.200.tgz | Bin 11516 -> 0 bytes assets/longhorn/longhorn-1.0.201.tgz | Bin 11524 -> 0 bytes assets/longhorn/longhorn-1.1.000.tgz | Bin 14785 -> 0 bytes assets/longhorn/longhorn-1.1.001.tgz | Bin 14845 -> 0 bytes assets/longhorn/longhorn-1.1.100+up1.1.1.tgz | Bin 15806 -> 0 bytes assets/longhorn/longhorn-crd-1.0.200.tgz | Bin 923 -> 0 bytes assets/longhorn/longhorn-crd-1.0.201.tgz | Bin 876 -> 0 bytes assets/longhorn/longhorn-crd-1.1.000.tgz | Bin 1631 -> 0 bytes assets/longhorn/longhorn-crd-1.1.001.tgz | Bin 1631 -> 0 bytes .../longhorn/longhorn-crd-1.1.100+up1.1.1.tgz | Bin 1810 -> 0 bytes ...s-operator-crd-1.0.100-rc7+up1.0.1-rc7.tgz | Bin 1081 -> 0 bytes ...r-aks-operator-1.0.100-rc7+up1.0.1-rc7.tgz | Bin 1460 -> 0 bytes .../rancher-alerting-drivers-1.0.200.tgz | Bin 7388 -> 0 bytes ...rancher-backup-crd-1.0.400+up1.0.4-rc4.tgz | Bin 1697 -> 0 bytes .../rancher-backup-crd-1.1.100+up1.1.1.tgz | Bin 1693 -> 0 bytes .../rancher-backup/rancher-backup-1.0.200.tgz | Bin 4658 -> 0 bytes .../rancher-backup/rancher-backup-1.0.201.tgz | Bin 5321 -> 0 bytes .../rancher-backup/rancher-backup-1.0.300.tgz | Bin 5308 -> 0 bytes .../rancher-backup/rancher-backup-1.0.301.tgz | Bin 5321 -> 0 bytes .../rancher-backup-1.0.400+up1.0.4-rc4.tgz | Bin 5751 -> 0 bytes .../rancher-backup-1.1.100+up1.1.1.tgz | Bin 5857 -> 0 bytes .../rancher-backup-crd-1.0.200.tgz | Bin 1719 -> 0 bytes .../rancher-backup-crd-1.0.201.tgz | Bin 1675 -> 0 bytes .../rancher-backup-crd-1.0.300.tgz | Bin 1673 -> 0 bytes .../rancher-backup-crd-1.0.301.tgz | Bin 1673 -> 0 bytes .../rancher-cis-benchmark-1.0.100.tgz | Bin 3416 -> 0 bytes .../rancher-cis-benchmark-1.0.200.tgz | Bin 3944 -> 0 bytes .../rancher-cis-benchmark-1.0.300.tgz | Bin 4828 -> 0 bytes .../rancher-cis-benchmark-1.0.301.tgz | Bin 4835 -> 0 bytes .../rancher-cis-benchmark-1.0.400.tgz | Bin 5079 -> 0 bytes .../rancher-cis-benchmark-1.0.500.tgz | Bin 5081 -> 0 bytes .../rancher-cis-benchmark-1.0.501.tgz | Bin 5082 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.100.tgz | Bin 1333 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.200.tgz | Bin 1280 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.300.tgz | Bin 1448 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.301.tgz | Bin 1448 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.400.tgz | Bin 1450 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.500.tgz | Bin 1450 -> 0 bytes .../rancher-cis-benchmark-crd-1.0.501.tgz | Bin 1448 -> 0 bytes ...s-operator-crd-1.1.100-rc1+up1.1.1-rc1.tgz | Bin 1158 -> 0 bytes ...s-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz | Bin 1156 -> 0 bytes ...r-eks-operator-1.1.100-rc1+up1.1.1-rc1.tgz | Bin 1326 -> 0 bytes ...r-eks-operator-1.1.100-rc2+up1.1.1-rc2.tgz | Bin 1460 -> 0 bytes .../rancher-external-ip-webhook-0.1.400.tgz | Bin 7296 -> 0 bytes .../rancher-external-ip-webhook-0.1.600.tgz | Bin 7541 -> 0 bytes ...er-external-ip-webhook-0.1.601+up0.1.6.tgz | Bin 7550 -> 0 bytes .../rancher-external-ip-webhook-0.1.601.tgz | Bin 7545 -> 0 bytes .../rancher-gatekeeper-3.1.100.tgz | Bin 6114 -> 0 bytes .../rancher-gatekeeper-3.1.101.tgz | Bin 6727 -> 0 bytes .../rancher-gatekeeper-3.2.101.tgz | Bin 6994 -> 0 bytes .../rancher-gatekeeper-3.3.000.tgz | Bin 7397 -> 0 bytes .../rancher-gatekeeper-3.3.1+up3.3.0.tgz | Bin 7402 -> 0 bytes .../rancher-gatekeeper-crd-3.1.100.tgz | Bin 2479 -> 0 bytes .../rancher-gatekeeper-crd-3.1.101.tgz | Bin 2439 -> 0 bytes .../rancher-gatekeeper-crd-3.2.101.tgz | Bin 3693 -> 0 bytes .../rancher-gatekeeper-crd-3.3.000.tgz | Bin 3682 -> 0 bytes .../rancher-gatekeeper-crd-3.3.1+up3.3.0.tgz | Bin 3684 -> 0 bytes ...e-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz | Bin 1375 -> 0 bytes ...r-gke-operator-1.1.100-rc2+up1.1.1-rc2.tgz | Bin 1458 -> 0 bytes .../rancher-grafana-6.6.401+up6.6.4.tgz | Bin 27618 -> 0 bytes .../rancher-grafana-6.6.402+up6.6.4.tgz | Bin 27779 -> 0 bytes .../rancher-istio-1.8.601.tgz | Bin 19461 -> 0 bytes .../rancher-istio-1.9.501.tgz | Bin 19288 -> 0 bytes .../rancher-istio/rancher-istio-1.7.100.tgz | Bin 13476 -> 0 bytes .../rancher-istio/rancher-istio-1.7.300.tgz | Bin 14077 -> 0 bytes .../rancher-istio/rancher-istio-1.7.301.tgz | Bin 17401 -> 0 bytes .../rancher-istio/rancher-istio-1.8.300.tgz | Bin 17610 -> 0 bytes .../rancher-kiali-server-1.23.001.tgz | Bin 9104 -> 0 bytes .../rancher-kiali-server-1.24.001.tgz | Bin 9100 -> 0 bytes .../rancher-kiali-server-1.24.003.tgz | Bin 9246 -> 0 bytes .../rancher-kiali-server-1.29.000.tgz | Bin 9763 -> 0 bytes ...rancher-kiali-server-1.32.100+up1.32.0.tgz | Bin 10204 -> 0 bytes .../rancher-kiali-server-crd-1.23.001.tgz | Bin 607 -> 0 bytes .../rancher-kiali-server-crd-1.24.001.tgz | Bin 561 -> 0 bytes .../rancher-kiali-server-crd-1.24.003.tgz | Bin 562 -> 0 bytes .../rancher-kiali-server-crd-1.29.000.tgz | Bin 561 -> 0 bytes ...her-kiali-server-crd-1.32.100+up1.32.0.tgz | Bin 617 -> 0 bytes ...r-kube-state-metrics-2.13.101+up2.13.1.tgz | Bin 11619 -> 0 bytes .../rancher-logging-3.10.1+up3.10.0.tgz | Bin 11635 -> 0 bytes .../rancher-logging-3.6.000.tgz | Bin 7694 -> 0 bytes .../rancher-logging-3.6.001.tgz | Bin 8488 -> 0 bytes .../rancher-logging-3.8.201.tgz | Bin 8769 -> 0 bytes .../rancher-logging-3.9.000.tgz | Bin 9660 -> 0 bytes .../rancher-logging-3.9.401+up3.9.4.tgz | Bin 11649 -> 0 bytes .../rancher-logging-crd-3.10.1+up3.10.0.tgz | Bin 38772 -> 0 bytes .../rancher-logging-crd-3.6.000.tgz | Bin 21426 -> 0 bytes .../rancher-logging-crd-3.6.001.tgz | Bin 21372 -> 0 bytes .../rancher-logging-crd-3.8.201.tgz | Bin 24252 -> 0 bytes .../rancher-logging-crd-3.9.000.tgz | Bin 26805 -> 0 bytes .../rancher-logging-crd-3.9.401+up3.10.0.tgz | Bin 38763 -> 0 bytes .../rancher-logging-crd-3.9.401+up3.9.4.tgz | Bin 36676 -> 0 bytes .../rancher-monitoring-14.5.101+up14.5.0.tgz | Bin 350004 -> 0 bytes .../rancher-monitoring-9.4.200.tgz | Bin 220129 -> 0 bytes .../rancher-monitoring-9.4.201.tgz | Bin 221201 -> 0 bytes .../rancher-monitoring-9.4.202.tgz | Bin 217389 -> 0 bytes .../rancher-monitoring-9.4.203.tgz | Bin 233970 -> 0 bytes ...ncher-monitoring-crd-14.5.101+up14.5.0.tgz | Bin 117911 -> 0 bytes .../rancher-monitoring-crd-9.4.200.tgz | Bin 113776 -> 0 bytes .../rancher-monitoring-crd-9.4.201.tgz | Bin 113735 -> 0 bytes .../rancher-monitoring-crd-9.4.202.tgz | Bin 113958 -> 0 bytes .../rancher-monitoring-crd-9.4.203.tgz | Bin 113953 -> 0 bytes ...ancher-node-exporter-1.16.201+up1.16.2.tgz | Bin 6668 -> 0 bytes .../rancher-operator-crd-0.1.000.tgz | Bin 7035 -> 0 bytes .../rancher-operator-crd-0.1.100.tgz | Bin 7033 -> 0 bytes .../rancher-operator-crd-0.1.200.tgz | Bin 7039 -> 0 bytes .../rancher-operator-crd-0.1.300.tgz | Bin 8634 -> 0 bytes .../rancher-operator-crd-0.1.400+up0.1.4.tgz | Bin 8652 -> 0 bytes .../rancher-operator-0.1.000.tgz | Bin 1085 -> 0 bytes .../rancher-operator-0.1.100.tgz | Bin 1115 -> 0 bytes .../rancher-operator-0.1.200.tgz | Bin 1088 -> 0 bytes .../rancher-operator-0.1.300.tgz | Bin 1087 -> 0 bytes .../rancher-operator-0.1.400+up0.1.4.tgz | Bin 1087 -> 0 bytes .../rancher-prom2teams-0.2.0+up0.2.0.tgz | Bin 4292 -> 0 bytes ...r-prometheus-adapter-2.12.100+up2.12.1.tgz | Bin 8367 -> 0 bytes .../rancher-pushprox-0.1.0.tgz | Bin 5934 -> 0 bytes .../rancher-pushprox-0.1.1.tgz | Bin 5926 -> 0 bytes .../rancher-pushprox-0.1.2.tgz | Bin 6095 -> 0 bytes .../rancher-pushprox-0.1.201.tgz | Bin 6104 -> 0 bytes .../rancher-pushprox-0.1.300.tgz | Bin 6316 -> 0 bytes .../rancher-pushprox-0.1.400.tgz | Bin 7101 -> 0 bytes .../rancher-sachet/rancher-sachet-1.0.100.tgz | Bin 3599 -> 0 bytes .../rancher-tracing-1.20.001.tgz | Bin 3268 -> 0 bytes .../rancher-tracing-1.20.002.tgz | Bin 3273 -> 0 bytes .../rancher-tracing-1.20.100.tgz | Bin 3690 -> 0 bytes .../rancher-vsphere-cpi-1.0.0.tgz | Bin 3594 -> 0 bytes .../rancher-vsphere-cpi-1.0.000.tgz | Bin 3594 -> 0 bytes .../rancher-vsphere-csi-2.1.000.tgz | Bin 5776 -> 0 bytes .../rancher-vsphere-csi-2.2.0.tgz | Bin 6436 -> 0 bytes .../rancher-webhook-0.1.0-beta500.tgz | Bin 1224 -> 0 bytes .../rancher-webhook-0.1.0-beta700.tgz | Bin 1229 -> 0 bytes .../rancher-webhook-0.1.0-beta900.tgz | Bin 1215 -> 0 bytes .../rancher-webhook-0.1.0-beta901.tgz | Bin 1211 -> 0 bytes ...er-webhook-0.2.1-alpha+up0.2.0-alpha01.tgz | Bin 1489 -> 0 bytes .../rancher-windows-exporter-0.1.0.tgz | Bin 5416 -> 0 bytes .../rancher-wins-upgrader-0.0.100+up0.0.1.tgz | Bin 5854 -> 0 bytes assets/rio/rio-0.8.000.tgz | Bin 3663 -> 0 bytes assets/rio/rio-0.8.001.tgz | Bin 3645 -> 0 bytes assets/rio/rio-0.8.1.tgz | Bin 3640 -> 0 bytes .../system-upgrade-controller-0.7.1.tgz | Bin 1667 -> 0 bytes .../fleet-agent/0.3.000/Chart.yaml | 12 - .../0.3.000/templates/_helpers.tpl | 7 - .../0.3.000/templates/configmap.yaml | 12 - .../0.3.000/templates/deployment.yaml | 22 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../fleet-agent/0.3.000/templates/rbac.yaml | 25 - .../fleet-agent/0.3.000/templates/secret.yaml | 10 - .../0.3.000/templates/serviceaccount.yaml | 4 - .../0.3.000/templates/validate.yaml | 11 - .../fleet-agent/0.3.000/values.yaml | 39 - .../fleet-agent/0.3.100/Chart.yaml | 12 - .../0.3.100/templates/_helpers.tpl | 7 - .../0.3.100/templates/configmap.yaml | 12 - .../0.3.100/templates/deployment.yaml | 22 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../fleet-agent/0.3.100/templates/rbac.yaml | 25 - .../fleet-agent/0.3.100/templates/secret.yaml | 10 - .../0.3.100/templates/serviceaccount.yaml | 4 - .../0.3.100/templates/validate.yaml | 11 - .../fleet-agent/0.3.100/values.yaml | 39 - .../fleet-agent/0.3.200/Chart.yaml | 12 - .../0.3.200/templates/_helpers.tpl | 7 - .../0.3.200/templates/configmap.yaml | 12 - .../0.3.200/templates/deployment.yaml | 22 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../fleet-agent/0.3.200/templates/rbac.yaml | 25 - .../fleet-agent/0.3.200/templates/secret.yaml | 10 - .../0.3.200/templates/serviceaccount.yaml | 4 - .../0.3.200/templates/validate.yaml | 11 - .../fleet-agent/0.3.200/values.yaml | 39 - .../fleet-agent/0.3.300/Chart.yaml | 12 - .../0.3.300/templates/_helpers.tpl | 7 - .../0.3.300/templates/configmap.yaml | 12 - .../0.3.300/templates/deployment.yaml | 22 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../fleet-agent/0.3.300/templates/rbac.yaml | 25 - .../fleet-agent/0.3.300/templates/secret.yaml | 10 - .../0.3.300/templates/serviceaccount.yaml | 4 - .../0.3.300/templates/validate.yaml | 11 - .../fleet-agent/0.3.300/values.yaml | 39 - .../fleet-agent/0.3.400/Chart.yaml | 12 - .../0.3.400/templates/_helpers.tpl | 7 - .../0.3.400/templates/configmap.yaml | 12 - .../0.3.400/templates/deployment.yaml | 30 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 28 - .../fleet-agent/0.3.400/templates/rbac.yaml | 25 - .../fleet-agent/0.3.400/templates/secret.yaml | 10 - .../0.3.400/templates/serviceaccount.yaml | 4 - .../0.3.400/templates/validate.yaml | 11 - .../fleet-agent/0.3.400/values.yaml | 52 - .../fleet-agent/0.3.500+up0.3.5/Chart.yaml | 12 - .../0.3.500+up0.3.5/templates/_helpers.tpl | 7 - .../0.3.500+up0.3.5/templates/configmap.yaml | 12 - .../0.3.500+up0.3.5/templates/deployment.yaml | 30 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 28 - .../0.3.500+up0.3.5/templates/rbac.yaml | 25 - .../0.3.500+up0.3.5/templates/secret.yaml | 10 - .../templates/serviceaccount.yaml | 4 - .../0.3.500+up0.3.5/templates/validate.yaml | 11 - .../fleet-agent/0.3.500+up0.3.5/values.yaml | 57 - .../0.3.600-rc1+up0.3.6-rc1/Chart.yaml | 12 - .../templates/_helpers.tpl | 7 - .../templates/configmap.yaml | 12 - .../templates/deployment.yaml | 30 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 28 - .../templates/rbac.yaml | 25 - .../templates/secret.yaml | 10 - .../templates/serviceaccount.yaml | 4 - .../templates/validate.yaml | 11 - .../0.3.600-rc1+up0.3.6-rc1/values.yaml | 57 - charts/fleet-crd/fleet-crd/0.3.000/Chart.yaml | 11 - .../fleet-crd/0.3.000/templates/crds.yaml | 2143 ----- .../0.3.000/templates/gitjobs-crds.yaml | 3208 ------- charts/fleet-crd/fleet-crd/0.3.100/Chart.yaml | 11 - .../fleet-crd/0.3.100/templates/crds.yaml | 2143 ----- .../0.3.100/templates/gitjobs-crds.yaml | 3208 ------- charts/fleet-crd/fleet-crd/0.3.200/Chart.yaml | 12 - .../fleet-crd/0.3.200/templates/crds.yaml | 2168 ----- .../0.3.200/templates/gitjobs-crds.yaml | 3208 ------- charts/fleet-crd/fleet-crd/0.3.300/Chart.yaml | 12 - .../fleet-crd/0.3.300/templates/crds.yaml | 2168 ----- .../0.3.300/templates/gitjobs-crds.yaml | 3208 ------- charts/fleet-crd/fleet-crd/0.3.400/Chart.yaml | 12 - .../fleet-crd/0.3.400/templates/crds.yaml | 2275 ----- .../0.3.400/templates/gitjobs-crds.yaml | 3208 ------- .../fleet-crd/0.3.500+up0.3.5/Chart.yaml | 12 - .../0.3.500+up0.3.5/templates/crds.yaml | 2316 ----- .../templates/gitjobs-crds.yaml | 3208 ------- .../0.3.600-rc1+up0.3.6-rc1/Chart.yaml | 12 - .../templates/crds.yaml | 2587 ------ .../templates/gitjobs-crds.yaml | 3208 ------- charts/fleet/fleet/0.3.000/Chart.yaml | 15 - .../fleet/0.3.000/charts/gitjob/.helmignore | 23 - .../fleet/0.3.000/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 44 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 26 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../fleet/0.3.000/charts/gitjob/values.yaml | 11 - .../fleet/0.3.000/templates/_helpers.tpl | 7 - .../fleet/0.3.000/templates/configmap.yaml | 23 - .../fleet/0.3.000/templates/deployment.yaml | 23 - .../fleet/fleet/0.3.000/templates/rbac.yaml | 106 - .../0.3.000/templates/serviceaccount.yaml | 10 - charts/fleet/fleet/0.3.000/values.yaml | 38 - charts/fleet/fleet/0.3.100/Chart.yaml | 15 - .../fleet/0.3.100/charts/gitjob/.helmignore | 23 - .../fleet/0.3.100/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 44 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 26 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../fleet/0.3.100/charts/gitjob/values.yaml | 11 - .../fleet/0.3.100/templates/_helpers.tpl | 7 - .../fleet/0.3.100/templates/configmap.yaml | 23 - .../fleet/0.3.100/templates/deployment.yaml | 23 - .../fleet/fleet/0.3.100/templates/rbac.yaml | 106 - .../0.3.100/templates/serviceaccount.yaml | 10 - charts/fleet/fleet/0.3.100/values.yaml | 38 - charts/fleet/fleet/0.3.200/Chart.yaml | 15 - .../fleet/0.3.200/charts/gitjob/.helmignore | 23 - .../fleet/0.3.200/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 38 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 34 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../fleet/0.3.200/charts/gitjob/values.yaml | 17 - .../fleet/0.3.200/templates/_helpers.tpl | 7 - .../fleet/0.3.200/templates/configmap.yaml | 23 - .../fleet/0.3.200/templates/deployment.yaml | 23 - .../fleet/fleet/0.3.200/templates/rbac.yaml | 106 - .../0.3.200/templates/serviceaccount.yaml | 10 - charts/fleet/fleet/0.3.200/values.yaml | 38 - charts/fleet/fleet/0.3.300/Chart.yaml | 15 - .../fleet/0.3.300/charts/gitjob/.helmignore | 23 - .../fleet/0.3.300/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 38 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 34 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../fleet/0.3.300/charts/gitjob/values.yaml | 17 - .../fleet/0.3.300/templates/_helpers.tpl | 7 - .../fleet/0.3.300/templates/configmap.yaml | 23 - .../fleet/0.3.300/templates/deployment.yaml | 23 - .../fleet/fleet/0.3.300/templates/rbac.yaml | 106 - .../0.3.300/templates/serviceaccount.yaml | 10 - charts/fleet/fleet/0.3.300/values.yaml | 38 - charts/fleet/fleet/0.3.400/Chart.yaml | 15 - .../fleet/0.3.400/charts/gitjob/.helmignore | 23 - .../fleet/0.3.400/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 38 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 42 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../fleet/0.3.400/charts/gitjob/values.yaml | 26 - .../fleet/0.3.400/templates/_helpers.tpl | 7 - .../fleet/0.3.400/templates/configmap.yaml | 23 - .../fleet/0.3.400/templates/deployment.yaml | 31 - .../fleet/fleet/0.3.400/templates/rbac.yaml | 106 - .../0.3.400/templates/serviceaccount.yaml | 10 - charts/fleet/fleet/0.3.400/values.yaml | 47 - charts/fleet/fleet/0.3.500+up0.3.5/Chart.yaml | 15 - .../0.3.500+up0.3.5/charts/gitjob/.helmignore | 23 - .../0.3.500+up0.3.5/charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 38 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 42 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../0.3.500+up0.3.5/charts/gitjob/values.yaml | 26 - .../0.3.500+up0.3.5/templates/_helpers.tpl | 7 - .../0.3.500+up0.3.5/templates/configmap.yaml | 23 - .../0.3.500+up0.3.5/templates/deployment.yaml | 39 - .../fleet/0.3.500+up0.3.5/templates/rbac.yaml | 106 - .../templates/serviceaccount.yaml | 10 - .../fleet/fleet/0.3.500+up0.3.5/values.yaml | 53 - .../fleet/0.3.600-rc1+up0.3.6-rc1/Chart.yaml | 19 - .../charts/gitjob/.helmignore | 23 - .../charts/gitjob/Chart.yaml | 5 - .../charts/gitjob/templates/_helpers.tpl | 7 - .../charts/gitjob/templates/clusterrole.yaml | 38 - .../gitjob/templates/clusterrolebinding.yaml | 12 - .../charts/gitjob/templates/deployment.yaml | 42 - .../charts/gitjob/templates/service.yaml | 12 - .../gitjob/templates/serviceaccount.yaml | 4 - .../charts/gitjob/values.yaml | 26 - .../templates/_helpers.tpl | 7 - .../templates/configmap.yaml | 23 - .../templates/deployment.yaml | 44 - .../templates/rbac.yaml | 106 - .../templates/serviceaccount.yaml | 10 - .../fleet/0.3.600-rc1+up0.3.6-rc1/values.yaml | 56 - .../longhorn/longhorn-crd/1.0.200/Chart.yaml | 10 - .../longhorn/longhorn-crd/1.0.200/README.md | 2 - .../longhorn-crd/1.0.200/templates/crds.yaml | 172 - .../longhorn/longhorn-crd/1.0.201/Chart.yaml | 10 - .../longhorn/longhorn-crd/1.0.201/README.md | 2 - .../longhorn-crd/1.0.201/templates/crds.yaml | 172 - .../longhorn/longhorn-crd/1.1.000/Chart.yaml | 10 - .../longhorn/longhorn-crd/1.1.000/README.md | 2 - .../longhorn-crd/1.1.000/templates/crds.yaml | 420 - .../longhorn/longhorn-crd/1.1.001/Chart.yaml | 10 - .../longhorn/longhorn-crd/1.1.001/README.md | 2 - .../longhorn-crd/1.1.001/templates/crds.yaml | 420 - .../longhorn-crd/1.1.100+up1.1.1/Chart.yaml | 10 - .../longhorn-crd/1.1.100+up1.1.1/README.md | 2 - .../1.1.100+up1.1.1/templates/crds.yaml | 524 -- charts/longhorn/longhorn/1.0.200/.helmignore | 21 - charts/longhorn/longhorn/1.0.200/Chart.yaml | 35 - charts/longhorn/longhorn/1.0.200/README.md | 49 - .../longhorn/longhorn/1.0.200/app-readme.md | 11 - .../longhorn/longhorn/1.0.200/questions.yml | 346 - .../longhorn/1.0.200/templates/NOTES.txt | 5 - .../longhorn/1.0.200/templates/_helpers.tpl | 47 - .../1.0.200/templates/clusterrole.yaml | 40 - .../1.0.200/templates/clusterrolebinding.yaml | 13 - .../1.0.200/templates/daemonset-sa.yaml | 112 - .../1.0.200/templates/default-setting.yaml | 28 - .../1.0.200/templates/deployment-driver.yaml | 84 - .../1.0.200/templates/deployment-ui.yaml | 61 - .../longhorn/1.0.200/templates/ingress.yaml | 30 - .../1.0.200/templates/postupgrade-job.yaml | 35 - .../longhorn/1.0.200/templates/psp.yaml | 66 - .../1.0.200/templates/registry-secret.yml | 10 - .../1.0.200/templates/serviceaccount.yaml | 6 - .../1.0.200/templates/storageclass.yaml | 14 - .../1.0.200/templates/tls-secrets.yaml | 15 - .../1.0.200/templates/uninstall-job.yaml | 36 - .../longhorn/1.0.200/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 14 - charts/longhorn/longhorn/1.0.200/values.yaml | 136 - charts/longhorn/longhorn/1.0.201/.helmignore | 21 - charts/longhorn/longhorn/1.0.201/Chart.yaml | 36 - charts/longhorn/longhorn/1.0.201/README.md | 49 - .../longhorn/longhorn/1.0.201/app-readme.md | 11 - .../longhorn/longhorn/1.0.201/questions.yml | 346 - .../longhorn/1.0.201/templates/NOTES.txt | 5 - .../longhorn/1.0.201/templates/_helpers.tpl | 47 - .../1.0.201/templates/clusterrole.yaml | 40 - .../1.0.201/templates/clusterrolebinding.yaml | 13 - .../1.0.201/templates/daemonset-sa.yaml | 112 - .../1.0.201/templates/default-setting.yaml | 28 - .../1.0.201/templates/deployment-driver.yaml | 84 - .../1.0.201/templates/deployment-ui.yaml | 61 - .../longhorn/1.0.201/templates/ingress.yaml | 30 - .../1.0.201/templates/postupgrade-job.yaml | 35 - .../longhorn/1.0.201/templates/psp.yaml | 66 - .../1.0.201/templates/registry-secret.yml | 10 - .../1.0.201/templates/serviceaccount.yaml | 6 - .../1.0.201/templates/storageclass.yaml | 14 - .../1.0.201/templates/tls-secrets.yaml | 15 - .../1.0.201/templates/uninstall-job.yaml | 36 - .../longhorn/1.0.201/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 14 - charts/longhorn/longhorn/1.0.201/values.yaml | 136 - charts/longhorn/longhorn/1.1.000/.helmignore | 21 - charts/longhorn/longhorn/1.1.000/Chart.yaml | 37 - charts/longhorn/longhorn/1.1.000/README.md | 32 - .../longhorn/longhorn/1.1.000/app-readme.md | 11 - .../longhorn/longhorn/1.1.000/questions.yml | 512 -- .../longhorn/1.1.000/templates/NOTES.txt | 5 - .../longhorn/1.1.000/templates/_helpers.tpl | 66 - .../1.1.000/templates/clusterrole.yaml | 47 - .../1.1.000/templates/clusterrolebinding.yaml | 13 - .../1.1.000/templates/daemonset-sa.yaml | 114 - .../1.1.000/templates/default-setting.yaml | 38 - .../1.1.000/templates/deployment-driver.yaml | 93 - .../1.1.000/templates/deployment-ui.yaml | 61 - .../longhorn/1.1.000/templates/ingress.yaml | 31 - .../1.1.000/templates/postupgrade-job.yaml | 35 - .../longhorn/1.1.000/templates/psp.yaml | 66 - .../1.1.000/templates/registry-secret.yml | 11 - .../1.1.000/templates/serviceaccount.yaml | 6 - .../1.1.000/templates/storageclass.yaml | 26 - .../1.1.000/templates/tls-secrets.yaml | 16 - .../1.1.000/templates/uninstall-job.yaml | 36 - .../longhorn/1.1.000/templates/userroles.yaml | 38 - .../templates/validate-install-crd.yaml | 14 - charts/longhorn/longhorn/1.1.000/values.yaml | 162 - charts/longhorn/longhorn/1.1.001/.helmignore | 21 - charts/longhorn/longhorn/1.1.001/Chart.yaml | 37 - charts/longhorn/longhorn/1.1.001/README.md | 32 - .../longhorn/longhorn/1.1.001/app-readme.md | 11 - .../longhorn/longhorn/1.1.001/questions.yml | 512 -- .../longhorn/1.1.001/templates/NOTES.txt | 5 - .../longhorn/1.1.001/templates/_helpers.tpl | 66 - .../1.1.001/templates/clusterrole.yaml | 47 - .../1.1.001/templates/clusterrolebinding.yaml | 13 - .../1.1.001/templates/daemonset-sa.yaml | 114 - .../1.1.001/templates/default-setting.yaml | 38 - .../1.1.001/templates/deployment-driver.yaml | 93 - .../1.1.001/templates/deployment-ui.yaml | 61 - .../longhorn/1.1.001/templates/ingress.yaml | 31 - .../1.1.001/templates/postupgrade-job.yaml | 35 - .../longhorn/1.1.001/templates/psp.yaml | 66 - .../1.1.001/templates/registry-secret.yml | 11 - .../1.1.001/templates/serviceaccount.yaml | 6 - .../1.1.001/templates/storageclass.yaml | 26 - .../1.1.001/templates/tls-secrets.yaml | 16 - .../1.1.001/templates/uninstall-job.yaml | 36 - .../longhorn/1.1.001/templates/userroles.yaml | 38 - .../templates/validate-install-crd.yaml | 21 - charts/longhorn/longhorn/1.1.001/values.yaml | 162 - .../longhorn/1.1.100+up1.1.1/.helmignore | 21 - .../longhorn/1.1.100+up1.1.1/Chart.yaml | 37 - .../longhorn/1.1.100+up1.1.1/README.md | 32 - .../longhorn/1.1.100+up1.1.1/app-readme.md | 11 - .../longhorn/1.1.100+up1.1.1/questions.yml | 542 -- .../1.1.100+up1.1.1/templates/NOTES.txt | 5 - .../1.1.100+up1.1.1/templates/_helpers.tpl | 66 - .../templates/clusterrole.yaml | 47 - .../templates/clusterrolebinding.yaml | 13 - .../templates/daemonset-sa.yaml | 125 - .../templates/default-setting.yaml | 43 - .../templates/deployment-driver.yaml | 104 - .../templates/deployment-ui.yaml | 72 - .../1.1.100+up1.1.1/templates/ingress.yaml | 34 - .../templates/postupgrade-job.yaml | 48 - .../1.1.100+up1.1.1/templates/psp.yaml | 66 - .../templates/registry-secret.yml | 11 - .../templates/serviceaccount.yaml | 6 - .../templates/storageclass.yaml | 26 - .../templates/tls-secrets.yaml | 16 - .../templates/uninstall-job.yaml | 49 - .../1.1.100+up1.1.1/templates/userroles.yaml | 38 - .../templates/validate-install-crd.yaml | 23 - .../longhorn/1.1.100+up1.1.1/values.yaml | 220 - .../1.0.100-rc7+up1.0.1-rc7/Chart.yaml | 11 - .../templates/crds.yaml | 165 - .../1.0.100-rc7+up1.0.1-rc7/Chart.yaml | 18 - .../templates/NOTES.txt | 4 - .../templates/_helpers.tpl | 9 - .../templates/clusterrole.yaml | 15 - .../templates/clusterrolebinding.yaml | 13 - .../templates/deployment.yaml | 39 - .../templates/serviceaccount.yaml | 5 - .../1.0.100-rc7+up1.0.1-rc7/values.yaml | 12 - .../1.0.200/Chart.yaml | 20 - .../1.0.200/README.md | 11 - .../1.0.200/app-readme.md | 11 - .../1.0.200/charts/prom2teams/.helmignore | 22 - .../1.0.200/charts/prom2teams/Chart.yaml | 10 - .../1.0.200/charts/prom2teams/files/teams.j2 | 44 - .../charts/prom2teams/templates/NOTES.txt | 2 - .../charts/prom2teams/templates/_helpers.tpl | 73 - .../prom2teams/templates/configmap.yaml | 39 - .../prom2teams/templates/deployment.yaml | 77 - .../charts/prom2teams/templates/psp.yaml | 28 - .../charts/prom2teams/templates/role.yaml | 15 - .../prom2teams/templates/rolebinding.yaml | 13 - .../prom2teams/templates/service-account.yaml | 6 - .../charts/prom2teams/templates/service.yaml | 17 - .../1.0.200/charts/prom2teams/values.yaml | 62 - .../1.0.200/charts/sachet/.helmignore | 23 - .../1.0.200/charts/sachet/Chart.yaml | 11 - .../1.0.200/charts/sachet/files/template.tmpl | 1 - .../1.0.200/charts/sachet/templates/NOTES.txt | 3 - .../charts/sachet/templates/_helpers.tpl | 79 - .../templates/configmap-pre-install.yaml | 34 - .../charts/sachet/templates/deployment.yaml | 75 - .../1.0.200/charts/sachet/templates/psp.yaml | 28 - .../1.0.200/charts/sachet/templates/role.yaml | 15 - .../charts/sachet/templates/rolebinding.yaml | 13 - .../sachet/templates/service-account.yaml | 6 - .../charts/sachet/templates/service.yaml | 17 - .../1.0.200/charts/sachet/values.yaml | 63 - .../1.0.200/questions.yml | 14 - .../1.0.200/templates/NOTES.txt | 2 - .../1.0.200/templates/_helpers.tpl | 91 - .../1.0.200/templates/cluster-role.yaml | 50 - .../1.0.200/values.yaml | 17 - .../1.0.400+up1.0.4-rc4/Chart.yaml | 11 - .../1.0.400+up1.0.4-rc4/README.md | 3 - .../1.0.400+up1.0.4-rc4/templates/backup.yaml | 119 - .../templates/resourceset.yaml | 94 - .../templates/restore.yaml | 102 - .../1.1.100+up1.1.1/Chart.yaml | 11 - .../1.1.100+up1.1.1/README.md | 3 - .../1.1.100+up1.1.1/templates/backup.yaml | 119 - .../templates/resourceset.yaml | 94 - .../1.1.100+up1.1.1/templates/restore.yaml | 102 - .../rancher-backup-crd/1.0.200/Chart.yaml | 10 - .../rancher-backup-crd/1.0.200/README.md | 2 - .../1.0.200/templates/backup.yaml | 119 - .../1.0.200/templates/resourceset.yaml | 94 - .../1.0.200/templates/restore.yaml | 102 - .../rancher-backup-crd/1.0.201/Chart.yaml | 10 - .../rancher-backup-crd/1.0.201/README.md | 2 - .../1.0.201/templates/backup.yaml | 119 - .../1.0.201/templates/resourceset.yaml | 94 - .../1.0.201/templates/restore.yaml | 102 - .../rancher-backup-crd/1.0.300/Chart.yaml | 10 - .../rancher-backup-crd/1.0.300/README.md | 2 - .../1.0.300/templates/backup.yaml | 119 - .../1.0.300/templates/resourceset.yaml | 94 - .../1.0.300/templates/restore.yaml | 102 - .../rancher-backup-crd/1.0.301/Chart.yaml | 10 - .../rancher-backup-crd/1.0.301/README.md | 2 - .../1.0.301/templates/backup.yaml | 119 - .../1.0.301/templates/resourceset.yaml | 94 - .../1.0.301/templates/restore.yaml | 102 - .../rancher-backup/1.0.200/Chart.yaml | 19 - .../rancher-backup/1.0.200/README.md | 69 - .../1.0.200/templates/_helpers.tpl | 76 - .../1.0.200/templates/clusterrolebinding.yaml | 14 - .../1.0.200/templates/deployment.yaml | 59 - .../rancher-backup/1.0.200/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 62 - .../1.0.200/templates/s3-secret.yaml | 31 - .../1.0.200/templates/serviceaccount.yaml | 7 - .../templates/validate-install-crd.yaml | 16 - .../rancher-backup/1.0.200/values.yaml | 49 - .../rancher-backup/1.0.201/Chart.yaml | 20 - .../rancher-backup/1.0.201/README.md | 69 - .../rancher-backup/1.0.201/app-readme.md | 15 - .../1.0.201/templates/_helpers.tpl | 76 - .../1.0.201/templates/clusterrolebinding.yaml | 14 - .../1.0.201/templates/deployment.yaml | 59 - .../rancher-backup/1.0.201/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 62 - .../1.0.201/templates/s3-secret.yaml | 31 - .../1.0.201/templates/serviceaccount.yaml | 7 - .../templates/validate-install-crd.yaml | 16 - .../rancher-backup/1.0.201/values.yaml | 49 - .../rancher-backup/1.0.300/Chart.yaml | 20 - .../rancher-backup/1.0.300/README.md | 69 - .../rancher-backup/1.0.300/app-readme.md | 15 - .../1.0.300/templates/_helpers.tpl | 76 - .../1.0.300/templates/clusterrolebinding.yaml | 14 - .../1.0.300/templates/deployment.yaml | 59 - .../rancher-backup/1.0.300/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 62 - .../1.0.300/templates/s3-secret.yaml | 31 - .../1.0.300/templates/serviceaccount.yaml | 7 - .../templates/validate-install-crd.yaml | 16 - .../rancher-backup/1.0.300/values.yaml | 49 - .../rancher-backup/1.0.301/Chart.yaml | 20 - .../rancher-backup/1.0.301/README.md | 69 - .../rancher-backup/1.0.301/app-readme.md | 15 - .../1.0.301/templates/_helpers.tpl | 76 - .../1.0.301/templates/clusterrolebinding.yaml | 14 - .../1.0.301/templates/deployment.yaml | 59 - .../rancher-backup/1.0.301/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 62 - .../1.0.301/templates/s3-secret.yaml | 31 - .../1.0.301/templates/serviceaccount.yaml | 7 - .../templates/validate-install-crd.yaml | 16 - .../rancher-backup/1.0.301/values.yaml | 49 - .../1.0.400+up1.0.4-rc4/Chart.yaml | 20 - .../1.0.400+up1.0.4-rc4/README.md | 69 - .../1.0.400+up1.0.4-rc4/app-readme.md | 15 - .../default-resourceset-contents/eks.yaml | 17 - .../default-resourceset-contents/fleet.yaml | 49 - .../default-resourceset-contents/gke.yaml | 17 - .../rancher-operator.yaml | 27 - .../default-resourceset-contents/rancher.yaml | 44 - .../templates/_helpers.tpl | 76 - .../templates/clusterrolebinding.yaml | 14 - .../templates/deployment.yaml | 59 - .../1.0.400+up1.0.4-rc4/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 13 - .../templates/s3-secret.yaml | 31 - .../templates/serviceaccount.yaml | 7 - .../templates/validate-install-crd.yaml | 16 - .../1.0.400+up1.0.4-rc4/values.yaml | 49 - .../rancher-backup/1.1.100+up1.1.1/Chart.yaml | 20 - .../rancher-backup/1.1.100+up1.1.1/README.md | 70 - .../1.1.100+up1.1.1/app-readme.md | 15 - .../default-resourceset-contents/aks.yaml | 25 - .../default-resourceset-contents/eks.yaml | 17 - .../default-resourceset-contents/fleet.yaml | 49 - .../default-resourceset-contents/gke.yaml | 17 - .../rancher-operator.yaml | 27 - .../default-resourceset-contents/rancher.yaml | 44 - .../1.1.100+up1.1.1/templates/_helpers.tpl | 76 - .../templates/clusterrolebinding.yaml | 14 - .../1.1.100+up1.1.1/templates/deployment.yaml | 59 - .../1.1.100+up1.1.1/templates/pvc.yaml | 27 - .../templates/rancher-resourceset.yaml | 13 - .../1.1.100+up1.1.1/templates/s3-secret.yaml | 31 - .../templates/serviceaccount.yaml | 11 - .../templates/validate-install-crd.yaml | 16 - .../1.1.100+up1.1.1/values.yaml | 52 - .../1.0.100/Chart.yaml | 10 - .../1.0.100/README.md | 2 - .../1.0.100/templates/clusterscan.yaml | 112 - .../templates/clusterscanbenchmark.yaml | 49 - .../1.0.100/templates/clusterscanprofile.yaml | 37 - .../1.0.100/templates/clusterscanreport.yaml | 40 - .../1.0.200/Chart.yaml | 10 - .../1.0.200/README.md | 2 - .../1.0.200/templates/clusterscan.yaml | 112 - .../templates/clusterscanbenchmark.yaml | 49 - .../1.0.200/templates/clusterscanprofile.yaml | 37 - .../1.0.200/templates/clusterscanreport.yaml | 40 - .../1.0.300/Chart.yaml | 10 - .../1.0.300/README.md | 2 - .../1.0.300/templates/clusterscan.yaml | 149 - .../templates/clusterscanbenchmark.yaml | 55 - .../1.0.300/templates/clusterscanprofile.yaml | 37 - .../1.0.300/templates/clusterscanreport.yaml | 40 - .../1.0.301/Chart.yaml | 10 - .../1.0.301/README.md | 2 - .../1.0.301/templates/clusterscan.yaml | 149 - .../templates/clusterscanbenchmark.yaml | 55 - .../1.0.301/templates/clusterscanprofile.yaml | 37 - .../1.0.301/templates/clusterscanreport.yaml | 40 - .../1.0.400/Chart.yaml | 10 - .../1.0.400/README.md | 2 - .../1.0.400/templates/clusterscan.yaml | 149 - .../templates/clusterscanbenchmark.yaml | 55 - .../1.0.400/templates/clusterscanprofile.yaml | 37 - .../1.0.400/templates/clusterscanreport.yaml | 40 - .../1.0.500/Chart.yaml | 10 - .../1.0.500/README.md | 2 - .../1.0.500/templates/clusterscan.yaml | 149 - .../templates/clusterscanbenchmark.yaml | 55 - .../1.0.500/templates/clusterscanprofile.yaml | 37 - .../1.0.500/templates/clusterscanreport.yaml | 40 - .../1.0.501/Chart.yaml | 10 - .../1.0.501/README.md | 2 - .../1.0.501/templates/clusterscan.yaml | 149 - .../templates/clusterscanbenchmark.yaml | 55 - .../1.0.501/templates/clusterscanprofile.yaml | 37 - .../1.0.501/templates/clusterscanreport.yaml | 40 - .../rancher-cis-benchmark/1.0.100/Chart.yaml | 17 - .../rancher-cis-benchmark/1.0.100/README.md | 9 - .../1.0.100/templates/_helpers.tpl | 23 - .../1.0.100/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.100/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.100/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../1.0.100/templates/cis-roles.yaml | 51 - .../1.0.100/templates/configmap.yaml | 11 - .../1.0.100/templates/deployment.yaml | 46 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.100/templates/rbac.yaml | 43 - .../1.0.100/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-rke-hardened.yml | 9 - .../templates/scanprofile-rke-permissive.yml | 9 - .../1.0.100/templates/scanprofileeks.yml | 9 - .../1.0.100/templates/scanprofilegke.yml | 9 - .../1.0.100/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.100/values.yaml | 39 - .../rancher-cis-benchmark/1.0.200/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.200/README.md | 9 - .../1.0.200/app-readme.md | 12 - .../1.0.200/templates/_helpers.tpl | 23 - .../1.0.200/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.200/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.200/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../1.0.200/templates/cis-roles.yaml | 28 - .../1.0.200/templates/configmap.yaml | 11 - .../1.0.200/templates/deployment.yaml | 46 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.200/templates/rbac.yaml | 43 - .../1.0.200/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-rke-hardened.yml | 9 - .../templates/scanprofile-rke-permissive.yml | 9 - .../1.0.200/templates/scanprofileeks.yml | 9 - .../1.0.200/templates/scanprofilegke.yml | 9 - .../1.0.200/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.200/values.yaml | 39 - .../rancher-cis-benchmark/1.0.300/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.300/README.md | 9 - .../1.0.300/app-readme.md | 15 - .../1.0.300/templates/_helpers.tpl | 23 - .../1.0.300/templates/alertingrule.yaml | 14 - .../1.0.300/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.300/templates/benchmark-cis-1.6.yaml | 8 - .../1.0.300/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.300/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../benchmark-rke-cis-1.6-hardened.yaml | 8 - .../benchmark-rke-cis-1.6-permissive.yaml | 8 - .../benchmark-rke2-cis-1.5-hardened.yaml | 8 - .../benchmark-rke2-cis-1.5-permissive.yaml | 8 - .../1.0.300/templates/cis-roles.yaml | 49 - .../1.0.300/templates/configmap.yaml | 14 - .../1.0.300/templates/deployment.yaml | 57 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.300/templates/rbac.yaml | 43 - .../1.0.300/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-cis-1.6.yaml | 9 - .../scanprofile-rke-1.5-hardened.yml | 9 - .../scanprofile-rke-1.5-permissive.yml | 9 - .../scanprofile-rke-1.6-hardened.yaml | 9 - .../scanprofile-rke-1.6-permissive.yaml | 9 - .../scanprofile-rke2-cis-1.5-hardened.yml | 9 - .../scanprofile-rke2-cis-1.5-permissive.yml | 9 - .../1.0.300/templates/scanprofileeks.yml | 9 - .../1.0.300/templates/scanprofilegke.yml | 9 - .../1.0.300/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.300/values.yaml | 45 - .../rancher-cis-benchmark/1.0.301/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.301/README.md | 9 - .../1.0.301/app-readme.md | 15 - .../1.0.301/templates/_helpers.tpl | 23 - .../1.0.301/templates/alertingrule.yaml | 14 - .../1.0.301/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.301/templates/benchmark-cis-1.6.yaml | 8 - .../1.0.301/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.301/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../benchmark-rke-cis-1.6-hardened.yaml | 8 - .../benchmark-rke-cis-1.6-permissive.yaml | 8 - .../benchmark-rke2-cis-1.5-hardened.yaml | 8 - .../benchmark-rke2-cis-1.5-permissive.yaml | 8 - .../1.0.301/templates/cis-roles.yaml | 49 - .../1.0.301/templates/configmap.yaml | 14 - .../1.0.301/templates/deployment.yaml | 57 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.301/templates/rbac.yaml | 43 - .../1.0.301/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-cis-1.6.yaml | 9 - .../scanprofile-rke-1.5-hardened.yml | 9 - .../scanprofile-rke-1.5-permissive.yml | 9 - .../scanprofile-rke-1.6-hardened.yaml | 9 - .../scanprofile-rke-1.6-permissive.yaml | 9 - .../scanprofile-rke2-cis-1.5-hardened.yml | 9 - .../scanprofile-rke2-cis-1.5-permissive.yml | 9 - .../1.0.301/templates/scanprofileeks.yml | 9 - .../1.0.301/templates/scanprofilegke.yml | 9 - .../1.0.301/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.301/values.yaml | 45 - .../rancher-cis-benchmark/1.0.400/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.400/README.md | 9 - .../1.0.400/app-readme.md | 15 - .../1.0.400/templates/_helpers.tpl | 23 - .../1.0.400/templates/alertingrule.yaml | 14 - .../1.0.400/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.400/templates/benchmark-cis-1.6.yaml | 8 - .../1.0.400/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.400/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-k3s-cis-1.6-hardened.yaml | 8 - .../benchmark-k3s-cis-1.6-permissive.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../benchmark-rke-cis-1.6-hardened.yaml | 8 - .../benchmark-rke-cis-1.6-permissive.yaml | 8 - .../benchmark-rke2-cis-1.5-hardened.yaml | 8 - .../benchmark-rke2-cis-1.5-permissive.yaml | 8 - .../benchmark-rke2-cis-1.6-hardened.yaml | 8 - .../benchmark-rke2-cis-1.6-permissive.yaml | 8 - .../1.0.400/templates/cis-roles.yaml | 49 - .../1.0.400/templates/configmap.yaml | 17 - .../1.0.400/templates/deployment.yaml | 57 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.400/templates/rbac.yaml | 43 - .../1.0.400/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-cis-1.6.yaml | 9 - .../scanprofile-k3s-cis-1.6-hardened.yml | 9 - .../scanprofile-k3s-cis-1.6-permissive.yml | 9 - .../scanprofile-rke-1.5-hardened.yml | 9 - .../scanprofile-rke-1.5-permissive.yml | 9 - .../scanprofile-rke-1.6-hardened.yaml | 9 - .../scanprofile-rke-1.6-permissive.yaml | 9 - .../scanprofile-rke2-cis-1.5-hardened.yml | 9 - .../scanprofile-rke2-cis-1.5-permissive.yml | 9 - .../scanprofile-rke2-cis-1.6-hardened.yml | 9 - .../scanprofile-rke2-cis-1.6-permissive.yml | 9 - .../1.0.400/templates/scanprofileeks.yml | 9 - .../1.0.400/templates/scanprofilegke.yml | 9 - .../1.0.400/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.400/values.yaml | 45 - .../rancher-cis-benchmark/1.0.500/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.500/README.md | 9 - .../1.0.500/app-readme.md | 15 - .../1.0.500/templates/_helpers.tpl | 23 - .../1.0.500/templates/alertingrule.yaml | 14 - .../1.0.500/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.500/templates/benchmark-cis-1.6.yaml | 8 - .../1.0.500/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.500/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-k3s-cis-1.6-hardened.yaml | 8 - .../benchmark-k3s-cis-1.6-permissive.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../benchmark-rke-cis-1.6-hardened.yaml | 8 - .../benchmark-rke-cis-1.6-permissive.yaml | 8 - .../benchmark-rke2-cis-1.5-hardened.yaml | 8 - .../benchmark-rke2-cis-1.5-permissive.yaml | 8 - .../benchmark-rke2-cis-1.6-hardened.yaml | 8 - .../benchmark-rke2-cis-1.6-permissive.yaml | 8 - .../1.0.500/templates/cis-roles.yaml | 49 - .../1.0.500/templates/configmap.yaml | 17 - .../1.0.500/templates/deployment.yaml | 57 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.500/templates/rbac.yaml | 43 - .../1.0.500/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-cis-1.6.yaml | 9 - .../scanprofile-k3s-cis-1.6-hardened.yml | 9 - .../scanprofile-k3s-cis-1.6-permissive.yml | 9 - .../scanprofile-rke-1.5-hardened.yml | 9 - .../scanprofile-rke-1.5-permissive.yml | 9 - .../scanprofile-rke-1.6-hardened.yaml | 9 - .../scanprofile-rke-1.6-permissive.yaml | 9 - .../scanprofile-rke2-cis-1.5-hardened.yml | 9 - .../scanprofile-rke2-cis-1.5-permissive.yml | 9 - .../scanprofile-rke2-cis-1.6-hardened.yml | 9 - .../scanprofile-rke2-cis-1.6-permissive.yml | 9 - .../1.0.500/templates/scanprofileeks.yml | 9 - .../1.0.500/templates/scanprofilegke.yml | 9 - .../1.0.500/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.500/values.yaml | 45 - .../rancher-cis-benchmark/1.0.501/Chart.yaml | 18 - .../rancher-cis-benchmark/1.0.501/README.md | 9 - .../1.0.501/app-readme.md | 15 - .../1.0.501/templates/_helpers.tpl | 23 - .../1.0.501/templates/alertingrule.yaml | 14 - .../1.0.501/templates/benchmark-cis-1.5.yaml | 8 - .../1.0.501/templates/benchmark-cis-1.6.yaml | 8 - .../1.0.501/templates/benchmark-eks-1.0.yaml | 8 - .../1.0.501/templates/benchmark-gke-1.0.yaml | 8 - .../benchmark-k3s-cis-1.6-hardened.yaml | 8 - .../benchmark-k3s-cis-1.6-permissive.yaml | 8 - .../benchmark-rke-cis-1.5-hardened.yaml | 8 - .../benchmark-rke-cis-1.5-permissive.yaml | 8 - .../benchmark-rke-cis-1.6-hardened.yaml | 8 - .../benchmark-rke-cis-1.6-permissive.yaml | 8 - .../benchmark-rke2-cis-1.5-hardened.yaml | 8 - .../benchmark-rke2-cis-1.5-permissive.yaml | 8 - .../benchmark-rke2-cis-1.6-hardened.yaml | 8 - .../benchmark-rke2-cis-1.6-permissive.yaml | 8 - .../1.0.501/templates/cis-roles.yaml | 49 - .../1.0.501/templates/configmap.yaml | 17 - .../1.0.501/templates/deployment.yaml | 57 - .../templates/network_policy_allow_all.yaml | 15 - .../patch_default_serviceaccount.yaml | 20 - .../1.0.501/templates/rbac.yaml | 43 - .../1.0.501/templates/scanprofile-cis-1.5.yml | 9 - .../templates/scanprofile-cis-1.6.yaml | 9 - .../scanprofile-k3s-cis-1.6-hardened.yml | 9 - .../scanprofile-k3s-cis-1.6-permissive.yml | 9 - .../scanprofile-rke-1.5-hardened.yml | 9 - .../scanprofile-rke-1.5-permissive.yml | 9 - .../scanprofile-rke-1.6-hardened.yaml | 9 - .../scanprofile-rke-1.6-permissive.yaml | 9 - .../scanprofile-rke2-cis-1.5-hardened.yml | 9 - .../scanprofile-rke2-cis-1.5-permissive.yml | 9 - .../scanprofile-rke2-cis-1.6-hardened.yml | 9 - .../scanprofile-rke2-cis-1.6-permissive.yml | 9 - .../1.0.501/templates/scanprofileeks.yml | 9 - .../1.0.501/templates/scanprofilegke.yml | 9 - .../1.0.501/templates/serviceaccount.yaml | 14 - .../templates/validate-install-crd.yaml | 17 - .../rancher-cis-benchmark/1.0.501/values.yaml | 45 - .../1.1.100-rc1+up1.1.1-rc1/Chart.yaml | 11 - .../templates/crds.yaml | 216 - .../1.1.100-rc2+up1.1.1-rc2/Chart.yaml | 11 - .../templates/crds.yaml | 216 - .../1.1.100-rc1+up1.1.1-rc1/Chart.yaml | 18 - .../templates/NOTES.txt | 4 - .../templates/_helpers.tpl | 9 - .../templates/clusterrole.yaml | 15 - .../templates/clusterrolebinding.yaml | 13 - .../templates/deployment.yaml | 27 - .../templates/serviceaccount.yaml | 5 - .../1.1.100-rc1+up1.1.1-rc1/values.yaml | 11 - .../1.1.100-rc2+up1.1.1-rc2/Chart.yaml | 18 - .../templates/NOTES.txt | 4 - .../templates/_helpers.tpl | 9 - .../templates/clusterrole.yaml | 15 - .../templates/clusterrolebinding.yaml | 13 - .../templates/deployment.yaml | 39 - .../templates/serviceaccount.yaml | 5 - .../1.1.100-rc2+up1.1.1-rc2/values.yaml | 12 - .../0.1.400/.helmignore | 21 - .../0.1.400/Chart.yaml | 24 - .../0.1.400/README.md | 70 - .../0.1.400/app-README.md | 9 - .../0.1.400/questions.yaml | 7 - .../0.1.400/templates/NOTES.txt | 3 - .../0.1.400/templates/_helpers.tpl | 50 - .../templates/admissionregistration.yaml | 30 - .../0.1.400/templates/clusterrole.yaml | 33 - .../0.1.400/templates/clusterrolebinding.yaml | 31 - .../0.1.400/templates/deployment.yaml | 107 - .../0.1.400/templates/issuer.yaml | 52 - .../0.1.400/templates/service.yaml | 35 - .../0.1.400/templates/serviceaccount.yaml | 7 - .../0.1.400/templates/servicemonitor.yaml | 16 - .../tests/admissionregistration_test.yaml | 32 - .../0.1.400/tests/clusterrole_test.yaml | 37 - .../tests/clusterrolebinding_test.yaml | 42 - .../0.1.400/tests/deployment_test.yaml | 202 - .../0.1.400/tests/issuer_test.yaml | 106 - .../0.1.400/tests/service_test.yaml | 69 - .../0.1.400/tests/serviceaccount_test.yaml | 9 - .../0.1.400/tests/servicemonitor_test.yaml | 20 - .../0.1.400/values.yaml | 67 - .../0.1.600/.helmignore | 21 - .../0.1.600/Chart.yaml | 24 - .../0.1.600/README.md | 69 - .../0.1.600/app-README.md | 12 - .../0.1.600/questions.yaml | 26 - .../0.1.600/templates/NOTES.txt | 3 - .../0.1.600/templates/_helpers.tpl | 50 - .../templates/admissionregistration.yaml | 30 - .../0.1.600/templates/clusterrole.yaml | 33 - .../0.1.600/templates/clusterrolebinding.yaml | 31 - .../0.1.600/templates/deployment.yaml | 107 - .../0.1.600/templates/issuer.yaml | 52 - .../0.1.600/templates/service.yaml | 35 - .../0.1.600/templates/serviceaccount.yaml | 7 - .../0.1.600/templates/servicemonitor.yaml | 16 - .../tests/admissionregistration_test.yaml | 32 - .../0.1.600/tests/clusterrole_test.yaml | 37 - .../tests/clusterrolebinding_test.yaml | 42 - .../0.1.600/tests/deployment_test.yaml | 202 - .../0.1.600/tests/issuer_test.yaml | 106 - .../0.1.600/tests/service_test.yaml | 69 - .../0.1.600/tests/serviceaccount_test.yaml | 9 - .../0.1.600/tests/servicemonitor_test.yaml | 20 - .../0.1.600/values.yaml | 67 - .../0.1.601+up0.1.6/.helmignore | 21 - .../0.1.601+up0.1.6/Chart.yaml | 24 - .../0.1.601+up0.1.6/README.md | 69 - .../0.1.601+up0.1.6/app-README.md | 12 - .../0.1.601+up0.1.6/questions.yaml | 26 - .../0.1.601+up0.1.6/templates/NOTES.txt | 3 - .../0.1.601+up0.1.6/templates/_helpers.tpl | 50 - .../templates/admissionregistration.yaml | 30 - .../templates/clusterrole.yaml | 33 - .../templates/clusterrolebinding.yaml | 31 - .../0.1.601+up0.1.6/templates/deployment.yaml | 107 - .../0.1.601+up0.1.6/templates/issuer.yaml | 52 - .../0.1.601+up0.1.6/templates/service.yaml | 35 - .../templates/serviceaccount.yaml | 7 - .../templates/servicemonitor.yaml | 16 - .../tests/admissionregistration_test.yaml | 32 - .../tests/clusterrole_test.yaml | 37 - .../tests/clusterrolebinding_test.yaml | 42 - .../tests/deployment_test.yaml | 202 - .../0.1.601+up0.1.6/tests/issuer_test.yaml | 106 - .../0.1.601+up0.1.6/tests/service_test.yaml | 69 - .../tests/serviceaccount_test.yaml | 9 - .../tests/servicemonitor_test.yaml | 20 - .../0.1.601+up0.1.6/values.yaml | 67 - .../0.1.601/.helmignore | 21 - .../0.1.601/Chart.yaml | 24 - .../0.1.601/README.md | 69 - .../0.1.601/app-README.md | 12 - .../0.1.601/questions.yaml | 26 - .../0.1.601/templates/NOTES.txt | 3 - .../0.1.601/templates/_helpers.tpl | 50 - .../templates/admissionregistration.yaml | 30 - .../0.1.601/templates/clusterrole.yaml | 33 - .../0.1.601/templates/clusterrolebinding.yaml | 31 - .../0.1.601/templates/deployment.yaml | 107 - .../0.1.601/templates/issuer.yaml | 52 - .../0.1.601/templates/service.yaml | 35 - .../0.1.601/templates/serviceaccount.yaml | 7 - .../0.1.601/templates/servicemonitor.yaml | 16 - .../tests/admissionregistration_test.yaml | 32 - .../0.1.601/tests/clusterrole_test.yaml | 37 - .../tests/clusterrolebinding_test.yaml | 42 - .../0.1.601/tests/deployment_test.yaml | 202 - .../0.1.601/tests/issuer_test.yaml | 106 - .../0.1.601/tests/service_test.yaml | 69 - .../0.1.601/tests/serviceaccount_test.yaml | 9 - .../0.1.601/tests/servicemonitor_test.yaml | 20 - .../0.1.601/values.yaml | 67 - .../rancher-gatekeeper-crd/3.1.100/Chart.yaml | 11 - .../rancher-gatekeeper-crd/3.1.100/README.md | 2 - .../config-customresourcedefinition.yaml | 106 - ...intpodstatus-customresourcedefinition.yaml | 68 - ...ainttemplate-customresourcedefinition.yaml | 99 - ...atepodstatus-customresourcedefinition.yaml | 67 - .../rancher-gatekeeper-crd/3.1.101/Chart.yaml | 11 - .../rancher-gatekeeper-crd/3.1.101/README.md | 2 - .../config-customresourcedefinition.yaml | 106 - ...intpodstatus-customresourcedefinition.yaml | 68 - ...ainttemplate-customresourcedefinition.yaml | 99 - ...atepodstatus-customresourcedefinition.yaml | 67 - .../rancher-gatekeeper-crd/3.2.101/Chart.yaml | 11 - .../rancher-gatekeeper-crd/3.2.101/README.md | 2 - .../config-customresourcedefinition.yaml | 106 - ...intpodstatus-customresourcedefinition.yaml | 68 - ...ainttemplate-customresourcedefinition.yaml | 97 - ...atepodstatus-customresourcedefinition.yaml | 67 - .../3.2.101/templates/_helpers.tpl | 7 - .../3.2.101/templates/jobs.yaml | 92 - .../3.2.101/templates/manifest.yaml | 14 - .../3.2.101/templates/rbac.yaml | 72 - .../3.2.101/values.yaml | 11 - .../rancher-gatekeeper-crd/3.3.000/Chart.yaml | 10 - .../rancher-gatekeeper-crd/3.3.000/README.md | 2 - .../config-customresourcedefinition.yaml | 106 - ...intpodstatus-customresourcedefinition.yaml | 68 - ...ainttemplate-customresourcedefinition.yaml | 97 - ...atepodstatus-customresourcedefinition.yaml | 67 - .../3.3.000/templates/_helpers.tpl | 7 - .../3.3.000/templates/jobs.yaml | 92 - .../3.3.000/templates/manifest.yaml | 14 - .../3.3.000/templates/rbac.yaml | 72 - .../3.3.000/values.yaml | 11 - .../3.3.1+up3.3.0/Chart.yaml | 10 - .../3.3.1+up3.3.0/README.md | 2 - .../config-customresourcedefinition.yaml | 106 - ...intpodstatus-customresourcedefinition.yaml | 68 - ...ainttemplate-customresourcedefinition.yaml | 97 - ...atepodstatus-customresourcedefinition.yaml | 67 - .../3.3.1+up3.3.0/templates/_helpers.tpl | 7 - .../3.3.1+up3.3.0/templates/jobs.yaml | 92 - .../3.3.1+up3.3.0/templates/manifest.yaml | 14 - .../3.3.1+up3.3.0/templates/rbac.yaml | 72 - .../3.3.1+up3.3.0/values.yaml | 11 - .../rancher-gatekeeper/3.1.100/.helmignore | 21 - .../rancher-gatekeeper/3.1.100/CHANGELOG.md | 15 - .../rancher-gatekeeper/3.1.100/Chart.yaml | 21 - .../rancher-gatekeeper/3.1.100/README.md | 33 - .../3.1.100/templates/_helpers.tpl | 52 - .../3.1.100/templates/allowedrepos.yaml | 35 - .../gatekeeper-admin-serviceaccount.yaml | 11 - .../gatekeeper-audit-deployment.yaml | 96 - ...ekeeper-controller-manager-deployment.yaml | 117 - .../gatekeeper-manager-role-clusterrole.yaml | 125 - .../gatekeeper-manager-role-role.yaml | 32 - ...anager-rolebinding-clusterrolebinding.yaml | 18 - ...eeper-manager-rolebinding-rolebinding.yaml | 19 - ...ration-validatingwebhookconfiguration.yaml | 58 - ...gatekeeper-webhook-server-cert-secret.yaml | 11 - .../gatekeeper-webhook-service-service.yaml | 23 - .../3.1.100/templates/requiredlabels.yaml | 57 - .../templates/validate-install-crd.yaml | 17 - .../rancher-gatekeeper/3.1.100/values.yaml | 31 - .../rancher-gatekeeper/3.1.101/.helmignore | 21 - .../rancher-gatekeeper/3.1.101/CHANGELOG.md | 15 - .../rancher-gatekeeper/3.1.101/Chart.yaml | 22 - .../rancher-gatekeeper/3.1.101/README.md | 33 - .../rancher-gatekeeper/3.1.101/app-readme.md | 14 - .../3.1.101/templates/_helpers.tpl | 52 - .../3.1.101/templates/allowedrepos.yaml | 35 - .../gatekeeper-admin-serviceaccount.yaml | 11 - .../gatekeeper-audit-deployment.yaml | 96 - ...ekeeper-controller-manager-deployment.yaml | 117 - .../gatekeeper-manager-role-clusterrole.yaml | 125 - .../gatekeeper-manager-role-role.yaml | 32 - ...anager-rolebinding-clusterrolebinding.yaml | 18 - ...eeper-manager-rolebinding-rolebinding.yaml | 19 - ...ration-validatingwebhookconfiguration.yaml | 58 - ...gatekeeper-webhook-server-cert-secret.yaml | 11 - .../gatekeeper-webhook-service-service.yaml | 23 - .../3.1.101/templates/requiredlabels.yaml | 57 - .../templates/validate-install-crd.yaml | 17 - .../rancher-gatekeeper/3.1.101/values.yaml | 31 - .../rancher-gatekeeper/3.2.101/.helmignore | 21 - .../rancher-gatekeeper/3.2.101/CHANGELOG.md | 15 - .../rancher-gatekeeper/3.2.101/Chart.yaml | 23 - .../rancher-gatekeeper/3.2.101/README.md | 33 - .../rancher-gatekeeper/3.2.101/app-readme.md | 14 - .../3.2.101/templates/_helpers.tpl | 52 - .../3.2.101/templates/allowedrepos.yaml | 35 - .../gatekeeper-admin-podsecuritypolicy.yaml | 35 - .../gatekeeper-admin-serviceaccount.yaml | 11 - .../gatekeeper-audit-deployment.yaml | 96 - ...ekeeper-controller-manager-deployment.yaml | 117 - .../gatekeeper-manager-role-clusterrole.yaml | 127 - .../gatekeeper-manager-role-role.yaml | 32 - ...anager-rolebinding-clusterrolebinding.yaml | 18 - ...eeper-manager-rolebinding-rolebinding.yaml | 19 - ...ration-validatingwebhookconfiguration.yaml | 58 - ...gatekeeper-webhook-server-cert-secret.yaml | 11 - .../gatekeeper-webhook-service-service.yaml | 23 - .../3.2.101/templates/requiredlabels.yaml | 57 - .../templates/validate-install-crd.yaml | 17 - .../rancher-gatekeeper/3.2.101/values.yaml | 40 - .../rancher-gatekeeper/3.3.000/.helmignore | 21 - .../rancher-gatekeeper/3.3.000/CHANGELOG.md | 15 - .../rancher-gatekeeper/3.3.000/Chart.yaml | 22 - .../rancher-gatekeeper/3.3.000/README.md | 39 - .../rancher-gatekeeper/3.3.000/app-readme.md | 14 - .../3.3.000/templates/_helpers.tpl | 52 - .../3.3.000/templates/allowedrepos.yaml | 35 - .../gatekeeper-admin-podsecuritypolicy.yaml | 35 - .../gatekeeper-admin-serviceaccount.yaml | 11 - .../gatekeeper-audit-deployment.yaml | 103 - ...ekeeper-controller-manager-deployment.yaml | 124 - .../gatekeeper-manager-role-clusterrole.yaml | 139 - .../gatekeeper-manager-role-role.yaml | 32 - ...anager-rolebinding-clusterrolebinding.yaml | 18 - ...eeper-manager-rolebinding-rolebinding.yaml | 19 - ...ration-validatingwebhookconfiguration.yaml | 61 - ...gatekeeper-webhook-server-cert-secret.yaml | 13 - .../gatekeeper-webhook-service-service.yaml | 23 - .../3.3.000/templates/requiredlabels.yaml | 57 - .../templates/validate-install-crd.yaml | 17 - .../rancher-gatekeeper/3.3.000/values.yaml | 60 - .../3.3.1+up3.3.0/.helmignore | 21 - .../3.3.1+up3.3.0/CHANGELOG.md | 15 - .../3.3.1+up3.3.0/Chart.yaml | 22 - .../3.3.1+up3.3.0/README.md | 39 - .../3.3.1+up3.3.0/app-readme.md | 14 - .../3.3.1+up3.3.0/templates/_helpers.tpl | 52 - .../3.3.1+up3.3.0/templates/allowedrepos.yaml | 35 - .../gatekeeper-admin-podsecuritypolicy.yaml | 35 - .../gatekeeper-admin-serviceaccount.yaml | 11 - .../gatekeeper-audit-deployment.yaml | 103 - ...ekeeper-controller-manager-deployment.yaml | 124 - .../gatekeeper-manager-role-clusterrole.yaml | 139 - .../gatekeeper-manager-role-role.yaml | 32 - ...anager-rolebinding-clusterrolebinding.yaml | 18 - ...eeper-manager-rolebinding-rolebinding.yaml | 19 - ...ration-validatingwebhookconfiguration.yaml | 61 - ...gatekeeper-webhook-server-cert-secret.yaml | 13 - .../gatekeeper-webhook-service-service.yaml | 23 - .../templates/requiredlabels.yaml | 57 - .../templates/validate-install-crd.yaml | 17 - .../3.3.1+up3.3.0/values.yaml | 60 - .../1.1.100-rc2+up1.1.1-rc2/Chart.yaml | 11 - .../templates/crds.yaml | 243 - .../1.1.100-rc2+up1.1.1-rc2/Chart.yaml | 18 - .../templates/NOTES.txt | 4 - .../templates/_helpers.tpl | 9 - .../templates/clusterrole.yaml | 15 - .../templates/clusterrolebinding.yaml | 13 - .../templates/deployment.yaml | 39 - .../templates/serviceaccount.yaml | 5 - .../1.1.100-rc2+up1.1.1-rc2/values.yaml | 12 - .../6.6.401+up6.6.4/.helmignore | 23 - .../6.6.401+up6.6.4/Chart.yaml | 28 - .../rancher-grafana/6.6.401+up6.6.4/README.md | 514 -- .../dashboards/custom-dashboard.json | 1 - .../6.6.401+up6.6.4/templates/NOTES.txt | 54 - .../6.6.401+up6.6.4/templates/_helpers.tpl | 145 - .../6.6.401+up6.6.4/templates/_pod.tpl | 496 -- .../templates/clusterrole.yaml | 25 - .../templates/clusterrolebinding.yaml | 24 - .../configmap-dashboard-provider.yaml | 29 - .../6.6.401+up6.6.4/templates/configmap.yaml | 80 - .../templates/dashboards-json-configmap.yaml | 35 - .../6.6.401+up6.6.4/templates/deployment.yaml | 48 - .../templates/headless-service.yaml | 18 - .../templates/image-renderer-deployment.yaml | 117 - .../image-renderer-network-policy.yaml | 76 - .../templates/image-renderer-service.yaml | 28 - .../6.6.401+up6.6.4/templates/ingress.yaml | 80 - .../templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../templates/podsecuritypolicy.yaml | 49 - .../6.6.401+up6.6.4/templates/pvc.yaml | 33 - .../6.6.401+up6.6.4/templates/role.yaml | 32 - .../templates/rolebinding.yaml | 25 - .../6.6.401+up6.6.4/templates/secret-env.yaml | 14 - .../6.6.401+up6.6.4/templates/secret.yaml | 22 - .../6.6.401+up6.6.4/templates/service.yaml | 50 - .../templates/serviceaccount.yaml | 13 - .../templates/servicemonitor.yaml | 40 - .../templates/statefulset.yaml | 52 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 30 - .../templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../6.6.401+up6.6.4/templates/tests/test.yaml | 48 - .../6.6.401+up6.6.4/values.yaml | 732 -- .../6.6.402+up6.6.4/.helmignore | 23 - .../6.6.402+up6.6.4/Chart.yaml | 28 - .../rancher-grafana/6.6.402+up6.6.4/README.md | 514 -- .../dashboards/custom-dashboard.json | 1 - .../6.6.402+up6.6.4/templates/NOTES.txt | 54 - .../6.6.402+up6.6.4/templates/_helpers.tpl | 145 - .../6.6.402+up6.6.4/templates/_pod.tpl | 496 -- .../templates/clusterrole.yaml | 25 - .../templates/clusterrolebinding.yaml | 24 - .../configmap-dashboard-provider.yaml | 29 - .../6.6.402+up6.6.4/templates/configmap.yaml | 80 - .../templates/dashboards-json-configmap.yaml | 35 - .../6.6.402+up6.6.4/templates/deployment.yaml | 48 - .../templates/headless-service.yaml | 18 - .../templates/image-renderer-deployment.yaml | 117 - .../image-renderer-network-policy.yaml | 76 - .../templates/image-renderer-service.yaml | 28 - .../6.6.402+up6.6.4/templates/ingress.yaml | 80 - .../templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../templates/podsecuritypolicy.yaml | 49 - .../6.6.402+up6.6.4/templates/pvc.yaml | 35 - .../6.6.402+up6.6.4/templates/role.yaml | 32 - .../templates/rolebinding.yaml | 25 - .../6.6.402+up6.6.4/templates/secret-env.yaml | 14 - .../6.6.402+up6.6.4/templates/secret.yaml | 22 - .../6.6.402+up6.6.4/templates/service.yaml | 50 - .../templates/serviceaccount.yaml | 13 - .../templates/servicemonitor.yaml | 40 - .../templates/statefulset.yaml | 54 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 30 - .../templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../6.6.402+up6.6.4/templates/tests/test.yaml | 48 - .../6.6.402+up6.6.4/values.yaml | 732 -- .../rancher-istio/1.8.601/Chart.yaml | 21 - .../rancher-istio/1.8.601/README.md | 69 - .../rancher-istio/1.8.601/app-readme.md | 45 - .../1.8.601/charts/kiali/Chart.yaml | 31 - .../1.8.601/charts/kiali/templates/NOTES.txt | 5 - .../charts/kiali/templates/_helpers.tpl | 192 - .../charts/kiali/templates/cabundle.yaml | 13 - .../charts/kiali/templates/configmap.yaml | 24 - .../kiali/templates/dashboards/envoy.yaml | 56 - .../charts/kiali/templates/dashboards/go.yaml | 67 - .../kiali/templates/dashboards/kiali.yaml | 44 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm.yaml | 65 - .../dashboards/micrometer-1.1-jvm.yaml | 68 - .../dashboards/microprofile-1.1.yaml | 59 - .../dashboards/microprofile-x.y.yaml | 38 - .../kiali/templates/dashboards/nodejs.yaml | 59 - .../kiali/templates/dashboards/quarkus.yaml | 33 - .../dashboards/springboot-jvm-pool.yaml | 16 - .../templates/dashboards/springboot-jvm.yaml | 16 - .../dashboards/springboot-tomcat.yaml | 16 - .../kiali/templates/dashboards/thorntail.yaml | 22 - .../kiali/templates/dashboards/tomcat.yaml | 67 - .../templates/dashboards/vertx-client.yaml | 60 - .../templates/dashboards/vertx-eventbus.yaml | 59 - .../kiali/templates/dashboards/vertx-jvm.yaml | 16 - .../templates/dashboards/vertx-pool.yaml | 68 - .../templates/dashboards/vertx-server.yaml | 62 - .../charts/kiali/templates/deployment.yaml | 174 - .../1.8.601/charts/kiali/templates/hpa.yaml | 17 - .../charts/kiali/templates/ingress.yaml | 40 - .../1.8.601/charts/kiali/templates/oauth.yaml | 17 - .../1.8.601/charts/kiali/templates/psp.yaml | 67 - .../kiali/templates/role-controlplane.yaml | 15 - .../charts/kiali/templates/role-viewer.yaml | 97 - .../1.8.601/charts/kiali/templates/role.yaml | 108 - .../templates/rolebinding-controlplane.yaml | 17 - .../charts/kiali/templates/rolebinding.yaml | 20 - .../1.8.601/charts/kiali/templates/route.yaml | 30 - .../charts/kiali/templates/service.yaml | 47 - .../kiali/templates/serviceaccount.yaml | 9 - .../kiali/templates/validate-install-crd.yaml | 14 - .../kiali/templates/web-root-configmap.yaml | 12 - .../1.8.601/charts/kiali/values.yaml | 93 - .../1.8.601/charts/tracing/.helmignore | 23 - .../1.8.601/charts/tracing/Chart.yaml | 12 - .../1.8.601/charts/tracing/README.md | 5 - .../charts/tracing/templates/_affinity.tpl | 92 - .../charts/tracing/templates/_helpers.tpl | 32 - .../charts/tracing/templates/deployment.yaml | 86 - .../1.8.601/charts/tracing/templates/psp.yaml | 86 - .../1.8.601/charts/tracing/templates/pvc.yaml | 16 - .../charts/tracing/templates/service.yaml | 63 - .../1.8.601/charts/tracing/values.yaml | 44 - .../1.8.601/configs/istio-base.yaml | 89 - .../rancher-istio/1.8.601/requirements.yaml | 7 - .../1.8.601/samples/overlay-example.yaml | 37 - .../1.8.601/templates/_helpers.tpl | 12 - .../1.8.601/templates/admin-role.yaml | 43 - .../1.8.601/templates/base-config-map.yaml | 7 - .../1.8.601/templates/clusterrole.yaml | 120 - .../1.8.601/templates/clusterrolebinding.yaml | 12 - .../1.8.601/templates/edit-role.yaml | 43 - .../1.8.601/templates/istio-cni-psp.yaml | 51 - .../1.8.601/templates/istio-install-job.yaml | 50 - .../1.8.601/templates/istio-install-psp.yaml | 30 - .../1.8.601/templates/istio-psp.yaml | 81 - .../templates/istio-uninstall-job.yaml | 45 - .../1.8.601/templates/overlay-config-map.yaml | 9 - .../1.8.601/templates/service-monitors.yaml | 51 - .../1.8.601/templates/serviceaccount.yaml | 5 - .../1.8.601/templates/view-role.yaml | 41 - .../rancher-istio/1.8.601/values.yaml | 95 - .../rancher-istio/1.9.501/Chart.yaml | 21 - .../rancher-istio/1.9.501/README.md | 69 - .../rancher-istio/1.9.501/app-readme.md | 45 - .../1.9.501/charts/kiali/Chart.yaml | 31 - .../1.9.501/charts/kiali/templates/NOTES.txt | 5 - .../charts/kiali/templates/_helpers.tpl | 192 - .../charts/kiali/templates/cabundle.yaml | 13 - .../charts/kiali/templates/configmap.yaml | 24 - .../kiali/templates/dashboards/envoy.yaml | 56 - .../charts/kiali/templates/dashboards/go.yaml | 67 - .../kiali/templates/dashboards/kiali.yaml | 44 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm.yaml | 65 - .../dashboards/micrometer-1.1-jvm.yaml | 68 - .../dashboards/microprofile-1.1.yaml | 59 - .../dashboards/microprofile-x.y.yaml | 38 - .../kiali/templates/dashboards/nodejs.yaml | 59 - .../kiali/templates/dashboards/quarkus.yaml | 33 - .../dashboards/springboot-jvm-pool.yaml | 16 - .../templates/dashboards/springboot-jvm.yaml | 16 - .../dashboards/springboot-tomcat.yaml | 16 - .../kiali/templates/dashboards/thorntail.yaml | 22 - .../kiali/templates/dashboards/tomcat.yaml | 67 - .../templates/dashboards/vertx-client.yaml | 60 - .../templates/dashboards/vertx-eventbus.yaml | 59 - .../kiali/templates/dashboards/vertx-jvm.yaml | 16 - .../templates/dashboards/vertx-pool.yaml | 68 - .../templates/dashboards/vertx-server.yaml | 62 - .../charts/kiali/templates/deployment.yaml | 174 - .../1.9.501/charts/kiali/templates/hpa.yaml | 17 - .../charts/kiali/templates/ingress.yaml | 40 - .../1.9.501/charts/kiali/templates/oauth.yaml | 17 - .../1.9.501/charts/kiali/templates/psp.yaml | 67 - .../kiali/templates/role-controlplane.yaml | 15 - .../charts/kiali/templates/role-viewer.yaml | 97 - .../1.9.501/charts/kiali/templates/role.yaml | 108 - .../templates/rolebinding-controlplane.yaml | 17 - .../charts/kiali/templates/rolebinding.yaml | 20 - .../1.9.501/charts/kiali/templates/route.yaml | 30 - .../charts/kiali/templates/service.yaml | 47 - .../kiali/templates/serviceaccount.yaml | 9 - .../kiali/templates/validate-install-crd.yaml | 14 - .../kiali/templates/web-root-configmap.yaml | 12 - .../1.9.501/charts/kiali/values.yaml | 93 - .../1.9.501/charts/tracing/.helmignore | 23 - .../1.9.501/charts/tracing/Chart.yaml | 12 - .../1.9.501/charts/tracing/README.md | 5 - .../charts/tracing/templates/_affinity.tpl | 92 - .../charts/tracing/templates/_helpers.tpl | 32 - .../charts/tracing/templates/deployment.yaml | 86 - .../1.9.501/charts/tracing/templates/psp.yaml | 86 - .../1.9.501/charts/tracing/templates/pvc.yaml | 16 - .../charts/tracing/templates/service.yaml | 63 - .../1.9.501/charts/tracing/values.yaml | 44 - .../1.9.501/configs/istio-base.yaml | 82 - .../rancher-istio/1.9.501/requirements.yaml | 7 - .../1.9.501/samples/overlay-example.yaml | 37 - .../1.9.501/templates/_helpers.tpl | 12 - .../1.9.501/templates/admin-role.yaml | 43 - .../1.9.501/templates/base-config-map.yaml | 7 - .../1.9.501/templates/clusterrole.yaml | 120 - .../1.9.501/templates/clusterrolebinding.yaml | 12 - .../1.9.501/templates/edit-role.yaml | 43 - .../1.9.501/templates/istio-cni-psp.yaml | 51 - .../1.9.501/templates/istio-install-job.yaml | 50 - .../1.9.501/templates/istio-install-psp.yaml | 30 - .../1.9.501/templates/istio-psp.yaml | 81 - .../templates/istio-uninstall-job.yaml | 45 - .../1.9.501/templates/overlay-config-map.yaml | 9 - .../1.9.501/templates/service-monitors.yaml | 51 - .../1.9.501/templates/serviceaccount.yaml | 5 - .../1.9.501/templates/view-role.yaml | 41 - .../rancher-istio/1.9.501/values.yaml | 85 - .../rancher-istio/1.7.100/Chart.yaml | 19 - .../rancher-istio/1.7.100/README.md | 28 - .../charts/rancher-kiali-server/Chart.yaml | 31 - .../rancher-kiali-server/templates/NOTES.txt | 5 - .../templates/_helpers.tpl | 176 - .../templates/cabundle.yaml | 13 - .../templates/configmap.yaml | 24 - .../templates/dashboards/envoy.yaml | 55 - .../templates/dashboards/go.yaml | 66 - .../templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../templates/deployment.yaml | 165 - .../templates/ingess.yaml | 40 - .../rancher-kiali-server/templates/oauth.yaml | 17 - .../templates/role-viewer.yaml | 101 - .../rancher-kiali-server/templates/role.yaml | 118 - .../templates/rolebinding.yaml | 20 - .../rancher-kiali-server/templates/route.yaml | 30 - .../templates/service.yaml | 40 - .../templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../charts/rancher-kiali-server/values.yaml | 79 - .../1.7.100/configs/istio-base.yaml | 99 - .../rancher-istio/1.7.100/requirements.lock | 6 - .../rancher-istio/1.7.100/requirements.yaml | 7 - .../1.7.100/samples/overlay-example.yaml | 37 - .../1.7.100/templates/_helpers.tpl | 12 - .../1.7.100/templates/admin-role.yaml | 43 - .../1.7.100/templates/base-config-map.yaml | 7 - .../1.7.100/templates/clusterrole.yaml | 112 - .../1.7.100/templates/clusterrolebinding.yaml | 12 - .../1.7.100/templates/edit-role.yaml | 43 - .../1.7.100/templates/istio-install-job.yaml | 45 - .../templates/istio-uninstall-job.yaml | 42 - .../1.7.100/templates/overlay-config-map.yaml | 9 - .../1.7.100/templates/service-monitors.yaml | 51 - .../1.7.100/templates/serviceaccount.yaml | 5 - .../1.7.100/templates/view-role.yaml | 41 - .../rancher-istio/1.7.100/values.yaml | 95 - .../rancher-istio/1.7.300/Chart.yaml | 19 - .../rancher-istio/1.7.300/README.md | 36 - .../rancher-istio/1.7.300/app-readme.md | 30 - .../charts/rancher-kiali-server/Chart.yaml | 31 - .../rancher-kiali-server/templates/NOTES.txt | 5 - .../templates/_helpers.tpl | 176 - .../templates/cabundle.yaml | 13 - .../templates/configmap.yaml | 24 - .../templates/dashboards/envoy.yaml | 55 - .../templates/dashboards/go.yaml | 66 - .../templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../templates/deployment.yaml | 165 - .../templates/ingess.yaml | 40 - .../rancher-kiali-server/templates/oauth.yaml | 17 - .../templates/role-viewer.yaml | 101 - .../rancher-kiali-server/templates/role.yaml | 118 - .../templates/rolebinding.yaml | 20 - .../rancher-kiali-server/templates/route.yaml | 30 - .../templates/service.yaml | 40 - .../templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../charts/rancher-kiali-server/values.yaml | 79 - .../1.7.300/configs/istio-base.yaml | 99 - .../rancher-istio/1.7.300/requirements.lock | 6 - .../rancher-istio/1.7.300/requirements.yaml | 7 - .../1.7.300/samples/overlay-example.yaml | 37 - .../1.7.300/templates/_helpers.tpl | 12 - .../1.7.300/templates/admin-role.yaml | 43 - .../1.7.300/templates/base-config-map.yaml | 7 - .../1.7.300/templates/clusterrole.yaml | 112 - .../1.7.300/templates/clusterrolebinding.yaml | 12 - .../1.7.300/templates/edit-role.yaml | 43 - .../1.7.300/templates/istio-install-job.yaml | 45 - .../templates/istio-uninstall-job.yaml | 42 - .../1.7.300/templates/overlay-config-map.yaml | 9 - .../1.7.300/templates/service-monitors.yaml | 51 - .../1.7.300/templates/serviceaccount.yaml | 5 - .../1.7.300/templates/view-role.yaml | 41 - .../rancher-istio/1.7.300/values.yaml | 96 - .../rancher-istio/1.7.301/Chart.yaml | 19 - .../rancher-istio/1.7.301/README.md | 46 - .../rancher-istio/1.7.301/app-readme.md | 31 - .../charts/rancher-kiali-server/Chart.yaml | 31 - .../rancher-kiali-server/templates/NOTES.txt | 5 - .../templates/_helpers.tpl | 176 - .../templates/cabundle.yaml | 13 - .../templates/configmap.yaml | 24 - .../templates/dashboards/envoy.yaml | 55 - .../templates/dashboards/go.yaml | 66 - .../templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../templates/deployment.yaml | 165 - .../templates/ingess.yaml | 40 - .../rancher-kiali-server/templates/oauth.yaml | 17 - .../templates/role-viewer.yaml | 101 - .../rancher-kiali-server/templates/role.yaml | 118 - .../templates/rolebinding.yaml | 20 - .../rancher-kiali-server/templates/route.yaml | 30 - .../templates/service.yaml | 40 - .../templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../charts/rancher-kiali-server/values.yaml | 79 - .../charts/rancher-tracing/.helmignore | 23 - .../1.7.301/charts/rancher-tracing/Chart.yaml | 12 - .../1.7.301/charts/rancher-tracing/README.md | 5 - .../rancher-tracing/templates/_affinity.tpl | 92 - .../rancher-tracing/templates/_helpers.tpl | 32 - .../rancher-tracing/templates/deployment.yaml | 80 - .../charts/rancher-tracing/templates/pvc.yaml | 16 - .../rancher-tracing/templates/service.yaml | 63 - .../charts/rancher-tracing/values.yaml | 42 - .../1.7.301/configs/istio-base.yaml | 102 - .../rancher-istio/1.7.301/requirements.lock | 9 - .../rancher-istio/1.7.301/requirements.yaml | 13 - .../1.7.301/samples/overlay-example.yaml | 37 - .../1.7.301/templates/_helpers.tpl | 12 - .../1.7.301/templates/admin-role.yaml | 43 - .../1.7.301/templates/base-config-map.yaml | 7 - .../1.7.301/templates/clusterrole.yaml | 112 - .../1.7.301/templates/clusterrolebinding.yaml | 12 - .../1.7.301/templates/edit-role.yaml | 43 - .../1.7.301/templates/istio-install-job.yaml | 45 - .../templates/istio-uninstall-job.yaml | 42 - .../1.7.301/templates/overlay-config-map.yaml | 9 - .../1.7.301/templates/service-monitors.yaml | 51 - .../1.7.301/templates/serviceaccount.yaml | 5 - .../1.7.301/templates/view-role.yaml | 41 - .../rancher-istio/1.7.301/values.yaml | 106 - .../rancher-istio/1.8.300/Chart.yaml | 21 - .../rancher-istio/1.8.300/README.md | 69 - .../rancher-istio/1.8.300/app-readme.md | 45 - .../1.8.300/charts/kiali/Chart.yaml | 31 - .../1.8.300/charts/kiali/templates/NOTES.txt | 5 - .../charts/kiali/templates/_helpers.tpl | 192 - .../charts/kiali/templates/cabundle.yaml | 13 - .../charts/kiali/templates/configmap.yaml | 24 - .../kiali/templates/dashboards/envoy.yaml | 55 - .../charts/kiali/templates/dashboards/go.yaml | 66 - .../kiali/templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../kiali/templates/dashboards/nodejs.yaml | 58 - .../kiali/templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../kiali/templates/dashboards/thorntail.yaml | 21 - .../kiali/templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../kiali/templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../charts/kiali/templates/deployment.yaml | 174 - .../1.8.300/charts/kiali/templates/hpa.yaml | 17 - .../charts/kiali/templates/ingress.yaml | 40 - .../1.8.300/charts/kiali/templates/oauth.yaml | 17 - .../kiali/templates/role-controlplane.yaml | 15 - .../charts/kiali/templates/role-viewer.yaml | 96 - .../1.8.300/charts/kiali/templates/role.yaml | 107 - .../templates/rolebinding-controlplane.yaml | 17 - .../charts/kiali/templates/rolebinding.yaml | 20 - .../1.8.300/charts/kiali/templates/route.yaml | 30 - .../charts/kiali/templates/service.yaml | 40 - .../kiali/templates/serviceaccount.yaml | 9 - .../kiali/templates/validate-install-crd.yaml | 14 - .../kiali/templates/web-root-configmap.yaml | 12 - .../1.8.300/charts/kiali/values.yaml | 91 - .../1.8.300/charts/tracing/.helmignore | 23 - .../1.8.300/charts/tracing/Chart.yaml | 12 - .../1.8.300/charts/tracing/README.md | 5 - .../charts/tracing/templates/_affinity.tpl | 92 - .../charts/tracing/templates/_helpers.tpl | 32 - .../charts/tracing/templates/deployment.yaml | 80 - .../1.8.300/charts/tracing/templates/pvc.yaml | 16 - .../charts/tracing/templates/service.yaml | 63 - .../1.8.300/charts/tracing/values.yaml | 42 - .../1.8.300/configs/istio-base.yaml | 85 - .../rancher-istio/1.8.300/requirements.yaml | 17 - .../1.8.300/samples/overlay-example.yaml | 37 - .../1.8.300/templates/_helpers.tpl | 12 - .../1.8.300/templates/admin-role.yaml | 43 - .../1.8.300/templates/base-config-map.yaml | 7 - .../1.8.300/templates/clusterrole.yaml | 112 - .../1.8.300/templates/clusterrolebinding.yaml | 12 - .../1.8.300/templates/edit-role.yaml | 43 - .../1.8.300/templates/istio-install-job.yaml | 45 - .../templates/istio-uninstall-job.yaml | 42 - .../1.8.300/templates/overlay-config-map.yaml | 9 - .../1.8.300/templates/service-monitors.yaml | 51 - .../1.8.300/templates/serviceaccount.yaml | 5 - .../1.8.300/templates/view-role.yaml | 41 - .../rancher-istio/1.8.300/values.yaml | 92 - .../1.23.001/Chart.yaml | 7 - .../1.23.001/README.md | 2 - .../1.23.001/templates/crds.yaml | 18 - .../1.24.001/Chart.yaml | 7 - .../1.24.001/README.md | 2 - .../1.24.001/templates/crds.yaml | 18 - .../1.24.003/Chart.yaml | 7 - .../1.24.003/README.md | 2 - .../1.24.003/templates/crds.yaml | 18 - .../1.29.000/Chart.yaml | 7 - .../1.29.000/README.md | 2 - .../1.29.000/templates/crds.yaml | 18 - .../1.32.100+up1.32.0/Chart.yaml | 7 - .../1.32.100+up1.32.0/README.md | 2 - .../1.32.100+up1.32.0/templates/crds.yaml | 22 - .../rancher-kiali-server/1.23.001/Chart.yaml | 31 - .../1.23.001/templates/NOTES.txt | 5 - .../1.23.001/templates/_helpers.tpl | 176 - .../1.23.001/templates/cabundle.yaml | 13 - .../1.23.001/templates/configmap.yaml | 24 - .../1.23.001/templates/dashboards/envoy.yaml | 55 - .../1.23.001/templates/dashboards/go.yaml | 66 - .../1.23.001/templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../1.23.001/templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../1.23.001/templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../1.23.001/templates/deployment.yaml | 165 - .../1.23.001/templates/ingess.yaml | 40 - .../1.23.001/templates/oauth.yaml | 17 - .../1.23.001/templates/role-viewer.yaml | 101 - .../1.23.001/templates/role.yaml | 118 - .../1.23.001/templates/rolebinding.yaml | 20 - .../1.23.001/templates/route.yaml | 30 - .../1.23.001/templates/service.yaml | 40 - .../1.23.001/templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../rancher-kiali-server/1.23.001/values.yaml | 79 - .../rancher-kiali-server/1.24.001/Chart.yaml | 31 - .../1.24.001/templates/NOTES.txt | 5 - .../1.24.001/templates/_helpers.tpl | 176 - .../1.24.001/templates/cabundle.yaml | 13 - .../1.24.001/templates/configmap.yaml | 24 - .../1.24.001/templates/dashboards/envoy.yaml | 55 - .../1.24.001/templates/dashboards/go.yaml | 66 - .../1.24.001/templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../1.24.001/templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../1.24.001/templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../1.24.001/templates/deployment.yaml | 165 - .../1.24.001/templates/ingess.yaml | 40 - .../1.24.001/templates/oauth.yaml | 17 - .../1.24.001/templates/role-viewer.yaml | 101 - .../1.24.001/templates/role.yaml | 118 - .../1.24.001/templates/rolebinding.yaml | 20 - .../1.24.001/templates/route.yaml | 30 - .../1.24.001/templates/service.yaml | 40 - .../1.24.001/templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../rancher-kiali-server/1.24.001/values.yaml | 79 - .../rancher-kiali-server/1.24.003/Chart.yaml | 31 - .../1.24.003/templates/NOTES.txt | 5 - .../1.24.003/templates/_helpers.tpl | 176 - .../1.24.003/templates/cabundle.yaml | 13 - .../1.24.003/templates/configmap.yaml | 24 - .../1.24.003/templates/dashboards/envoy.yaml | 55 - .../1.24.003/templates/dashboards/go.yaml | 66 - .../1.24.003/templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../1.24.003/templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../1.24.003/templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../1.24.003/templates/deployment.yaml | 165 - .../1.24.003/templates/ingess.yaml | 40 - .../1.24.003/templates/oauth.yaml | 17 - .../1.24.003/templates/role-viewer.yaml | 101 - .../1.24.003/templates/role.yaml | 118 - .../1.24.003/templates/rolebinding.yaml | 20 - .../1.24.003/templates/route.yaml | 30 - .../1.24.003/templates/service.yaml | 40 - .../1.24.003/templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../rancher-kiali-server/1.24.003/values.yaml | 79 - .../rancher-kiali-server/1.29.000/Chart.yaml | 31 - .../1.29.000/templates/NOTES.txt | 5 - .../1.29.000/templates/_helpers.tpl | 192 - .../1.29.000/templates/cabundle.yaml | 13 - .../1.29.000/templates/configmap.yaml | 24 - .../1.29.000/templates/dashboards/envoy.yaml | 55 - .../1.29.000/templates/dashboards/go.yaml | 66 - .../1.29.000/templates/dashboards/kiali.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 42 - .../dashboards/micrometer-1.0.6-jvm.yaml | 64 - .../dashboards/micrometer-1.1-jvm.yaml | 67 - .../dashboards/microprofile-1.1.yaml | 58 - .../dashboards/microprofile-x.y.yaml | 37 - .../1.29.000/templates/dashboards/nodejs.yaml | 58 - .../templates/dashboards/quarkus.yaml | 32 - .../dashboards/springboot-jvm-pool.yaml | 15 - .../templates/dashboards/springboot-jvm.yaml | 15 - .../dashboards/springboot-tomcat.yaml | 15 - .../templates/dashboards/thorntail.yaml | 21 - .../1.29.000/templates/dashboards/tomcat.yaml | 66 - .../templates/dashboards/vertx-client.yaml | 59 - .../templates/dashboards/vertx-eventbus.yaml | 58 - .../templates/dashboards/vertx-jvm.yaml | 15 - .../templates/dashboards/vertx-pool.yaml | 67 - .../templates/dashboards/vertx-server.yaml | 61 - .../1.29.000/templates/deployment.yaml | 174 - .../1.29.000/templates/hpa.yaml | 17 - .../1.29.000/templates/ingress.yaml | 40 - .../1.29.000/templates/oauth.yaml | 17 - .../1.29.000/templates/role-controlplane.yaml | 15 - .../1.29.000/templates/role-viewer.yaml | 96 - .../1.29.000/templates/role.yaml | 107 - .../templates/rolebinding-controlplane.yaml | 17 - .../1.29.000/templates/rolebinding.yaml | 20 - .../1.29.000/templates/route.yaml | 30 - .../1.29.000/templates/service.yaml | 40 - .../1.29.000/templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../rancher-kiali-server/1.29.000/values.yaml | 91 - .../1.32.100+up1.32.0/Chart.yaml | 31 - .../1.32.100+up1.32.0/templates/NOTES.txt | 5 - .../1.32.100+up1.32.0/templates/_helpers.tpl | 192 - .../1.32.100+up1.32.0/templates/cabundle.yaml | 13 - .../templates/configmap.yaml | 24 - .../templates/dashboards/envoy.yaml | 56 - .../templates/dashboards/go.yaml | 67 - .../templates/dashboards/kiali.yaml | 44 - .../dashboards/micrometer-1.0.6-jvm-pool.yaml | 43 - .../dashboards/micrometer-1.0.6-jvm.yaml | 65 - .../dashboards/micrometer-1.1-jvm.yaml | 68 - .../dashboards/microprofile-1.1.yaml | 59 - .../dashboards/microprofile-x.y.yaml | 38 - .../templates/dashboards/nodejs.yaml | 59 - .../templates/dashboards/quarkus.yaml | 33 - .../dashboards/springboot-jvm-pool.yaml | 16 - .../templates/dashboards/springboot-jvm.yaml | 16 - .../dashboards/springboot-tomcat.yaml | 16 - .../templates/dashboards/thorntail.yaml | 22 - .../templates/dashboards/tomcat.yaml | 67 - .../templates/dashboards/vertx-client.yaml | 60 - .../templates/dashboards/vertx-eventbus.yaml | 59 - .../templates/dashboards/vertx-jvm.yaml | 16 - .../templates/dashboards/vertx-pool.yaml | 68 - .../templates/dashboards/vertx-server.yaml | 62 - .../templates/deployment.yaml | 174 - .../1.32.100+up1.32.0/templates/hpa.yaml | 17 - .../1.32.100+up1.32.0/templates/ingress.yaml | 40 - .../1.32.100+up1.32.0/templates/oauth.yaml | 17 - .../1.32.100+up1.32.0/templates/psp.yaml | 67 - .../templates/role-controlplane.yaml | 15 - .../templates/role-viewer.yaml | 97 - .../1.32.100+up1.32.0/templates/role.yaml | 108 - .../templates/rolebinding-controlplane.yaml | 17 - .../templates/rolebinding.yaml | 20 - .../1.32.100+up1.32.0/templates/route.yaml | 30 - .../1.32.100+up1.32.0/templates/service.yaml | 47 - .../templates/serviceaccount.yaml | 9 - .../templates/validate-install-crd.yaml | 14 - .../templates/web-root-configmap.yaml | 12 - .../1.32.100+up1.32.0/values.yaml | 93 - .../2.13.101+up2.13.1/.helmignore | 21 - .../2.13.101+up2.13.1/Chart.yaml | 24 - .../2.13.101+up2.13.1/LICENSE | 202 - .../2.13.101+up2.13.1/OWNERS | 6 - .../2.13.101+up2.13.1/README.md | 66 - .../2.13.101+up2.13.1/templates/NOTES.txt | 10 - .../2.13.101+up2.13.1/templates/_helpers.tpl | 76 - .../templates/clusterrolebinding.yaml | 23 - .../templates/deployment.yaml | 217 - .../templates/kubeconfig-secret.yaml | 15 - .../2.13.101+up2.13.1/templates/pdb.yaml | 20 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../2.13.101+up2.13.1/templates/role.yaml | 192 - .../templates/rolebinding.yaml | 27 - .../2.13.101+up2.13.1/templates/service.yaml | 42 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 34 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../2.13.101+up2.13.1/values.yaml | 184 - .../3.10.1+up3.10.0/Chart.yaml | 10 - .../3.10.1+up3.10.0/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 763 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4731 ----------- .../logging.banzaicloud.io_flows.yaml | 759 -- .../logging.banzaicloud.io_loggings.yaml | 7472 ----------------- .../logging.banzaicloud.io_outputs.yaml | 4725 ----------- .../rancher-logging-crd/3.6.000/Chart.yaml | 10 - .../rancher-logging-crd/3.6.000/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 552 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4142 --------- .../logging.banzaicloud.io_flows.yaml | 548 -- .../logging.banzaicloud.io_loggings.yaml | 2411 ------ .../logging.banzaicloud.io_outputs.yaml | 4136 --------- .../rancher-logging-crd/3.6.001/Chart.yaml | 10 - .../rancher-logging-crd/3.6.001/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 552 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4142 --------- .../logging.banzaicloud.io_flows.yaml | 548 -- .../logging.banzaicloud.io_loggings.yaml | 2411 ------ .../logging.banzaicloud.io_outputs.yaml | 4136 --------- .../rancher-logging-crd/3.8.201/Chart.yaml | 10 - .../rancher-logging-crd/3.8.201/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 627 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4531 ---------- .../logging.banzaicloud.io_flows.yaml | 623 -- .../logging.banzaicloud.io_loggings.yaml | 2754 ------ .../logging.banzaicloud.io_outputs.yaml | 4525 ---------- .../rancher-logging-crd/3.9.000/Chart.yaml | 10 - .../rancher-logging-crd/3.9.000/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 765 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4563 ---------- .../logging.banzaicloud.io_flows.yaml | 761 -- .../logging.banzaicloud.io_loggings.yaml | 3536 -------- .../logging.banzaicloud.io_outputs.yaml | 4557 ---------- .../3.9.401+up3.10.0/Chart.yaml | 10 - .../3.9.401+up3.10.0/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 763 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4731 ----------- .../logging.banzaicloud.io_flows.yaml | 759 -- .../logging.banzaicloud.io_loggings.yaml | 7472 ----------------- .../logging.banzaicloud.io_outputs.yaml | 4725 ----------- .../3.9.401+up3.9.4/Chart.yaml | 10 - .../3.9.401+up3.9.4/README.md | 2 - .../logging.banzaicloud.io_clusterflows.yaml | 765 -- ...logging.banzaicloud.io_clusteroutputs.yaml | 4721 ----------- .../logging.banzaicloud.io_flows.yaml | 761 -- .../logging.banzaicloud.io_loggings.yaml | 7095 ---------------- .../logging.banzaicloud.io_outputs.yaml | 4715 ----------- .../3.10.1+up3.10.0/.helmignore | 22 - .../3.10.1+up3.10.0/Chart.yaml | 19 - .../rancher-logging/3.10.1+up3.10.0/README.md | 131 - .../3.10.1+up3.10.0/app-readme.md | 22 - .../3.10.1+up3.10.0/templates/NOTES.txt | 0 .../3.10.1+up3.10.0/templates/_helpers.tpl | 123 - .../templates/clusterrole.yaml | 173 - .../templates/clusterrolebinding.yaml | 18 - .../3.10.1+up3.10.0/templates/crds.yaml | 6 - .../3.10.1+up3.10.0/templates/deployment.yaml | 68 - .../templates/loggings/aks/logging.yaml | 89 - .../templates/loggings/eks/logging.yaml | 90 - .../templates/loggings/gke/logging.yaml | 89 - .../templates/loggings/k3s/configmap.yaml | 29 - .../templates/loggings/k3s/daemonset.yaml | 110 - .../loggings/k3s/logging-k3s-openrc.yaml | 93 - .../loggings/kube-audit/logging.yaml | 98 - .../templates/loggings/rke/configmap.yaml | 29 - .../templates/loggings/rke/daemonset.yaml | 122 - .../templates/loggings/rke2/configmap.yaml | 30 - .../templates/loggings/rke2/daemonset.yaml | 108 - .../templates/loggings/root/logging.yaml | 154 - .../3.10.1+up3.10.0/templates/psp.yaml | 34 - .../3.10.1+up3.10.0/templates/service.yaml | 20 - .../templates/serviceMonitor.yaml | 30 - .../templates/serviceaccount.yaml | 10 - .../3.10.1+up3.10.0/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../templates/validate-install.yaml | 5 - .../3.10.1+up3.10.0/values.yaml | 209 - .../rancher-logging/3.6.000/.helmignore | 22 - .../rancher-logging/3.6.000/Chart.yaml | 19 - .../rancher-logging/3.6.000/README.md | 129 - .../rancher-logging/3.6.000/app-readme.md | 3 - .../3.6.000/templates/NOTES.txt | 0 .../3.6.000/templates/_helpers.tpl | 66 - .../3.6.000/templates/clusterrole.yaml | 156 - .../3.6.000/templates/clusterrolebinding.yaml | 21 - .../3.6.000/templates/crds.yaml | 6 - .../3.6.000/templates/deployment.yaml | 62 - .../templates/loggings/eks/logging.yaml | 31 - .../loggings/k3s/logging-k3s-openrc.yaml | 34 - .../loggings/k3s/logging-k3s-systemd.yaml | 34 - .../loggings/rke/logging-containers-rke.yaml | 33 - .../templates/loggings/rke/logging-rke.yaml | 34 - .../templates/loggings/rke2/configmap.yaml | 18 - .../templates/loggings/rke2/daemonset.yaml | 33 - .../rke2/logging-rke2-containers.yaml | 32 - .../loggings/rke2/logging-rke2-journald.yaml | 32 - .../templates/loggings/root/logging.yaml | 25 - .../3.6.000/templates/psp.yaml | 32 - .../3.6.000/templates/service.yaml | 20 - .../3.6.000/templates/serviceMonitor.yaml | 19 - .../3.6.000/templates/serviceaccount.yaml | 13 - .../3.6.000/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../rancher-logging/3.6.000/values.yaml | 118 - .../rancher-logging/3.6.001/.helmignore | 22 - .../rancher-logging/3.6.001/Chart.yaml | 20 - .../rancher-logging/3.6.001/README.md | 129 - .../rancher-logging/3.6.001/app-readme.md | 21 - .../3.6.001/templates/NOTES.txt | 0 .../3.6.001/templates/_helpers.tpl | 66 - .../3.6.001/templates/clusterrole.yaml | 156 - .../3.6.001/templates/clusterrolebinding.yaml | 21 - .../3.6.001/templates/crds.yaml | 6 - .../3.6.001/templates/deployment.yaml | 62 - .../templates/loggings/eks/logging.yaml | 44 - .../loggings/k3s/logging-k3s-openrc.yaml | 47 - .../loggings/k3s/logging-k3s-systemd.yaml | 47 - .../templates/loggings/rke/configmap.yaml | 26 - .../templates/loggings/rke/daemonset.yaml | 52 - .../templates/loggings/rke/logging-rke.yaml | 48 - .../templates/loggings/rke2/configmap.yaml | 18 - .../templates/loggings/rke2/daemonset.yaml | 41 - .../rke2/logging-rke2-containers.yaml | 45 - .../loggings/rke2/logging-rke2-journald.yaml | 45 - .../templates/loggings/root/logging.yaml | 38 - .../3.6.001/templates/psp.yaml | 32 - .../3.6.001/templates/service.yaml | 20 - .../3.6.001/templates/serviceMonitor.yaml | 19 - .../3.6.001/templates/serviceaccount.yaml | 13 - .../3.6.001/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../rancher-logging/3.6.001/values.yaml | 129 - .../rancher-logging/3.8.201/.helmignore | 22 - .../rancher-logging/3.8.201/Chart.yaml | 20 - .../rancher-logging/3.8.201/README.md | 129 - .../rancher-logging/3.8.201/app-readme.md | 22 - .../3.8.201/templates/NOTES.txt | 0 .../3.8.201/templates/_helpers.tpl | 66 - .../3.8.201/templates/clusterrole.yaml | 161 - .../3.8.201/templates/clusterrolebinding.yaml | 21 - .../3.8.201/templates/crds.yaml | 6 - .../3.8.201/templates/deployment.yaml | 62 - .../templates/loggings/aks/logging.yaml | 39 - .../templates/loggings/eks/logging.yaml | 40 - .../templates/loggings/gke/logging.yaml | 39 - .../loggings/k3s/logging-k3s-openrc.yaml | 47 - .../loggings/k3s/logging-k3s-systemd.yaml | 47 - .../templates/loggings/rke/configmap.yaml | 26 - .../templates/loggings/rke/daemonset.yaml | 52 - .../templates/loggings/rke/logging-rke.yaml | 48 - .../templates/loggings/rke2/configmap.yaml | 18 - .../templates/loggings/rke2/daemonset.yaml | 41 - .../rke2/logging-rke2-containers.yaml | 45 - .../loggings/rke2/logging-rke2-journald.yaml | 45 - .../templates/loggings/root/logging.yaml | 38 - .../3.8.201/templates/psp.yaml | 32 - .../3.8.201/templates/service.yaml | 20 - .../3.8.201/templates/serviceMonitor.yaml | 19 - .../3.8.201/templates/serviceaccount.yaml | 13 - .../3.8.201/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../rancher-logging/3.8.201/values.yaml | 130 - .../rancher-logging/3.9.000/.helmignore | 22 - .../rancher-logging/3.9.000/Chart.yaml | 20 - .../rancher-logging/3.9.000/README.md | 129 - .../rancher-logging/3.9.000/app-readme.md | 22 - .../3.9.000/templates/NOTES.txt | 0 .../3.9.000/templates/_helpers.tpl | 66 - .../3.9.000/templates/clusterrole.yaml | 167 - .../3.9.000/templates/clusterrolebinding.yaml | 18 - .../3.9.000/templates/crds.yaml | 6 - .../3.9.000/templates/deployment.yaml | 62 - .../templates/loggings/aks/logging.yaml | 55 - .../templates/loggings/eks/logging.yaml | 56 - .../templates/loggings/gke/logging.yaml | 55 - .../loggings/k3s/logging-k3s-openrc.yaml | 65 - .../loggings/k3s/logging-k3s-systemd.yaml | 65 - .../templates/loggings/rke/configmap.yaml | 26 - .../templates/loggings/rke/daemonset.yaml | 127 - .../templates/loggings/rke/logging-rke.yaml | 70 - .../templates/loggings/rke2/configmap.yaml | 18 - .../templates/loggings/rke2/daemonset.yaml | 101 - .../rke2/logging-rke2-containers.yaml | 63 - .../loggings/rke2/logging-rke2-journald.yaml | 63 - .../templates/loggings/root/logging.yaml | 64 - .../3.9.000/templates/psp.yaml | 33 - .../3.9.000/templates/service.yaml | 20 - .../3.9.000/templates/serviceMonitor.yaml | 30 - .../3.9.000/templates/serviceaccount.yaml | 10 - .../3.9.000/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../3.9.000/templates/validate-install.yaml | 5 - .../rancher-logging/3.9.000/values.yaml | 149 - .../3.9.401+up3.9.4/.helmignore | 22 - .../3.9.401+up3.9.4/Chart.yaml | 19 - .../rancher-logging/3.9.401+up3.9.4/README.md | 131 - .../3.9.401+up3.9.4/app-readme.md | 22 - .../3.9.401+up3.9.4/templates/NOTES.txt | 0 .../3.9.401+up3.9.4/templates/_helpers.tpl | 123 - .../templates/clusterrole.yaml | 167 - .../templates/clusterrolebinding.yaml | 18 - .../3.9.401+up3.9.4/templates/crds.yaml | 6 - .../3.9.401+up3.9.4/templates/deployment.yaml | 68 - .../templates/loggings/aks/logging.yaml | 89 - .../templates/loggings/eks/logging.yaml | 90 - .../templates/loggings/gke/logging.yaml | 89 - .../templates/loggings/k3s/configmap.yaml | 29 - .../templates/loggings/k3s/daemonset.yaml | 110 - .../loggings/k3s/logging-k3s-openrc.yaml | 93 - .../loggings/k3s/logging-k3s-systemd.yaml | 93 - .../loggings/kube-audit/logging.yaml | 98 - .../templates/loggings/rke/configmap.yaml | 29 - .../templates/loggings/rke/daemonset.yaml | 122 - .../templates/loggings/rke2/configmap.yaml | 30 - .../templates/loggings/rke2/daemonset.yaml | 108 - .../rke2/logging-rke2-containers.yaml | 98 - .../templates/loggings/root/logging.yaml | 154 - .../3.9.401+up3.9.4/templates/psp.yaml | 33 - .../3.9.401+up3.9.4/templates/service.yaml | 20 - .../templates/serviceMonitor.yaml | 30 - .../templates/serviceaccount.yaml | 10 - .../3.9.401+up3.9.4/templates/userroles.yaml | 35 - .../templates/validate-install-crd.yaml | 18 - .../templates/validate-install.yaml | 5 - .../3.9.401+up3.9.4/values.yaml | 199 - .../14.5.101+up14.5.0/Chart.yaml | 10 - .../14.5.101+up14.5.0/README.md | 24 - .../crd-manifest/crd-alertmanagerconfigs.yaml | 1869 ----- .../crd-manifest/crd-alertmanagers.yaml | 3218 ------- .../crd-manifest/crd-podmonitors.yaml | 358 - .../crd-manifest/crd-probes.yaml | 202 - .../crd-manifest/crd-prometheuses.yaml | 4432 ---------- .../crd-manifest/crd-prometheusrules.yaml | 90 - .../crd-manifest/crd-servicemonitors.yaml | 375 - .../crd-manifest/crd-thanosrulers.yaml | 3342 -------- .../14.5.101+up14.5.0/templates/_helpers.tpl | 50 - .../14.5.101+up14.5.0/templates/jobs.yaml | 134 - .../14.5.101+up14.5.0/templates/manifest.yaml | 14 - .../14.5.101+up14.5.0/templates/rbac.yaml | 72 - .../14.5.101+up14.5.0/values.yaml | 11 - .../rancher-monitoring-crd/9.4.200/Chart.yaml | 10 - .../rancher-monitoring-crd/9.4.200/README.md | 2 - .../crd-manifest/crd-alertmanager.yaml | 4500 ---------- .../9.4.200/crd-manifest/crd-podmonitor.yaml | 260 - .../9.4.200/crd-manifest/crd-prometheus.yaml | 6002 ------------- .../crd-manifest/crd-prometheusrules.yaml | 91 - .../crd-manifest/crd-servicemonitor.yaml | 459 - .../crd-manifest/crd-thanosrulers.yaml | 4725 ----------- .../9.4.200/templates/_helpers.tpl | 7 - .../9.4.200/templates/jobs.yaml | 92 - .../9.4.200/templates/manifest.yaml | 14 - .../9.4.200/templates/rbac.yaml | 35 - .../9.4.200/values.yaml | 11 - .../rancher-monitoring-crd/9.4.201/Chart.yaml | 10 - .../rancher-monitoring-crd/9.4.201/README.md | 2 - .../crd-manifest/crd-alertmanager.yaml | 4500 ---------- .../9.4.201/crd-manifest/crd-podmonitor.yaml | 260 - .../9.4.201/crd-manifest/crd-prometheus.yaml | 6002 ------------- .../crd-manifest/crd-prometheusrules.yaml | 91 - .../crd-manifest/crd-servicemonitor.yaml | 459 - .../crd-manifest/crd-thanosrulers.yaml | 4725 ----------- .../9.4.201/templates/_helpers.tpl | 7 - .../9.4.201/templates/jobs.yaml | 92 - .../9.4.201/templates/manifest.yaml | 14 - .../9.4.201/templates/rbac.yaml | 35 - .../9.4.201/values.yaml | 11 - .../rancher-monitoring-crd/9.4.202/Chart.yaml | 10 - .../rancher-monitoring-crd/9.4.202/README.md | 2 - .../crd-manifest/crd-alertmanager.yaml | 4500 ---------- .../9.4.202/crd-manifest/crd-podmonitor.yaml | 260 - .../9.4.202/crd-manifest/crd-prometheus.yaml | 6002 ------------- .../crd-manifest/crd-prometheusrules.yaml | 91 - .../crd-manifest/crd-servicemonitor.yaml | 459 - .../crd-manifest/crd-thanosrulers.yaml | 4725 ----------- .../9.4.202/templates/_helpers.tpl | 7 - .../9.4.202/templates/jobs.yaml | 92 - .../9.4.202/templates/manifest.yaml | 14 - .../9.4.202/templates/rbac.yaml | 72 - .../9.4.202/values.yaml | 11 - .../rancher-monitoring-crd/9.4.203/Chart.yaml | 10 - .../rancher-monitoring-crd/9.4.203/README.md | 2 - .../crd-manifest/crd-alertmanager.yaml | 4500 ---------- .../9.4.203/crd-manifest/crd-podmonitor.yaml | 260 - .../9.4.203/crd-manifest/crd-prometheus.yaml | 6002 ------------- .../crd-manifest/crd-prometheusrules.yaml | 91 - .../crd-manifest/crd-servicemonitor.yaml | 459 - .../crd-manifest/crd-thanosrulers.yaml | 4725 ----------- .../9.4.203/templates/_helpers.tpl | 7 - .../9.4.203/templates/jobs.yaml | 92 - .../9.4.203/templates/manifest.yaml | 14 - .../9.4.203/templates/rbac.yaml | 72 - .../9.4.203/values.yaml | 11 - .../14.5.101+up14.5.0/.helmignore | 26 - .../14.5.101+up14.5.0/CHANGELOG.md | 47 - .../14.5.101+up14.5.0/CONTRIBUTING.md | 12 - .../14.5.101+up14.5.0/Chart.yaml | 115 - .../14.5.101+up14.5.0/README.md | 457 - .../14.5.101+up14.5.0/app-README.md | 15 - .../charts/grafana/.helmignore | 23 - .../charts/grafana/Chart.yaml | 28 - .../charts/grafana/README.md | 514 -- .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 54 - .../charts/grafana/templates/_helpers.tpl | 145 - .../charts/grafana/templates/_pod.tpl | 496 -- .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 24 - .../configmap-dashboard-provider.yaml | 29 - .../charts/grafana/templates/configmap.yaml | 80 - .../templates/dashboards-json-configmap.yaml | 35 - .../charts/grafana/templates/deployment.yaml | 48 - .../grafana/templates/headless-service.yaml | 18 - .../templates/image-renderer-deployment.yaml | 117 - .../image-renderer-network-policy.yaml | 76 - .../templates/image-renderer-service.yaml | 28 - .../charts/grafana/templates/ingress.yaml | 80 - .../grafana/templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 49 - .../charts/grafana/templates/pvc.yaml | 35 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 25 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 22 - .../charts/grafana/templates/service.yaml | 50 - .../grafana/templates/serviceaccount.yaml | 13 - .../grafana/templates/servicemonitor.yaml | 40 - .../charts/grafana/templates/statefulset.yaml | 54 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 30 - .../grafana/templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../charts/grafana/templates/tests/test.yaml | 48 - .../charts/grafana/values.yaml | 732 -- .../charts/hardenedKubelet/.helmignore | 23 - .../charts/hardenedKubelet/Chart.yaml | 13 - .../charts/hardenedKubelet/README.md | 60 - .../hardenedKubelet/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/hardenedKubelet/values.yaml | 111 - .../charts/hardenedNodeExporter/.helmignore | 23 - .../charts/hardenedNodeExporter/Chart.yaml | 13 - .../charts/hardenedNodeExporter/README.md | 60 - .../templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/hardenedNodeExporter/values.yaml | 111 - .../charts/k3sServer/.helmignore | 23 - .../charts/k3sServer/Chart.yaml | 13 - .../charts/k3sServer/README.md | 60 - .../charts/k3sServer/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../k3sServer/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../k3sServer/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/k3sServer/values.yaml | 111 - .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 24 - .../charts/kube-state-metrics/LICENSE | 202 - .../charts/kube-state-metrics/README.md | 66 - .../kube-state-metrics/templates/NOTES.txt | 10 - .../kube-state-metrics/templates/_helpers.tpl | 76 - .../templates/clusterrolebinding.yaml | 23 - .../templates/deployment.yaml | 217 - .../templates/kubeconfig-secret.yaml | 15 - .../kube-state-metrics/templates/pdb.yaml | 20 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../kube-state-metrics/templates/role.yaml | 192 - .../templates/rolebinding.yaml | 27 - .../kube-state-metrics/templates/service.yaml | 42 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 34 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../charts/kube-state-metrics/values.yaml | 184 - .../kubeAdmControllerManager/.helmignore | 23 - .../kubeAdmControllerManager/Chart.yaml | 13 - .../charts/kubeAdmControllerManager/README.md | 60 - .../templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../kubeAdmControllerManager/values.yaml | 111 - .../charts/kubeAdmEtcd/.helmignore | 23 - .../charts/kubeAdmEtcd/Chart.yaml | 13 - .../charts/kubeAdmEtcd/README.md | 60 - .../charts/kubeAdmEtcd/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../kubeAdmEtcd/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/kubeAdmEtcd/values.yaml | 111 - .../charts/kubeAdmProxy/.helmignore | 23 - .../charts/kubeAdmProxy/Chart.yaml | 13 - .../charts/kubeAdmProxy/README.md | 60 - .../kubeAdmProxy/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/kubeAdmProxy/values.yaml | 111 - .../charts/kubeAdmScheduler/.helmignore | 23 - .../charts/kubeAdmScheduler/Chart.yaml | 13 - .../charts/kubeAdmScheduler/README.md | 60 - .../kubeAdmScheduler/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/kubeAdmScheduler/values.yaml | 111 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 26 - .../charts/prometheus-adapter/README.md | 147 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 72 - .../templates/certmanager.yaml | 48 - .../cluster-role-binding-auth-delegator.yaml | 19 - .../cluster-role-binding-resource-reader.yaml | 19 - .../cluster-role-resource-reader.yaml | 23 - .../templates/configmap.yaml | 96 - .../templates/custom-metrics-apiservice.yaml | 32 - ...stom-metrics-cluster-role-binding-hpa.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/deployment.yaml | 135 - .../external-metrics-apiservice.yaml | 32 - ...rnal-metrics-cluster-role-binding-hpa.yaml | 19 - .../external-metrics-cluster-role.yaml | 20 - .../prometheus-adapter/templates/pdb.yaml | 22 - .../prometheus-adapter/templates/psp.yaml | 68 - .../resource-metrics-apiservice.yaml | 32 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../templates/role-binding-auth-reader.yaml | 20 - .../prometheus-adapter/templates/secret.yaml | 15 - .../prometheus-adapter/templates/service.yaml | 22 - .../templates/serviceaccount.yaml | 12 - .../charts/prometheus-adapter/values.yaml | 180 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 23 - .../charts/prometheus-node-exporter/README.md | 63 - .../templates/NOTES.txt | 15 - .../templates/_helpers.tpl | 95 - .../templates/daemonset.yaml | 183 - .../templates/endpoints.yaml | 18 - .../templates/monitor.yaml | 32 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../templates/psp.yaml | 52 - .../templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 18 - .../prometheus-node-exporter/values.yaml | 177 - .../charts/rke2ControllerManager/.helmignore | 23 - .../charts/rke2ControllerManager/Chart.yaml | 13 - .../charts/rke2ControllerManager/README.md | 60 - .../templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rke2ControllerManager/values.yaml | 111 - .../charts/rke2Etcd/.helmignore | 23 - .../charts/rke2Etcd/Chart.yaml | 13 - .../charts/rke2Etcd/README.md | 60 - .../charts/rke2Etcd/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../rke2Etcd/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rke2Etcd/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rke2Etcd/values.yaml | 111 - .../charts/rke2IngressNginx/.helmignore | 23 - .../charts/rke2IngressNginx/Chart.yaml | 13 - .../charts/rke2IngressNginx/README.md | 60 - .../rke2IngressNginx/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rke2IngressNginx/values.yaml | 111 - .../charts/rke2Proxy/.helmignore | 23 - .../charts/rke2Proxy/Chart.yaml | 13 - .../charts/rke2Proxy/README.md | 60 - .../charts/rke2Proxy/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../rke2Proxy/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rke2Proxy/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rke2Proxy/values.yaml | 111 - .../charts/rke2Scheduler/.helmignore | 23 - .../charts/rke2Scheduler/Chart.yaml | 13 - .../charts/rke2Scheduler/README.md | 60 - .../rke2Scheduler/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rke2Scheduler/values.yaml | 111 - .../charts/rkeControllerManager/.helmignore | 23 - .../charts/rkeControllerManager/Chart.yaml | 13 - .../charts/rkeControllerManager/README.md | 60 - .../templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rkeControllerManager/values.yaml | 111 - .../charts/rkeEtcd/.helmignore | 23 - .../charts/rkeEtcd/Chart.yaml | 13 - .../charts/rkeEtcd/README.md | 60 - .../charts/rkeEtcd/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../rkeEtcd/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rkeEtcd/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rkeEtcd/values.yaml | 111 - .../charts/rkeIngressNginx/.helmignore | 23 - .../charts/rkeIngressNginx/Chart.yaml | 13 - .../charts/rkeIngressNginx/README.md | 60 - .../rkeIngressNginx/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rkeIngressNginx/values.yaml | 111 - .../charts/rkeProxy/.helmignore | 23 - .../charts/rkeProxy/Chart.yaml | 13 - .../charts/rkeProxy/README.md | 60 - .../charts/rkeProxy/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../rkeProxy/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rkeProxy/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rkeProxy/values.yaml | 111 - .../charts/rkeScheduler/.helmignore | 23 - .../charts/rkeScheduler/Chart.yaml | 13 - .../charts/rkeScheduler/README.md | 60 - .../rkeScheduler/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../charts/rkeScheduler/values.yaml | 111 - .../charts/windowsExporter/.helmignore | 23 - .../charts/windowsExporter/Chart.yaml | 15 - .../charts/windowsExporter/README.md | 17 - .../scripts/check-wins-version.ps1 | 20 - .../windowsExporter/scripts/proxy-entry.ps1 | 11 - .../charts/windowsExporter/scripts/run.ps1 | 78 - .../windowsExporter/templates/_helpers.tpl | 73 - .../windowsExporter/templates/configmap.yaml | 10 - .../windowsExporter/templates/daemonset.yaml | 77 - .../windowsExporter/templates/rbac.yaml | 78 - .../windowsExporter/templates/service.yaml | 15 - .../templates/servicemonitor.yaml | 44 - .../charts/windowsExporter/values.yaml | 46 - .../files/ingress-nginx/nginx.json | 1463 ---- .../request-handling-performance.json | 981 --- .../cluster/rancher-cluster-nodes.json | 776 -- .../rancher/cluster/rancher-cluster.json | 759 -- .../rancher/home/rancher-default-home.json | 1273 --- .../files/rancher/k8s/rancher-etcd-nodes.json | 670 -- .../files/rancher/k8s/rancher-etcd.json | 652 -- .../k8s/rancher-k8s-components-nodes.json | 510 -- .../rancher/k8s/rancher-k8s-components.json | 502 -- .../rancher/nodes/rancher-node-detail.json | 789 -- .../files/rancher/nodes/rancher-node.json | 776 -- .../rancher/pods/rancher-pod-containers.json | 620 -- .../files/rancher/pods/rancher-pod.json | 620 -- .../workloads/rancher-workload-pods.json | 636 -- .../rancher/workloads/rancher-workload.json | 636 -- .../14.5.101+up14.5.0/templates/NOTES.txt | 4 - .../14.5.101+up14.5.0/templates/_helpers.tpl | 220 - .../templates/alertmanager/alertmanager.yaml | 147 - .../templates/alertmanager/cleanupSecret.yaml | 88 - .../templates/alertmanager/ingress.yaml | 65 - .../alertmanager/ingressperreplica.yaml | 62 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 21 - .../alertmanager/psp-rolebinding.yaml | 18 - .../templates/alertmanager/psp.yaml | 52 - .../templates/alertmanager/secret.yaml | 166 - .../templates/alertmanager/service.yaml | 50 - .../alertmanager/serviceaccount.yaml | 16 - .../alertmanager/servicemonitor.yaml | 42 - .../alertmanager/serviceperreplica.yaml | 46 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 33 - .../kube-api-server/servicemonitor.yaml | 36 - .../kube-controller-manager/endpoints.yaml | 20 - .../kube-controller-manager/service.yaml | 27 - .../servicemonitor.yaml | 44 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 46 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 50 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 38 - .../exporters/kube-scheduler/endpoints.yaml | 20 - .../exporters/kube-scheduler/service.yaml | 27 - .../kube-scheduler/servicemonitor.yaml | 44 - .../kube-state-metrics/serviceMonitor.yaml | 34 - .../exporters/kubelet/servicemonitor.yaml | 154 - .../node-exporter/servicemonitor.yaml | 35 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 43 - .../grafana/dashboards-1.14/apiserver.yaml | 1747 ---- .../dashboards-1.14/cluster-total.yaml | 1882 ----- .../dashboards-1.14/controller-manager.yaml | 1157 --- .../grafana/dashboards-1.14/etcd.yaml | 1118 --- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1529 ---- .../k8s-resources-cluster.yaml | 2582 ------ .../k8s-resources-namespace.yaml | 2286 ----- .../dashboards-1.14/k8s-resources-node.yaml | 978 --- .../dashboards-1.14/k8s-resources-pod.yaml | 1772 ---- .../k8s-resources-workload.yaml | 2034 ----- .../k8s-resources-workloads-namespace.yaml | 2195 ----- .../grafana/dashboards-1.14/kubelet.yaml | 2535 ------ .../dashboards-1.14/namespace-by-pod.yaml | 1464 ---- .../namespace-by-workload.yaml | 1736 ---- .../node-cluster-rsrc-use.yaml | 964 --- .../dashboards-1.14/node-rsrc-use.yaml | 991 --- .../grafana/dashboards-1.14/nodes.yaml | 997 --- .../persistentvolumesusage.yaml | 577 -- .../grafana/dashboards-1.14/pod-total.yaml | 1228 --- .../prometheus-remote-write.yaml | 1670 ---- .../grafana/dashboards-1.14/prometheus.yaml | 1227 --- .../grafana/dashboards-1.14/proxy.yaml | 1236 --- .../grafana/dashboards-1.14/scheduler.yaml | 1080 --- .../grafana/dashboards-1.14/statefulset.yaml | 928 -- .../dashboards-1.14/workload-total.yaml | 1438 ---- .../templates/grafana/dashboards/etcd.yaml | 1118 --- .../dashboards/k8s-cluster-rsrc-use.yaml | 959 --- .../grafana/dashboards/k8s-node-rsrc-use.yaml | 986 --- .../dashboards/k8s-resources-cluster.yaml | 1479 ---- .../dashboards/k8s-resources-namespace.yaml | 963 --- .../grafana/dashboards/k8s-resources-pod.yaml | 1006 --- .../dashboards/k8s-resources-workload.yaml | 936 --- .../k8s-resources-workloads-namespace.yaml | 972 --- .../templates/grafana/dashboards/nodes.yaml | 1383 --- .../dashboards/persistentvolumesusage.yaml | 573 -- .../templates/grafana/dashboards/pods.yaml | 680 -- .../grafana/dashboards/statefulset.yaml | 926 -- .../templates/grafana/namespaces.yaml | 13 - .../templates/grafana/servicemonitor.yaml | 32 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 65 - .../job-patch/job-patchWebhook.yaml | 66 - .../admission-webhooks/job-patch/psp.yaml | 54 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 15 - .../mutatingWebhookConfiguration.yaml | 41 - .../validatingWebhookConfiguration.yaml | 41 - .../prometheus-operator/certmanager.yaml | 57 - .../prometheus-operator/clusterrole.yaml | 80 - .../clusterrolebinding.yaml | 17 - .../prometheus-operator/deployment.yaml | 145 - .../prometheus-operator/psp-clusterrole.yaml | 20 - .../psp-clusterrolebinding.yaml | 17 - .../templates/prometheus-operator/psp.yaml | 51 - .../prometheus-operator/service.yaml | 55 - .../prometheus-operator/serviceaccount.yaml | 12 - .../prometheus-operator/servicemonitor.yaml | 44 - .../templates/prometheus/_rules.tpl | 38 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 40 - .../prometheus/additionalScrapeConfigs.yaml | 16 - .../templates/prometheus/clusterrole.yaml | 30 - .../prometheus/clusterrolebinding.yaml | 18 - .../templates/prometheus/ingress.yaml | 65 - .../prometheus/ingressThanosSidecar.yaml | 64 - .../prometheus/ingressperreplica.yaml | 62 - .../templates/prometheus/nginx-config.yaml | 66 - .../prometheus/podDisruptionBudget.yaml | 21 - .../templates/prometheus/podmonitors.yaml | 37 - .../templates/prometheus/prometheus.yaml | 319 - .../templates/prometheus/psp-clusterrole.yaml | 20 - .../prometheus/psp-clusterrolebinding.yaml | 18 - .../templates/prometheus/psp.yaml | 62 - .../rules-1.14/alertmanager.rules.yaml | 70 - .../templates/prometheus/rules-1.14/etcd.yaml | 181 - .../prometheus/rules-1.14/general.rules.yaml | 56 - .../prometheus/rules-1.14/k8s.rules.yaml | 117 - .../kube-apiserver-availability.rules.yaml | 160 - .../rules-1.14/kube-apiserver-slos.yaml | 95 - .../rules-1.14/kube-apiserver.rules.yaml | 358 - .../kube-prometheus-general.rules.yaml | 31 - .../kube-prometheus-node-recording.rules.yaml | 39 - .../rules-1.14/kube-scheduler.rules.yaml | 65 - .../rules-1.14/kube-state-metrics.yaml | 59 - .../prometheus/rules-1.14/kubelet.rules.yaml | 41 - .../rules-1.14/kubernetes-apps.yaml | 298 - .../rules-1.14/kubernetes-resources.yaml | 159 - .../rules-1.14/kubernetes-storage.yaml | 75 - .../kubernetes-system-apiserver.yaml | 98 - .../kubernetes-system-controller-manager.yaml | 43 - .../rules-1.14/kubernetes-system-kubelet.yaml | 188 - .../kubernetes-system-scheduler.yaml | 43 - .../rules-1.14/kubernetes-system.yaml | 55 - .../rules-1.14/node-exporter.rules.yaml | 79 - .../prometheus/rules-1.14/node-exporter.yaml | 262 - .../prometheus/rules-1.14/node-network.yaml | 37 - .../prometheus/rules-1.14/node.rules.yaml | 51 - .../rules-1.14/prometheus-operator.yaml | 113 - .../prometheus/rules-1.14/prometheus.yaml | 258 - .../prometheus/rules/alertmanager.rules.yaml | 63 - .../templates/prometheus/rules/etcd.yaml | 181 - .../prometheus/rules/general.rules.yaml | 56 - .../templates/prometheus/rules/k8s.rules.yaml | 83 - .../rules/kube-apiserver.rules.yaml | 39 - .../kube-prometheus-node-alerting.rules.yaml | 47 - .../kube-prometheus-node-recording.rules.yaml | 41 - .../rules/kube-scheduler.rules.yaml | 65 - .../prometheus/rules/kubernetes-absent.yaml | 159 - .../prometheus/rules/kubernetes-apps.yaml | 200 - .../rules/kubernetes-resources.yaml | 121 - .../prometheus/rules/kubernetes-storage.yaml | 72 - .../prometheus/rules/kubernetes-system.yaml | 184 - .../prometheus/rules/node-network.yaml | 57 - .../templates/prometheus/rules/node-time.yaml | 37 - .../prometheus/rules/node.rules.yaml | 202 - .../prometheus/rules/prometheus-operator.yaml | 49 - .../prometheus/rules/prometheus.rules.yaml | 139 - .../templates/prometheus/service.yaml | 60 - .../prometheus/serviceThanosSidecar.yaml | 30 - .../templates/prometheus/serviceaccount.yaml | 16 - .../templates/prometheus/servicemonitor.yaml | 42 - .../templates/prometheus/servicemonitors.yaml | 38 - .../prometheus/serviceperreplica.yaml | 46 - .../rancher-monitoring/clusterrole.yaml | 131 - .../rancher-monitoring/config-role.yaml | 48 - .../rancher-monitoring/dashboard-role.yaml | 47 - .../addons/ingress-nginx-dashboard.yaml | 18 - .../rancher/cluster-dashboards.yaml | 17 - .../dashboards/rancher/default-dashboard.yaml | 17 - .../dashboards/rancher/k8s-dashboards.yaml | 17 - .../dashboards/rancher/nodes-dashboards.yaml | 17 - .../dashboards/rancher/pods-dashboards.yaml | 17 - .../rancher/workload-dashboards.yaml | 17 - .../exporters/ingress-nginx/service.yaml | 27 - .../ingress-nginx/servicemonitor.yaml | 36 - .../rancher-monitoring/hardened.yaml | 124 - .../templates/validate-install-crd.yaml | 21 - .../14.5.101+up14.5.0/values.yaml | 3101 ------- .../rancher-monitoring/9.4.200/.helmignore | 26 - .../rancher-monitoring/9.4.200/CHANGELOG.md | 46 - .../9.4.200/CONTRIBUTING.md | 12 - .../rancher-monitoring/9.4.200/Chart.yaml | 42 - .../rancher-monitoring/9.4.200/README.md | 348 - .../rancher-monitoring/9.4.200/app-README.md | 16 - .../9.4.200/charts/grafana/.helmignore | 23 - .../9.4.200/charts/grafana/Chart.yaml | 17 - .../9.4.200/charts/grafana/README.md | 424 - .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 54 - .../charts/grafana/templates/_helpers.tpl | 82 - .../9.4.200/charts/grafana/templates/_pod.tpl | 447 - .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 20 - .../configmap-dashboard-provider.yaml | 25 - .../charts/grafana/templates/configmap.yaml | 69 - .../templates/dashboards-json-configmap.yaml | 35 - .../charts/grafana/templates/deployment.yaml | 47 - .../grafana/templates/headless-service.yaml | 18 - .../charts/grafana/templates/ingress.yaml | 55 - .../grafana/templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 52 - .../9.4.200/charts/grafana/templates/pvc.yaml | 28 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 21 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 22 - .../charts/grafana/templates/service.yaml | 50 - .../grafana/templates/serviceaccount.yaml | 13 - .../grafana/templates/servicemonitor.yaml | 36 - .../charts/grafana/templates/statefulset.yaml | 47 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 29 - .../grafana/templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../charts/grafana/templates/tests/test.yaml | 48 - .../9.4.200/charts/grafana/values.yaml | 552 -- .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 20 - .../charts/kube-state-metrics/README.md | 80 - .../kube-state-metrics/templates/NOTES.txt | 10 - .../kube-state-metrics/templates/_helpers.tpl | 47 - .../templates/clusterrole.yaml | 180 - .../templates/clusterrolebinding.yaml | 19 - .../templates/deployment.yaml | 192 - .../kube-state-metrics/templates/pdb.yaml | 17 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../kube-state-metrics/templates/service.yaml | 36 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 25 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../charts/kube-state-metrics/values.yaml | 156 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 20 - .../charts/prometheus-adapter/README.md | 160 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 43 - ...r-auth-delegator-cluster-role-binding.yaml | 19 - ...cs-apiserver-auth-reader-role-binding.yaml | 19 - .../custom-metrics-apiserver-deployment.yaml | 120 - ...-resource-reader-cluster-role-binding.yaml | 19 - ...tom-metrics-apiserver-service-account.yaml | 11 - .../custom-metrics-apiserver-service.yaml | 21 - .../templates/custom-metrics-apiservice.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/custom-metrics-configmap.yaml | 95 - ...-metrics-resource-reader-cluster-role.yaml | 23 - .../external-metrics-apiservice.yaml | 23 - .../external-metrics-cluster-role.yaml | 20 - ...a-custom-metrics-cluster-role-binding.yaml | 19 - ...external-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-apiservice.yaml | 23 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../prometheus-adapter/templates/secret.yaml | 15 - .../charts/prometheus-adapter/values.yaml | 145 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 16 - .../charts/prometheus-node-exporter/README.md | 63 - .../templates/NOTES.txt | 15 - .../templates/_helpers.tpl | 66 - .../templates/daemonset.yaml | 151 - .../templates/endpoints.yaml | 18 - .../templates/monitor.yaml | 25 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../templates/psp.yaml | 52 - .../templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 16 - .../prometheus-node-exporter/values.yaml | 141 - .../charts/rancher-pushprox/.helmignore | 23 - .../charts/rancher-pushprox/Chart.yaml | 13 - .../9.4.200/charts/rancher-pushprox/README.md | 54 - .../rancher-pushprox/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 134 - .../templates/pushprox-proxy.yaml | 49 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/rancher-pushprox/values.yaml | 86 - .../9.4.200/requirements.lock | 60 - .../9.4.200/requirements.yaml | 108 - .../9.4.200/templates/NOTES.txt | 4 - .../9.4.200/templates/_helpers.tpl | 127 - .../templates/alertmanager/alertmanager.yaml | 118 - .../templates/alertmanager/cleanupSecret.yaml | 86 - .../templates/alertmanager/ingress.yaml | 53 - .../alertmanager/ingressperreplica.yaml | 53 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 21 - .../alertmanager/psp-rolebinding.yaml | 18 - .../9.4.200/templates/alertmanager/psp.yaml | 52 - .../templates/alertmanager/secret.yaml | 124 - .../templates/alertmanager/service.yaml | 47 - .../alertmanager/serviceaccount.yaml | 16 - .../alertmanager/servicemonitor.yaml | 33 - .../alertmanager/serviceperreplica.yaml | 46 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 33 - .../kube-api-server/servicemonitor.yaml | 36 - .../kube-controller-manager/endpoints.yaml | 20 - .../kube-controller-manager/service.yaml | 27 - .../servicemonitor.yaml | 44 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 46 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 50 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 38 - .../exporters/kube-scheduler/endpoints.yaml | 20 - .../exporters/kube-scheduler/service.yaml | 27 - .../kube-scheduler/servicemonitor.yaml | 44 - .../kube-state-metrics/serviceMonitor.yaml | 30 - .../exporters/kubelet/servicemonitor.yaml | 151 - .../node-exporter/servicemonitor.yaml | 32 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 38 - .../grafana/dashboards-1.14/apiserver.yaml | 1734 ---- .../dashboards-1.14/cluster-total.yaml | 1841 ---- .../dashboards-1.14/controller-manager.yaml | 1144 --- .../grafana/dashboards-1.14/etcd.yaml | 1118 --- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1340 --- .../k8s-resources-cluster.yaml | 2582 ------ .../k8s-resources-namespace.yaml | 2286 ----- .../dashboards-1.14/k8s-resources-node.yaml | 978 --- .../dashboards-1.14/k8s-resources-pod.yaml | 1772 ---- .../k8s-resources-workload.yaml | 2034 ----- .../k8s-resources-workloads-namespace.yaml | 2195 ----- .../grafana/dashboards-1.14/kubelet.yaml | 2515 ------ .../dashboards-1.14/namespace-by-pod.yaml | 1429 ---- .../namespace-by-workload.yaml | 1697 ---- .../node-cluster-rsrc-use.yaml | 964 --- .../dashboards-1.14/node-rsrc-use.yaml | 991 --- .../grafana/dashboards-1.14/nodes.yaml | 994 --- .../persistentvolumesusage.yaml | 575 -- .../grafana/dashboards-1.14/pod-total.yaml | 1196 --- .../prometheus-remote-write.yaml | 1655 ---- .../grafana/dashboards-1.14/prometheus.yaml | 1227 --- .../grafana/dashboards-1.14/proxy.yaml | 1222 --- .../grafana/dashboards-1.14/scheduler.yaml | 1068 --- .../grafana/dashboards-1.14/statefulset.yaml | 927 -- .../dashboards-1.14/workload-total.yaml | 1402 ---- .../templates/grafana/dashboards/etcd.yaml | 1118 --- .../dashboards/k8s-cluster-rsrc-use.yaml | 959 --- .../grafana/dashboards/k8s-node-rsrc-use.yaml | 986 --- .../dashboards/k8s-resources-cluster.yaml | 1479 ---- .../dashboards/k8s-resources-namespace.yaml | 963 --- .../grafana/dashboards/k8s-resources-pod.yaml | 1006 --- .../dashboards/k8s-resources-workload.yaml | 936 --- .../k8s-resources-workloads-namespace.yaml | 972 --- .../templates/grafana/dashboards/nodes.yaml | 1383 --- .../dashboards/persistentvolumesusage.yaml | 573 -- .../templates/grafana/dashboards/pods.yaml | 680 -- .../grafana/dashboards/statefulset.yaml | 926 -- .../9.4.200/templates/grafana/namespaces.yaml | 10 - .../templates/grafana/servicemonitor.yaml | 32 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 65 - .../job-patch/job-patchWebhook.yaml | 66 - .../admission-webhooks/job-patch/psp.yaml | 54 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 15 - .../mutatingWebhookConfiguration.yaml | 31 - .../validatingWebhookConfiguration.yaml | 31 - .../prometheus-operator/clusterrole.yaml | 79 - .../clusterrolebinding.yaml | 17 - .../prometheus-operator/deployment.yaml | 145 - .../prometheus-operator/psp-clusterrole.yaml | 20 - .../psp-clusterrolebinding.yaml | 17 - .../templates/prometheus-operator/psp.yaml | 51 - .../prometheus-operator/service.yaml | 53 - .../prometheus-operator/serviceaccount.yaml | 12 - .../prometheus-operator/servicemonitor.yaml | 32 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 40 - .../prometheus/additionalScrapeConfigs.yaml | 16 - .../templates/prometheus/clusterrole.yaml | 36 - .../prometheus/clusterrolebinding.yaml | 18 - .../9.4.200/templates/prometheus/ingress.yaml | 53 - .../prometheus/ingressThanosSidecar.yaml | 48 - .../prometheus/ingressperreplica.yaml | 53 - .../templates/prometheus/nginx-config.yaml | 66 - .../prometheus/podDisruptionBudget.yaml | 21 - .../templates/prometheus/podmonitors.yaml | 37 - .../templates/prometheus/prometheus.yaml | 260 - .../templates/prometheus/psp-clusterrole.yaml | 20 - .../prometheus/psp-clusterrolebinding.yaml | 18 - .../9.4.200/templates/prometheus/psp.yaml | 55 - .../rules-1.14/alertmanager.rules.yaml | 61 - .../templates/prometheus/rules-1.14/etcd.yaml | 157 - .../prometheus/rules-1.14/general.rules.yaml | 50 - .../prometheus/rules-1.14/k8s.rules.yaml | 121 - .../kube-apiserver-availability.rules.yaml | 158 - .../rules-1.14/kube-apiserver-slos.yaml | 79 - .../rules-1.14/kube-apiserver.rules.yaml | 363 - .../kube-prometheus-general.rules.yaml | 31 - .../kube-prometheus-node-recording.rules.yaml | 39 - .../rules-1.14/kube-scheduler.rules.yaml | 65 - .../rules-1.14/kube-state-metrics.yaml | 51 - .../prometheus/rules-1.14/kubelet.rules.yaml | 39 - .../rules-1.14/kubernetes-apps.yaml | 210 - .../rules-1.14/kubernetes-resources.yaml | 103 - .../rules-1.14/kubernetes-storage.yaml | 63 - .../kubernetes-system-apiserver.yaml | 66 - .../kubernetes-system-controller-manager.yaml | 39 - .../rules-1.14/kubernetes-system-kubelet.yaml | 91 - .../kubernetes-system-scheduler.yaml | 39 - .../rules-1.14/kubernetes-system.yaml | 47 - .../rules-1.14/node-exporter.rules.yaml | 79 - .../prometheus/rules-1.14/node-exporter.yaml | 210 - .../prometheus/rules-1.14/node-network.yaml | 34 - .../prometheus/rules-1.14/node.rules.yaml | 53 - .../rules-1.14/prometheus-operator.yaml | 57 - .../prometheus/rules-1.14/prometheus.yaml | 202 - .../prometheus/rules/alertmanager.rules.yaml | 54 - .../templates/prometheus/rules/etcd.yaml | 157 - .../prometheus/rules/general.rules.yaml | 50 - .../templates/prometheus/rules/k8s.rules.yaml | 83 - .../rules/kube-apiserver.rules.yaml | 39 - .../kube-prometheus-node-alerting.rules.yaml | 41 - .../kube-prometheus-node-recording.rules.yaml | 41 - .../rules/kube-scheduler.rules.yaml | 65 - .../prometheus/rules/kubernetes-absent.yaml | 129 - .../prometheus/rules/kubernetes-apps.yaml | 161 - .../rules/kubernetes-resources.yaml | 103 - .../prometheus/rules/kubernetes-storage.yaml | 63 - .../prometheus/rules/kubernetes-system.yaml | 145 - .../prometheus/rules/node-network.yaml | 48 - .../templates/prometheus/rules/node-time.yaml | 34 - .../prometheus/rules/node.rules.yaml | 202 - .../prometheus/rules/prometheus-operator.yaml | 43 - .../prometheus/rules/prometheus.rules.yaml | 109 - .../9.4.200/templates/prometheus/service.yaml | 52 - .../templates/prometheus/serviceaccount.yaml | 16 - .../templates/prometheus/servicemonitor.yaml | 42 - .../templates/prometheus/servicemonitors.yaml | 34 - .../prometheus/serviceperreplica.yaml | 46 - .../rancher-monitoring/clusterrole.yaml | 93 - .../rancher-monitoring/config-role.yaml | 48 - .../rancher-monitoring/dashboard-role.yaml | 47 - .../rancher-monitoring/default-dashboard.yaml | 1292 --- .../templates/validate-install-crd.yaml | 19 - .../rancher-monitoring/9.4.200/values.yaml | 2604 ------ .../rancher-monitoring/9.4.201/.helmignore | 26 - .../rancher-monitoring/9.4.201/CHANGELOG.md | 47 - .../9.4.201/CONTRIBUTING.md | 12 - .../rancher-monitoring/9.4.201/Chart.yaml | 43 - .../rancher-monitoring/9.4.201/README.md | 346 - .../rancher-monitoring/9.4.201/app-README.md | 15 - .../9.4.201/charts/grafana/.helmignore | 23 - .../9.4.201/charts/grafana/Chart.yaml | 17 - .../9.4.201/charts/grafana/README.md | 424 - .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 54 - .../charts/grafana/templates/_helpers.tpl | 82 - .../9.4.201/charts/grafana/templates/_pod.tpl | 448 - .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 20 - .../configmap-dashboard-provider.yaml | 25 - .../charts/grafana/templates/configmap.yaml | 69 - .../templates/dashboards-json-configmap.yaml | 35 - .../charts/grafana/templates/deployment.yaml | 47 - .../grafana/templates/headless-service.yaml | 18 - .../charts/grafana/templates/ingress.yaml | 55 - .../grafana/templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 48 - .../9.4.201/charts/grafana/templates/pvc.yaml | 28 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 21 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 22 - .../charts/grafana/templates/service.yaml | 50 - .../grafana/templates/serviceaccount.yaml | 13 - .../grafana/templates/servicemonitor.yaml | 36 - .../charts/grafana/templates/statefulset.yaml | 47 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 29 - .../grafana/templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../charts/grafana/templates/tests/test.yaml | 48 - .../9.4.201/charts/grafana/values.yaml | 562 -- .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 20 - .../charts/kube-state-metrics/README.md | 80 - .../kube-state-metrics/templates/NOTES.txt | 10 - .../kube-state-metrics/templates/_helpers.tpl | 47 - .../templates/clusterrole.yaml | 180 - .../templates/clusterrolebinding.yaml | 19 - .../templates/deployment.yaml | 192 - .../kube-state-metrics/templates/pdb.yaml | 17 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../kube-state-metrics/templates/service.yaml | 36 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 25 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../charts/kube-state-metrics/values.yaml | 156 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 20 - .../charts/prometheus-adapter/README.md | 160 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 43 - ...r-auth-delegator-cluster-role-binding.yaml | 19 - ...cs-apiserver-auth-reader-role-binding.yaml | 19 - .../custom-metrics-apiserver-deployment.yaml | 120 - ...-resource-reader-cluster-role-binding.yaml | 19 - ...tom-metrics-apiserver-service-account.yaml | 11 - .../custom-metrics-apiserver-service.yaml | 21 - .../templates/custom-metrics-apiservice.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/custom-metrics-configmap.yaml | 95 - ...-metrics-resource-reader-cluster-role.yaml | 23 - .../external-metrics-apiservice.yaml | 23 - .../external-metrics-cluster-role.yaml | 20 - ...a-custom-metrics-cluster-role-binding.yaml | 19 - ...external-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-apiservice.yaml | 23 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../prometheus-adapter/templates/secret.yaml | 15 - .../charts/prometheus-adapter/values.yaml | 145 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 16 - .../charts/prometheus-node-exporter/README.md | 63 - .../templates/NOTES.txt | 15 - .../templates/_helpers.tpl | 66 - .../templates/daemonset.yaml | 151 - .../templates/endpoints.yaml | 18 - .../templates/monitor.yaml | 25 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../templates/psp.yaml | 52 - .../templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 16 - .../prometheus-node-exporter/values.yaml | 141 - .../charts/rancher-pushprox/.helmignore | 23 - .../charts/rancher-pushprox/Chart.yaml | 13 - .../9.4.201/charts/rancher-pushprox/README.md | 54 - .../rancher-pushprox/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy.yaml | 49 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/rancher-pushprox/values.yaml | 86 - .../9.4.201/requirements.lock | 54 - .../9.4.201/requirements.yaml | 96 - .../9.4.201/templates/NOTES.txt | 4 - .../9.4.201/templates/_helpers.tpl | 151 - .../templates/alertmanager/alertmanager.yaml | 118 - .../templates/alertmanager/cleanupSecret.yaml | 86 - .../templates/alertmanager/ingress.yaml | 53 - .../alertmanager/ingressperreplica.yaml | 53 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 21 - .../alertmanager/psp-rolebinding.yaml | 18 - .../9.4.201/templates/alertmanager/psp.yaml | 52 - .../templates/alertmanager/secret.yaml | 124 - .../templates/alertmanager/service.yaml | 47 - .../alertmanager/serviceaccount.yaml | 16 - .../alertmanager/servicemonitor.yaml | 33 - .../alertmanager/serviceperreplica.yaml | 46 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 33 - .../kube-api-server/servicemonitor.yaml | 36 - .../kube-controller-manager/endpoints.yaml | 20 - .../kube-controller-manager/service.yaml | 27 - .../servicemonitor.yaml | 44 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 46 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 50 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 38 - .../exporters/kube-scheduler/endpoints.yaml | 20 - .../exporters/kube-scheduler/service.yaml | 27 - .../kube-scheduler/servicemonitor.yaml | 44 - .../kube-state-metrics/serviceMonitor.yaml | 30 - .../exporters/kubelet/servicemonitor.yaml | 151 - .../node-exporter/servicemonitor.yaml | 32 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 38 - .../grafana/dashboards-1.14/apiserver.yaml | 1734 ---- .../dashboards-1.14/cluster-total.yaml | 1841 ---- .../dashboards-1.14/controller-manager.yaml | 1144 --- .../grafana/dashboards-1.14/etcd.yaml | 1118 --- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1340 --- .../k8s-resources-cluster.yaml | 2582 ------ .../k8s-resources-namespace.yaml | 2286 ----- .../dashboards-1.14/k8s-resources-node.yaml | 978 --- .../dashboards-1.14/k8s-resources-pod.yaml | 1772 ---- .../k8s-resources-workload.yaml | 2034 ----- .../k8s-resources-workloads-namespace.yaml | 2195 ----- .../grafana/dashboards-1.14/kubelet.yaml | 2515 ------ .../dashboards-1.14/namespace-by-pod.yaml | 1429 ---- .../namespace-by-workload.yaml | 1697 ---- .../node-cluster-rsrc-use.yaml | 964 --- .../dashboards-1.14/node-rsrc-use.yaml | 991 --- .../grafana/dashboards-1.14/nodes.yaml | 994 --- .../persistentvolumesusage.yaml | 575 -- .../grafana/dashboards-1.14/pod-total.yaml | 1196 --- .../prometheus-remote-write.yaml | 1655 ---- .../grafana/dashboards-1.14/prometheus.yaml | 1227 --- .../grafana/dashboards-1.14/proxy.yaml | 1222 --- .../grafana/dashboards-1.14/scheduler.yaml | 1068 --- .../grafana/dashboards-1.14/statefulset.yaml | 927 -- .../dashboards-1.14/workload-total.yaml | 1402 ---- .../templates/grafana/dashboards/etcd.yaml | 1118 --- .../dashboards/k8s-cluster-rsrc-use.yaml | 959 --- .../grafana/dashboards/k8s-node-rsrc-use.yaml | 986 --- .../dashboards/k8s-resources-cluster.yaml | 1479 ---- .../dashboards/k8s-resources-namespace.yaml | 963 --- .../grafana/dashboards/k8s-resources-pod.yaml | 1006 --- .../dashboards/k8s-resources-workload.yaml | 936 --- .../k8s-resources-workloads-namespace.yaml | 972 --- .../templates/grafana/dashboards/nodes.yaml | 1383 --- .../dashboards/persistentvolumesusage.yaml | 573 -- .../templates/grafana/dashboards/pods.yaml | 680 -- .../grafana/dashboards/statefulset.yaml | 926 -- .../9.4.201/templates/grafana/namespaces.yaml | 10 - .../templates/grafana/servicemonitor.yaml | 32 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 65 - .../job-patch/job-patchWebhook.yaml | 66 - .../admission-webhooks/job-patch/psp.yaml | 54 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 15 - .../mutatingWebhookConfiguration.yaml | 31 - .../validatingWebhookConfiguration.yaml | 31 - .../prometheus-operator/clusterrole.yaml | 79 - .../clusterrolebinding.yaml | 17 - .../prometheus-operator/deployment.yaml | 145 - .../prometheus-operator/psp-clusterrole.yaml | 20 - .../psp-clusterrolebinding.yaml | 17 - .../templates/prometheus-operator/psp.yaml | 51 - .../prometheus-operator/service.yaml | 53 - .../prometheus-operator/serviceaccount.yaml | 12 - .../prometheus-operator/servicemonitor.yaml | 32 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 40 - .../prometheus/additionalScrapeConfigs.yaml | 16 - .../templates/prometheus/clusterrole.yaml | 36 - .../prometheus/clusterrolebinding.yaml | 18 - .../9.4.201/templates/prometheus/ingress.yaml | 53 - .../prometheus/ingressThanosSidecar.yaml | 48 - .../prometheus/ingressperreplica.yaml | 53 - .../templates/prometheus/nginx-config.yaml | 66 - .../prometheus/podDisruptionBudget.yaml | 21 - .../templates/prometheus/podmonitors.yaml | 37 - .../templates/prometheus/prometheus.yaml | 260 - .../templates/prometheus/psp-clusterrole.yaml | 20 - .../prometheus/psp-clusterrolebinding.yaml | 18 - .../9.4.201/templates/prometheus/psp.yaml | 55 - .../rules-1.14/alertmanager.rules.yaml | 61 - .../templates/prometheus/rules-1.14/etcd.yaml | 157 - .../prometheus/rules-1.14/general.rules.yaml | 50 - .../prometheus/rules-1.14/k8s.rules.yaml | 121 - .../kube-apiserver-availability.rules.yaml | 158 - .../rules-1.14/kube-apiserver-slos.yaml | 79 - .../rules-1.14/kube-apiserver.rules.yaml | 363 - .../kube-prometheus-general.rules.yaml | 31 - .../kube-prometheus-node-recording.rules.yaml | 39 - .../rules-1.14/kube-scheduler.rules.yaml | 65 - .../rules-1.14/kube-state-metrics.yaml | 51 - .../prometheus/rules-1.14/kubelet.rules.yaml | 39 - .../rules-1.14/kubernetes-apps.yaml | 210 - .../rules-1.14/kubernetes-resources.yaml | 103 - .../rules-1.14/kubernetes-storage.yaml | 63 - .../kubernetes-system-apiserver.yaml | 66 - .../kubernetes-system-controller-manager.yaml | 39 - .../rules-1.14/kubernetes-system-kubelet.yaml | 91 - .../kubernetes-system-scheduler.yaml | 39 - .../rules-1.14/kubernetes-system.yaml | 47 - .../rules-1.14/node-exporter.rules.yaml | 79 - .../prometheus/rules-1.14/node-exporter.yaml | 210 - .../prometheus/rules-1.14/node-network.yaml | 34 - .../prometheus/rules-1.14/node.rules.yaml | 53 - .../rules-1.14/prometheus-operator.yaml | 57 - .../prometheus/rules-1.14/prometheus.yaml | 202 - .../prometheus/rules/alertmanager.rules.yaml | 54 - .../templates/prometheus/rules/etcd.yaml | 157 - .../prometheus/rules/general.rules.yaml | 50 - .../templates/prometheus/rules/k8s.rules.yaml | 83 - .../rules/kube-apiserver.rules.yaml | 39 - .../kube-prometheus-node-alerting.rules.yaml | 41 - .../kube-prometheus-node-recording.rules.yaml | 41 - .../rules/kube-scheduler.rules.yaml | 65 - .../prometheus/rules/kubernetes-absent.yaml | 129 - .../prometheus/rules/kubernetes-apps.yaml | 161 - .../rules/kubernetes-resources.yaml | 103 - .../prometheus/rules/kubernetes-storage.yaml | 63 - .../prometheus/rules/kubernetes-system.yaml | 145 - .../prometheus/rules/node-network.yaml | 48 - .../templates/prometheus/rules/node-time.yaml | 34 - .../prometheus/rules/node.rules.yaml | 202 - .../prometheus/rules/prometheus-operator.yaml | 43 - .../prometheus/rules/prometheus.rules.yaml | 109 - .../9.4.201/templates/prometheus/service.yaml | 52 - .../templates/prometheus/serviceaccount.yaml | 16 - .../templates/prometheus/servicemonitor.yaml | 42 - .../templates/prometheus/servicemonitors.yaml | 34 - .../prometheus/serviceperreplica.yaml | 46 - .../rancher-monitoring/clusterrole.yaml | 93 - .../rancher-monitoring/config-role.yaml | 48 - .../rancher-monitoring/dashboard-role.yaml | 47 - .../rancher-monitoring/default-dashboard.yaml | 1292 --- .../rancher-monitoring/hardened.yaml | 87 - .../templates/validate-install-crd.yaml | 19 - .../rancher-monitoring/9.4.201/values.yaml | 2577 ------ .../rancher-monitoring/9.4.202/.helmignore | 26 - .../rancher-monitoring/9.4.202/CHANGELOG.md | 47 - .../9.4.202/CONTRIBUTING.md | 12 - .../rancher-monitoring/9.4.202/Chart.yaml | 43 - .../rancher-monitoring/9.4.202/README.md | 346 - .../rancher-monitoring/9.4.202/app-README.md | 15 - .../9.4.202/charts/grafana/.helmignore | 23 - .../9.4.202/charts/grafana/Chart.yaml | 17 - .../9.4.202/charts/grafana/README.md | 424 - .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 54 - .../charts/grafana/templates/_helpers.tpl | 82 - .../9.4.202/charts/grafana/templates/_pod.tpl | 448 - .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 20 - .../configmap-dashboard-provider.yaml | 25 - .../charts/grafana/templates/configmap.yaml | 69 - .../templates/dashboards-json-configmap.yaml | 35 - .../charts/grafana/templates/deployment.yaml | 47 - .../grafana/templates/headless-service.yaml | 18 - .../charts/grafana/templates/ingress.yaml | 55 - .../grafana/templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 48 - .../9.4.202/charts/grafana/templates/pvc.yaml | 28 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 21 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 22 - .../charts/grafana/templates/service.yaml | 50 - .../grafana/templates/serviceaccount.yaml | 13 - .../grafana/templates/servicemonitor.yaml | 36 - .../charts/grafana/templates/statefulset.yaml | 47 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 29 - .../grafana/templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../charts/grafana/templates/tests/test.yaml | 48 - .../9.4.202/charts/grafana/values.yaml | 562 -- .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 20 - .../charts/kube-state-metrics/README.md | 80 - .../kube-state-metrics/templates/NOTES.txt | 10 - .../kube-state-metrics/templates/_helpers.tpl | 47 - .../templates/clusterrole.yaml | 180 - .../templates/clusterrolebinding.yaml | 19 - .../templates/deployment.yaml | 192 - .../kube-state-metrics/templates/pdb.yaml | 17 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../kube-state-metrics/templates/service.yaml | 36 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 25 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../charts/kube-state-metrics/values.yaml | 156 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 20 - .../charts/prometheus-adapter/README.md | 147 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 43 - ...r-auth-delegator-cluster-role-binding.yaml | 19 - ...cs-apiserver-auth-reader-role-binding.yaml | 20 - .../custom-metrics-apiserver-deployment.yaml | 121 - .../custom-metrics-apiserver-pdb.yaml | 22 - .../custom-metrics-apiserver-psp.yaml | 68 - ...-resource-reader-cluster-role-binding.yaml | 19 - ...tom-metrics-apiserver-service-account.yaml | 12 - .../custom-metrics-apiserver-service.yaml | 22 - .../templates/custom-metrics-apiservice.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/custom-metrics-configmap.yaml | 96 - ...-metrics-resource-reader-cluster-role.yaml | 23 - .../external-metrics-apiservice.yaml | 23 - .../external-metrics-cluster-role.yaml | 20 - ...a-custom-metrics-cluster-role-binding.yaml | 23 - ...external-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-apiservice.yaml | 23 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../prometheus-adapter/templates/secret.yaml | 15 - .../charts/prometheus-adapter/values.yaml | 152 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 16 - .../charts/prometheus-node-exporter/README.md | 63 - .../templates/NOTES.txt | 15 - .../templates/_helpers.tpl | 66 - .../templates/daemonset.yaml | 151 - .../templates/endpoints.yaml | 18 - .../templates/monitor.yaml | 25 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../templates/psp.yaml | 52 - .../templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 16 - .../prometheus-node-exporter/values.yaml | 141 - .../charts/rancher-pushprox/.helmignore | 23 - .../charts/rancher-pushprox/Chart.yaml | 12 - .../9.4.202/charts/rancher-pushprox/README.md | 54 - .../rancher-pushprox/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/rancher-pushprox/values.yaml | 86 - .../9.4.202/requirements.lock | 54 - .../9.4.202/requirements.yaml | 96 - .../9.4.202/templates/NOTES.txt | 4 - .../9.4.202/templates/_helpers.tpl | 151 - .../templates/alertmanager/alertmanager.yaml | 118 - .../templates/alertmanager/cleanupSecret.yaml | 86 - .../templates/alertmanager/ingress.yaml | 53 - .../alertmanager/ingressperreplica.yaml | 53 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 21 - .../alertmanager/psp-rolebinding.yaml | 18 - .../9.4.202/templates/alertmanager/psp.yaml | 52 - .../templates/alertmanager/secret.yaml | 164 - .../templates/alertmanager/service.yaml | 47 - .../alertmanager/serviceaccount.yaml | 16 - .../alertmanager/servicemonitor.yaml | 33 - .../alertmanager/serviceperreplica.yaml | 46 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 33 - .../kube-api-server/servicemonitor.yaml | 36 - .../kube-controller-manager/endpoints.yaml | 20 - .../kube-controller-manager/service.yaml | 27 - .../servicemonitor.yaml | 44 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 46 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 50 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 38 - .../exporters/kube-scheduler/endpoints.yaml | 20 - .../exporters/kube-scheduler/service.yaml | 27 - .../kube-scheduler/servicemonitor.yaml | 44 - .../kube-state-metrics/serviceMonitor.yaml | 30 - .../exporters/kubelet/servicemonitor.yaml | 151 - .../node-exporter/servicemonitor.yaml | 32 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 38 - .../grafana/dashboards-1.14/apiserver.yaml | 1734 ---- .../dashboards-1.14/cluster-total.yaml | 1841 ---- .../dashboards-1.14/controller-manager.yaml | 1144 --- .../grafana/dashboards-1.14/etcd.yaml | 1118 --- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1340 --- .../k8s-resources-cluster.yaml | 2582 ------ .../k8s-resources-namespace.yaml | 2286 ----- .../dashboards-1.14/k8s-resources-node.yaml | 978 --- .../dashboards-1.14/k8s-resources-pod.yaml | 1772 ---- .../k8s-resources-workload.yaml | 2034 ----- .../k8s-resources-workloads-namespace.yaml | 2195 ----- .../grafana/dashboards-1.14/kubelet.yaml | 2515 ------ .../dashboards-1.14/namespace-by-pod.yaml | 1429 ---- .../namespace-by-workload.yaml | 1697 ---- .../node-cluster-rsrc-use.yaml | 964 --- .../dashboards-1.14/node-rsrc-use.yaml | 991 --- .../grafana/dashboards-1.14/nodes.yaml | 994 --- .../persistentvolumesusage.yaml | 575 -- .../grafana/dashboards-1.14/pod-total.yaml | 1196 --- .../prometheus-remote-write.yaml | 1655 ---- .../grafana/dashboards-1.14/prometheus.yaml | 1227 --- .../grafana/dashboards-1.14/proxy.yaml | 1222 --- .../grafana/dashboards-1.14/scheduler.yaml | 1068 --- .../grafana/dashboards-1.14/statefulset.yaml | 927 -- .../dashboards-1.14/workload-total.yaml | 1402 ---- .../templates/grafana/dashboards/etcd.yaml | 1118 --- .../dashboards/k8s-cluster-rsrc-use.yaml | 959 --- .../grafana/dashboards/k8s-node-rsrc-use.yaml | 986 --- .../dashboards/k8s-resources-cluster.yaml | 1479 ---- .../dashboards/k8s-resources-namespace.yaml | 963 --- .../grafana/dashboards/k8s-resources-pod.yaml | 1006 --- .../dashboards/k8s-resources-workload.yaml | 936 --- .../k8s-resources-workloads-namespace.yaml | 972 --- .../templates/grafana/dashboards/nodes.yaml | 1383 --- .../dashboards/persistentvolumesusage.yaml | 573 -- .../templates/grafana/dashboards/pods.yaml | 680 -- .../grafana/dashboards/statefulset.yaml | 926 -- .../9.4.202/templates/grafana/namespaces.yaml | 10 - .../templates/grafana/servicemonitor.yaml | 32 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 65 - .../job-patch/job-patchWebhook.yaml | 66 - .../admission-webhooks/job-patch/psp.yaml | 54 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 15 - .../mutatingWebhookConfiguration.yaml | 31 - .../validatingWebhookConfiguration.yaml | 31 - .../prometheus-operator/clusterrole.yaml | 79 - .../clusterrolebinding.yaml | 17 - .../prometheus-operator/deployment.yaml | 145 - .../prometheus-operator/psp-clusterrole.yaml | 20 - .../psp-clusterrolebinding.yaml | 17 - .../templates/prometheus-operator/psp.yaml | 51 - .../prometheus-operator/service.yaml | 53 - .../prometheus-operator/serviceaccount.yaml | 12 - .../prometheus-operator/servicemonitor.yaml | 32 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 40 - .../prometheus/additionalScrapeConfigs.yaml | 16 - .../templates/prometheus/clusterrole.yaml | 36 - .../prometheus/clusterrolebinding.yaml | 18 - .../9.4.202/templates/prometheus/ingress.yaml | 53 - .../prometheus/ingressThanosSidecar.yaml | 48 - .../prometheus/ingressperreplica.yaml | 53 - .../templates/prometheus/nginx-config.yaml | 66 - .../prometheus/podDisruptionBudget.yaml | 21 - .../templates/prometheus/podmonitors.yaml | 37 - .../templates/prometheus/prometheus.yaml | 260 - .../templates/prometheus/psp-clusterrole.yaml | 20 - .../prometheus/psp-clusterrolebinding.yaml | 18 - .../9.4.202/templates/prometheus/psp.yaml | 55 - .../rules-1.14/alertmanager.rules.yaml | 61 - .../templates/prometheus/rules-1.14/etcd.yaml | 157 - .../prometheus/rules-1.14/general.rules.yaml | 50 - .../prometheus/rules-1.14/k8s.rules.yaml | 121 - .../kube-apiserver-availability.rules.yaml | 158 - .../rules-1.14/kube-apiserver-slos.yaml | 79 - .../rules-1.14/kube-apiserver.rules.yaml | 363 - .../kube-prometheus-general.rules.yaml | 31 - .../kube-prometheus-node-recording.rules.yaml | 39 - .../rules-1.14/kube-scheduler.rules.yaml | 65 - .../rules-1.14/kube-state-metrics.yaml | 51 - .../prometheus/rules-1.14/kubelet.rules.yaml | 39 - .../rules-1.14/kubernetes-apps.yaml | 210 - .../rules-1.14/kubernetes-resources.yaml | 103 - .../rules-1.14/kubernetes-storage.yaml | 63 - .../kubernetes-system-apiserver.yaml | 66 - .../kubernetes-system-controller-manager.yaml | 39 - .../rules-1.14/kubernetes-system-kubelet.yaml | 91 - .../kubernetes-system-scheduler.yaml | 39 - .../rules-1.14/kubernetes-system.yaml | 47 - .../rules-1.14/node-exporter.rules.yaml | 79 - .../prometheus/rules-1.14/node-exporter.yaml | 210 - .../prometheus/rules-1.14/node-network.yaml | 34 - .../prometheus/rules-1.14/node.rules.yaml | 53 - .../rules-1.14/prometheus-operator.yaml | 57 - .../prometheus/rules-1.14/prometheus.yaml | 202 - .../prometheus/rules/alertmanager.rules.yaml | 54 - .../templates/prometheus/rules/etcd.yaml | 157 - .../prometheus/rules/general.rules.yaml | 50 - .../templates/prometheus/rules/k8s.rules.yaml | 83 - .../rules/kube-apiserver.rules.yaml | 39 - .../kube-prometheus-node-alerting.rules.yaml | 41 - .../kube-prometheus-node-recording.rules.yaml | 41 - .../rules/kube-scheduler.rules.yaml | 65 - .../prometheus/rules/kubernetes-absent.yaml | 129 - .../prometheus/rules/kubernetes-apps.yaml | 161 - .../rules/kubernetes-resources.yaml | 103 - .../prometheus/rules/kubernetes-storage.yaml | 63 - .../prometheus/rules/kubernetes-system.yaml | 145 - .../prometheus/rules/node-network.yaml | 48 - .../templates/prometheus/rules/node-time.yaml | 34 - .../prometheus/rules/node.rules.yaml | 202 - .../prometheus/rules/prometheus-operator.yaml | 43 - .../prometheus/rules/prometheus.rules.yaml | 109 - .../9.4.202/templates/prometheus/service.yaml | 52 - .../templates/prometheus/serviceaccount.yaml | 16 - .../templates/prometheus/servicemonitor.yaml | 42 - .../templates/prometheus/servicemonitors.yaml | 34 - .../prometheus/serviceperreplica.yaml | 46 - .../rancher-monitoring/clusterrole.yaml | 93 - .../rancher-monitoring/config-role.yaml | 48 - .../rancher-monitoring/dashboard-role.yaml | 47 - .../rancher-monitoring/default-dashboard.yaml | 1292 --- .../rancher-monitoring/hardened.yaml | 122 - .../templates/validate-install-crd.yaml | 19 - .../rancher-monitoring/9.4.202/values.yaml | 2579 ------ .../rancher-monitoring/9.4.203/.helmignore | 26 - .../rancher-monitoring/9.4.203/CHANGELOG.md | 47 - .../9.4.203/CONTRIBUTING.md | 12 - .../rancher-monitoring/9.4.203/Chart.yaml | 47 - .../rancher-monitoring/9.4.203/README.md | 346 - .../rancher-monitoring/9.4.203/app-README.md | 15 - .../9.4.203/charts/grafana/.helmignore | 23 - .../9.4.203/charts/grafana/Chart.yaml | 17 - .../9.4.203/charts/grafana/README.md | 424 - .../grafana/dashboards/custom-dashboard.json | 1 - .../charts/grafana/templates/NOTES.txt | 54 - .../charts/grafana/templates/_helpers.tpl | 82 - .../9.4.203/charts/grafana/templates/_pod.tpl | 448 - .../charts/grafana/templates/clusterrole.yaml | 25 - .../grafana/templates/clusterrolebinding.yaml | 20 - .../configmap-dashboard-provider.yaml | 25 - .../charts/grafana/templates/configmap.yaml | 69 - .../templates/dashboards-json-configmap.yaml | 35 - .../charts/grafana/templates/deployment.yaml | 47 - .../grafana/templates/headless-service.yaml | 18 - .../charts/grafana/templates/ingress.yaml | 55 - .../grafana/templates/nginx-config.yaml | 75 - .../templates/poddisruptionbudget.yaml | 22 - .../grafana/templates/podsecuritypolicy.yaml | 48 - .../9.4.203/charts/grafana/templates/pvc.yaml | 28 - .../charts/grafana/templates/role.yaml | 32 - .../charts/grafana/templates/rolebinding.yaml | 21 - .../charts/grafana/templates/secret-env.yaml | 14 - .../charts/grafana/templates/secret.yaml | 22 - .../charts/grafana/templates/service.yaml | 50 - .../grafana/templates/serviceaccount.yaml | 13 - .../grafana/templates/servicemonitor.yaml | 36 - .../charts/grafana/templates/statefulset.yaml | 47 - .../templates/tests/test-configmap.yaml | 17 - .../tests/test-podsecuritypolicy.yaml | 29 - .../grafana/templates/tests/test-role.yaml | 14 - .../templates/tests/test-rolebinding.yaml | 17 - .../templates/tests/test-serviceaccount.yaml | 9 - .../charts/grafana/templates/tests/test.yaml | 48 - .../9.4.203/charts/grafana/values.yaml | 562 -- .../9.4.203/charts/k3sServer/.helmignore | 23 - .../9.4.203/charts/k3sServer/Chart.yaml | 12 - .../9.4.203/charts/k3sServer/README.md | 54 - .../charts/k3sServer/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../k3sServer/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../k3sServer/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/k3sServer/values.yaml | 86 - .../charts/kube-state-metrics/.helmignore | 21 - .../charts/kube-state-metrics/Chart.yaml | 20 - .../charts/kube-state-metrics/README.md | 80 - .../kube-state-metrics/templates/NOTES.txt | 10 - .../kube-state-metrics/templates/_helpers.tpl | 47 - .../templates/clusterrole.yaml | 180 - .../templates/clusterrolebinding.yaml | 19 - .../templates/deployment.yaml | 192 - .../kube-state-metrics/templates/pdb.yaml | 17 - .../templates/podsecuritypolicy.yaml | 42 - .../templates/psp-clusterrole.yaml | 22 - .../templates/psp-clusterrolebinding.yaml | 19 - .../kube-state-metrics/templates/service.yaml | 36 - .../templates/serviceaccount.yaml | 18 - .../templates/servicemonitor.yaml | 25 - .../templates/stsdiscovery-role.yaml | 29 - .../templates/stsdiscovery-rolebinding.yaml | 20 - .../charts/kube-state-metrics/values.yaml | 156 - .../kubeAdmControllerManager/.helmignore | 23 - .../kubeAdmControllerManager/Chart.yaml | 12 - .../charts/kubeAdmControllerManager/README.md | 54 - .../templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../kubeAdmControllerManager/values.yaml | 86 - .../9.4.203/charts/kubeAdmEtcd/.helmignore | 23 - .../9.4.203/charts/kubeAdmEtcd/Chart.yaml | 12 - .../9.4.203/charts/kubeAdmEtcd/README.md | 54 - .../charts/kubeAdmEtcd/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../kubeAdmEtcd/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/kubeAdmEtcd/values.yaml | 86 - .../9.4.203/charts/kubeAdmProxy/.helmignore | 23 - .../9.4.203/charts/kubeAdmProxy/Chart.yaml | 12 - .../9.4.203/charts/kubeAdmProxy/README.md | 54 - .../kubeAdmProxy/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/kubeAdmProxy/values.yaml | 86 - .../charts/kubeAdmScheduler/.helmignore | 23 - .../charts/kubeAdmScheduler/Chart.yaml | 12 - .../9.4.203/charts/kubeAdmScheduler/README.md | 54 - .../kubeAdmScheduler/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/kubeAdmScheduler/values.yaml | 86 - .../charts/prometheus-adapter/.helmignore | 21 - .../charts/prometheus-adapter/Chart.yaml | 20 - .../charts/prometheus-adapter/README.md | 147 - .../prometheus-adapter/templates/NOTES.txt | 9 - .../prometheus-adapter/templates/_helpers.tpl | 43 - ...r-auth-delegator-cluster-role-binding.yaml | 19 - ...cs-apiserver-auth-reader-role-binding.yaml | 20 - .../custom-metrics-apiserver-deployment.yaml | 121 - .../custom-metrics-apiserver-pdb.yaml | 22 - .../custom-metrics-apiserver-psp.yaml | 68 - ...-resource-reader-cluster-role-binding.yaml | 19 - ...tom-metrics-apiserver-service-account.yaml | 12 - .../custom-metrics-apiserver-service.yaml | 22 - .../templates/custom-metrics-apiservice.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/custom-metrics-configmap.yaml | 96 - ...-metrics-resource-reader-cluster-role.yaml | 23 - .../external-metrics-apiservice.yaml | 23 - .../external-metrics-cluster-role.yaml | 20 - ...a-custom-metrics-cluster-role-binding.yaml | 23 - ...external-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-apiservice.yaml | 23 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../prometheus-adapter/templates/secret.yaml | 15 - .../charts/prometheus-adapter/values.yaml | 152 - .../prometheus-node-exporter/.helmignore | 21 - .../prometheus-node-exporter/Chart.yaml | 16 - .../charts/prometheus-node-exporter/README.md | 63 - .../templates/NOTES.txt | 15 - .../templates/_helpers.tpl | 66 - .../templates/daemonset.yaml | 151 - .../templates/endpoints.yaml | 18 - .../templates/monitor.yaml | 25 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../templates/psp.yaml | 52 - .../templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 16 - .../prometheus-node-exporter/values.yaml | 143 - .../charts/rke2ControllerManager/.helmignore | 23 - .../charts/rke2ControllerManager/Chart.yaml | 12 - .../charts/rke2ControllerManager/README.md | 54 - .../templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/rke2ControllerManager/values.yaml | 86 - .../9.4.203/charts/rke2Etcd/.helmignore | 23 - .../9.4.203/charts/rke2Etcd/Chart.yaml | 12 - .../9.4.203/charts/rke2Etcd/README.md | 54 - .../charts/rke2Etcd/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../rke2Etcd/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rke2Etcd/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rke2Etcd/values.yaml | 86 - .../9.4.203/charts/rke2Proxy/.helmignore | 23 - .../9.4.203/charts/rke2Proxy/Chart.yaml | 12 - .../9.4.203/charts/rke2Proxy/README.md | 54 - .../charts/rke2Proxy/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../rke2Proxy/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rke2Proxy/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rke2Proxy/values.yaml | 86 - .../9.4.203/charts/rke2Scheduler/.helmignore | 23 - .../9.4.203/charts/rke2Scheduler/Chart.yaml | 12 - .../9.4.203/charts/rke2Scheduler/README.md | 54 - .../rke2Scheduler/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rke2Scheduler/values.yaml | 86 - .../charts/rkeControllerManager/.helmignore | 23 - .../charts/rkeControllerManager/Chart.yaml | 12 - .../charts/rkeControllerManager/README.md | 54 - .../templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../charts/rkeControllerManager/values.yaml | 86 - .../9.4.203/charts/rkeEtcd/.helmignore | 23 - .../9.4.203/charts/rkeEtcd/Chart.yaml | 12 - .../9.4.203/charts/rkeEtcd/README.md | 54 - .../charts/rkeEtcd/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../rkeEtcd/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rkeEtcd/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rkeEtcd/values.yaml | 86 - .../9.4.203/charts/rkeProxy/.helmignore | 23 - .../9.4.203/charts/rkeProxy/Chart.yaml | 12 - .../9.4.203/charts/rkeProxy/README.md | 54 - .../charts/rkeProxy/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../rkeProxy/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../rkeProxy/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rkeProxy/values.yaml | 86 - .../9.4.203/charts/rkeScheduler/.helmignore | 23 - .../9.4.203/charts/rkeScheduler/Chart.yaml | 12 - .../9.4.203/charts/rkeScheduler/README.md | 54 - .../rkeScheduler/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../9.4.203/charts/rkeScheduler/values.yaml | 86 - .../9.4.203/requirements.lock | 54 - .../9.4.203/requirements.yaml | 137 - .../9.4.203/templates/NOTES.txt | 4 - .../9.4.203/templates/_helpers.tpl | 162 - .../templates/alertmanager/alertmanager.yaml | 118 - .../templates/alertmanager/cleanupSecret.yaml | 86 - .../templates/alertmanager/ingress.yaml | 53 - .../alertmanager/ingressperreplica.yaml | 53 - .../alertmanager/podDisruptionBudget.yaml | 21 - .../templates/alertmanager/psp-role.yaml | 21 - .../alertmanager/psp-rolebinding.yaml | 18 - .../9.4.203/templates/alertmanager/psp.yaml | 52 - .../templates/alertmanager/secret.yaml | 164 - .../templates/alertmanager/service.yaml | 47 - .../alertmanager/serviceaccount.yaml | 16 - .../alertmanager/servicemonitor.yaml | 33 - .../alertmanager/serviceperreplica.yaml | 46 - .../templates/exporters/core-dns/service.yaml | 24 - .../exporters/core-dns/servicemonitor.yaml | 33 - .../kube-api-server/servicemonitor.yaml | 36 - .../kube-controller-manager/endpoints.yaml | 20 - .../kube-controller-manager/service.yaml | 27 - .../servicemonitor.yaml | 44 - .../templates/exporters/kube-dns/service.yaml | 28 - .../exporters/kube-dns/servicemonitor.yaml | 46 - .../exporters/kube-etcd/endpoints.yaml | 20 - .../exporters/kube-etcd/service.yaml | 27 - .../exporters/kube-etcd/servicemonitor.yaml | 50 - .../exporters/kube-proxy/endpoints.yaml | 20 - .../exporters/kube-proxy/service.yaml | 27 - .../exporters/kube-proxy/servicemonitor.yaml | 38 - .../exporters/kube-scheduler/endpoints.yaml | 20 - .../exporters/kube-scheduler/service.yaml | 27 - .../kube-scheduler/servicemonitor.yaml | 44 - .../kube-state-metrics/serviceMonitor.yaml | 30 - .../exporters/kubelet/servicemonitor.yaml | 151 - .../node-exporter/servicemonitor.yaml | 32 - .../grafana/configmap-dashboards.yaml | 24 - .../grafana/configmaps-datasources.yaml | 38 - .../grafana/dashboards-1.14/apiserver.yaml | 1734 ---- .../dashboards-1.14/cluster-total.yaml | 1841 ---- .../dashboards-1.14/controller-manager.yaml | 1144 --- .../grafana/dashboards-1.14/etcd.yaml | 1118 --- .../grafana/dashboards-1.14/k8s-coredns.yaml | 1340 --- .../k8s-resources-cluster.yaml | 2582 ------ .../k8s-resources-namespace.yaml | 2286 ----- .../dashboards-1.14/k8s-resources-node.yaml | 978 --- .../dashboards-1.14/k8s-resources-pod.yaml | 1772 ---- .../k8s-resources-workload.yaml | 2034 ----- .../k8s-resources-workloads-namespace.yaml | 2195 ----- .../grafana/dashboards-1.14/kubelet.yaml | 2515 ------ .../dashboards-1.14/namespace-by-pod.yaml | 1429 ---- .../namespace-by-workload.yaml | 1697 ---- .../node-cluster-rsrc-use.yaml | 964 --- .../dashboards-1.14/node-rsrc-use.yaml | 991 --- .../grafana/dashboards-1.14/nodes.yaml | 994 --- .../persistentvolumesusage.yaml | 575 -- .../grafana/dashboards-1.14/pod-total.yaml | 1196 --- .../prometheus-remote-write.yaml | 1655 ---- .../grafana/dashboards-1.14/prometheus.yaml | 1227 --- .../grafana/dashboards-1.14/proxy.yaml | 1222 --- .../grafana/dashboards-1.14/scheduler.yaml | 1068 --- .../grafana/dashboards-1.14/statefulset.yaml | 927 -- .../dashboards-1.14/workload-total.yaml | 1402 ---- .../templates/grafana/dashboards/etcd.yaml | 1118 --- .../dashboards/k8s-cluster-rsrc-use.yaml | 959 --- .../grafana/dashboards/k8s-node-rsrc-use.yaml | 986 --- .../dashboards/k8s-resources-cluster.yaml | 1479 ---- .../dashboards/k8s-resources-namespace.yaml | 963 --- .../grafana/dashboards/k8s-resources-pod.yaml | 1006 --- .../dashboards/k8s-resources-workload.yaml | 936 --- .../k8s-resources-workloads-namespace.yaml | 972 --- .../templates/grafana/dashboards/nodes.yaml | 1383 --- .../dashboards/persistentvolumesusage.yaml | 573 -- .../templates/grafana/dashboards/pods.yaml | 680 -- .../grafana/dashboards/statefulset.yaml | 926 -- .../9.4.203/templates/grafana/namespaces.yaml | 10 - .../templates/grafana/servicemonitor.yaml | 32 - .../job-patch/clusterrole.yaml | 33 - .../job-patch/clusterrolebinding.yaml | 20 - .../job-patch/job-createSecret.yaml | 65 - .../job-patch/job-patchWebhook.yaml | 66 - .../admission-webhooks/job-patch/psp.yaml | 54 - .../admission-webhooks/job-patch/role.yaml | 21 - .../job-patch/rolebinding.yaml | 21 - .../job-patch/serviceaccount.yaml | 15 - .../mutatingWebhookConfiguration.yaml | 31 - .../validatingWebhookConfiguration.yaml | 31 - .../prometheus-operator/clusterrole.yaml | 79 - .../clusterrolebinding.yaml | 17 - .../prometheus-operator/deployment.yaml | 145 - .../prometheus-operator/psp-clusterrole.yaml | 20 - .../psp-clusterrolebinding.yaml | 17 - .../templates/prometheus-operator/psp.yaml | 51 - .../prometheus-operator/service.yaml | 53 - .../prometheus-operator/serviceaccount.yaml | 12 - .../prometheus-operator/servicemonitor.yaml | 32 - .../additionalAlertRelabelConfigs.yaml | 16 - .../additionalAlertmanagerConfigs.yaml | 16 - .../prometheus/additionalPrometheusRules.yaml | 40 - .../prometheus/additionalScrapeConfigs.yaml | 16 - .../templates/prometheus/clusterrole.yaml | 36 - .../prometheus/clusterrolebinding.yaml | 18 - .../9.4.203/templates/prometheus/ingress.yaml | 53 - .../prometheus/ingressThanosSidecar.yaml | 48 - .../prometheus/ingressperreplica.yaml | 53 - .../templates/prometheus/nginx-config.yaml | 66 - .../prometheus/podDisruptionBudget.yaml | 21 - .../templates/prometheus/podmonitors.yaml | 37 - .../templates/prometheus/prometheus.yaml | 262 - .../templates/prometheus/psp-clusterrole.yaml | 20 - .../prometheus/psp-clusterrolebinding.yaml | 18 - .../9.4.203/templates/prometheus/psp.yaml | 55 - .../rules-1.14/alertmanager.rules.yaml | 61 - .../templates/prometheus/rules-1.14/etcd.yaml | 157 - .../prometheus/rules-1.14/general.rules.yaml | 50 - .../prometheus/rules-1.14/k8s.rules.yaml | 121 - .../kube-apiserver-availability.rules.yaml | 158 - .../rules-1.14/kube-apiserver-slos.yaml | 79 - .../rules-1.14/kube-apiserver.rules.yaml | 363 - .../kube-prometheus-general.rules.yaml | 31 - .../kube-prometheus-node-recording.rules.yaml | 39 - .../rules-1.14/kube-scheduler.rules.yaml | 65 - .../rules-1.14/kube-state-metrics.yaml | 51 - .../prometheus/rules-1.14/kubelet.rules.yaml | 39 - .../rules-1.14/kubernetes-apps.yaml | 210 - .../rules-1.14/kubernetes-resources.yaml | 103 - .../rules-1.14/kubernetes-storage.yaml | 63 - .../kubernetes-system-apiserver.yaml | 66 - .../kubernetes-system-controller-manager.yaml | 39 - .../rules-1.14/kubernetes-system-kubelet.yaml | 91 - .../kubernetes-system-scheduler.yaml | 39 - .../rules-1.14/kubernetes-system.yaml | 47 - .../rules-1.14/node-exporter.rules.yaml | 79 - .../prometheus/rules-1.14/node-exporter.yaml | 210 - .../prometheus/rules-1.14/node-network.yaml | 34 - .../prometheus/rules-1.14/node.rules.yaml | 53 - .../rules-1.14/prometheus-operator.yaml | 57 - .../prometheus/rules-1.14/prometheus.yaml | 202 - .../prometheus/rules/alertmanager.rules.yaml | 54 - .../templates/prometheus/rules/etcd.yaml | 157 - .../prometheus/rules/general.rules.yaml | 50 - .../templates/prometheus/rules/k8s.rules.yaml | 83 - .../rules/kube-apiserver.rules.yaml | 39 - .../kube-prometheus-node-alerting.rules.yaml | 41 - .../kube-prometheus-node-recording.rules.yaml | 41 - .../rules/kube-scheduler.rules.yaml | 65 - .../prometheus/rules/kubernetes-absent.yaml | 129 - .../prometheus/rules/kubernetes-apps.yaml | 161 - .../rules/kubernetes-resources.yaml | 103 - .../prometheus/rules/kubernetes-storage.yaml | 63 - .../prometheus/rules/kubernetes-system.yaml | 145 - .../prometheus/rules/node-network.yaml | 48 - .../templates/prometheus/rules/node-time.yaml | 34 - .../prometheus/rules/node.rules.yaml | 202 - .../prometheus/rules/prometheus-operator.yaml | 43 - .../prometheus/rules/prometheus.rules.yaml | 109 - .../9.4.203/templates/prometheus/service.yaml | 52 - .../templates/prometheus/serviceaccount.yaml | 16 - .../templates/prometheus/servicemonitor.yaml | 42 - .../templates/prometheus/servicemonitors.yaml | 34 - .../prometheus/serviceperreplica.yaml | 46 - .../rancher-monitoring/clusterrole.yaml | 93 - .../rancher-monitoring/config-role.yaml | 48 - .../rancher-monitoring/dashboard-role.yaml | 47 - .../rancher-monitoring/default-dashboard.yaml | 1292 --- .../rancher-monitoring/hardened.yaml | 122 - .../templates/validate-install-crd.yaml | 19 - .../rancher-monitoring/9.4.203/values.yaml | 2579 ------ .../1.16.201+up1.16.2/.helmignore | 21 - .../1.16.201+up1.16.2/Chart.yaml | 23 - .../1.16.201+up1.16.2/OWNERS | 6 - .../1.16.201+up1.16.2/README.md | 63 - .../1.16.201+up1.16.2/ci/port-values.yaml | 3 - .../1.16.201+up1.16.2/templates/NOTES.txt | 15 - .../1.16.201+up1.16.2/templates/_helpers.tpl | 95 - .../templates/daemonset.yaml | 183 - .../templates/endpoints.yaml | 18 - .../1.16.201+up1.16.2/templates/monitor.yaml | 32 - .../templates/psp-clusterrole.yaml | 15 - .../templates/psp-clusterrolebinding.yaml | 17 - .../1.16.201+up1.16.2/templates/psp.yaml | 52 - .../1.16.201+up1.16.2/templates/service.yaml | 23 - .../templates/serviceaccount.yaml | 18 - .../1.16.201+up1.16.2/values.yaml | 177 - .../rancher-operator-crd/0.1.000/Chart.yaml | 10 - .../0.1.000/templates/crds.yaml | 2626 ------ .../rancher-operator-crd/0.1.100/Chart.yaml | 10 - .../0.1.100/templates/crds.yaml | 2626 ------ .../rancher-operator-crd/0.1.200/Chart.yaml | 11 - .../0.1.200/templates/crds.yaml | 2626 ------ .../rancher-operator-crd/0.1.300/Chart.yaml | 11 - .../0.1.300/templates/crds.yaml | 3302 -------- .../0.1.400+up0.1.4/Chart.yaml | 11 - .../0.1.400+up0.1.4/templates/crds.yaml | 3304 -------- .../rancher-operator/0.1.000/Chart.yaml | 14 - .../0.1.000/templates/_helpers.tpl | 7 - .../0.1.000/templates/deployment.yaml | 23 - .../0.1.000/templates/rbac.yaml | 35 - .../0.1.000/templates/serviceaccount.yaml | 4 - .../rancher-operator/0.1.000/values.yaml | 8 - .../rancher-operator/0.1.100/Chart.yaml | 14 - .../0.1.100/templates/_helpers.tpl | 7 - .../0.1.100/templates/deployment.yaml | 23 - .../0.1.100/templates/rbac.yaml | 44 - .../0.1.100/templates/serviceaccount.yaml | 4 - .../rancher-operator/0.1.100/values.yaml | 8 - .../rancher-operator/0.1.200/Chart.yaml | 14 - .../0.1.200/templates/_helpers.tpl | 7 - .../0.1.200/templates/deployment.yaml | 23 - .../0.1.200/templates/rbac.yaml | 44 - .../0.1.200/templates/serviceaccount.yaml | 4 - .../rancher-operator/0.1.200/values.yaml | 8 - .../rancher-operator/0.1.300/Chart.yaml | 14 - .../0.1.300/templates/_helpers.tpl | 7 - .../0.1.300/templates/deployment.yaml | 23 - .../0.1.300/templates/rbac.yaml | 44 - .../0.1.300/templates/serviceaccount.yaml | 4 - .../rancher-operator/0.1.300/values.yaml | 8 - .../0.1.400+up0.1.4/Chart.yaml | 14 - .../0.1.400+up0.1.4/templates/_helpers.tpl | 7 - .../0.1.400+up0.1.4/templates/deployment.yaml | 23 - .../0.1.400+up0.1.4/templates/rbac.yaml | 44 - .../templates/serviceaccount.yaml | 4 - .../0.1.400+up0.1.4/values.yaml | 8 - .../0.2.0+up0.2.0/.helmignore | 22 - .../0.2.0+up0.2.0/Chart.yaml | 10 - .../0.2.0+up0.2.0/files/teams.j2 | 44 - .../0.2.0+up0.2.0/templates/NOTES.txt | 2 - .../0.2.0+up0.2.0/templates/_helpers.tpl | 73 - .../0.2.0+up0.2.0/templates/configmap.yaml | 39 - .../0.2.0+up0.2.0/templates/deployment.yaml | 77 - .../0.2.0+up0.2.0/templates/psp.yaml | 28 - .../0.2.0+up0.2.0/templates/role.yaml | 15 - .../0.2.0+up0.2.0/templates/rolebinding.yaml | 13 - .../templates/service-account.yaml | 6 - .../0.2.0+up0.2.0/templates/service.yaml | 17 - .../0.2.0+up0.2.0/values.yaml | 62 - .../2.12.100+up2.12.1/.helmignore | 21 - .../2.12.100+up2.12.1/Chart.yaml | 26 - .../2.12.100+up2.12.1/README.md | 147 - .../2.12.100+up2.12.1/ci/default-values.yaml | 0 .../ci/external-rules-values.yaml | 9 - .../2.12.100+up2.12.1/templates/NOTES.txt | 9 - .../2.12.100+up2.12.1/templates/_helpers.tpl | 72 - .../templates/certmanager.yaml | 48 - .../cluster-role-binding-auth-delegator.yaml | 19 - .../cluster-role-binding-resource-reader.yaml | 19 - .../cluster-role-resource-reader.yaml | 23 - .../templates/configmap.yaml | 96 - .../templates/custom-metrics-apiservice.yaml | 32 - ...stom-metrics-cluster-role-binding-hpa.yaml | 23 - .../custom-metrics-cluster-role.yaml | 16 - .../templates/deployment.yaml | 135 - .../external-metrics-apiservice.yaml | 32 - ...rnal-metrics-cluster-role-binding-hpa.yaml | 19 - .../external-metrics-cluster-role.yaml | 20 - .../2.12.100+up2.12.1/templates/pdb.yaml | 22 - .../2.12.100+up2.12.1/templates/psp.yaml | 68 - .../resource-metrics-apiservice.yaml | 32 - ...resource-metrics-cluster-role-binding.yaml | 19 - .../resource-metrics-cluster-role.yaml | 22 - .../templates/role-binding-auth-reader.yaml | 20 - .../2.12.100+up2.12.1/templates/secret.yaml | 15 - .../2.12.100+up2.12.1/templates/service.yaml | 22 - .../templates/serviceaccount.yaml | 12 - .../2.12.100+up2.12.1/values.yaml | 180 - .../rancher-pushprox/0.1.0/.helmignore | 23 - .../rancher-pushprox/0.1.0/Chart.yaml | 13 - .../rancher-pushprox/0.1.0/README.md | 54 - .../0.1.0/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../0.1.0/templates/pushprox-clients.yaml | 134 - .../0.1.0/templates/pushprox-proxy.yaml | 49 - .../templates/pushprox-servicemonitor.yaml | 39 - .../rancher-pushprox/0.1.0/values.yaml | 86 - .../rancher-pushprox/0.1.1/.helmignore | 23 - .../rancher-pushprox/0.1.1/Chart.yaml | 13 - .../rancher-pushprox/0.1.1/README.md | 54 - .../0.1.1/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../0.1.1/templates/pushprox-clients.yaml | 133 - .../0.1.1/templates/pushprox-proxy.yaml | 49 - .../templates/pushprox-servicemonitor.yaml | 39 - .../rancher-pushprox/0.1.1/values.yaml | 86 - .../rancher-pushprox/0.1.2/.helmignore | 23 - .../rancher-pushprox/0.1.2/Chart.yaml | 12 - .../rancher-pushprox/0.1.2/README.md | 54 - .../0.1.2/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../0.1.2/templates/pushprox-clients.yaml | 133 - .../0.1.2/templates/pushprox-proxy-rbac.yaml | 63 - .../0.1.2/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../rancher-pushprox/0.1.2/values.yaml | 86 - .../rancher-pushprox/0.1.201/.helmignore | 23 - .../rancher-pushprox/0.1.201/Chart.yaml | 12 - .../rancher-pushprox/0.1.201/README.md | 54 - .../0.1.201/templates/_helpers.tpl | 65 - .../templates/pushprox-clients-rbac.yaml | 74 - .../0.1.201/templates/pushprox-clients.yaml | 133 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../0.1.201/templates/pushprox-proxy.yaml | 50 - .../templates/pushprox-servicemonitor.yaml | 39 - .../rancher-pushprox/0.1.201/values.yaml | 86 - .../rancher-pushprox/0.1.300/.helmignore | 23 - .../rancher-pushprox/0.1.300/Chart.yaml | 13 - .../rancher-pushprox/0.1.300/README.md | 54 - .../0.1.300/templates/_helpers.tpl | 87 - .../templates/pushprox-clients-rbac.yaml | 74 - .../0.1.300/templates/pushprox-clients.yaml | 135 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../0.1.300/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 39 - .../rancher-pushprox/0.1.300/values.yaml | 86 - .../rancher-pushprox/0.1.400/.helmignore | 23 - .../rancher-pushprox/0.1.400/Chart.yaml | 13 - .../rancher-pushprox/0.1.400/README.md | 60 - .../0.1.400/templates/_helpers.tpl | 104 - .../templates/pushprox-clients-rbac.yaml | 77 - .../0.1.400/templates/pushprox-clients.yaml | 145 - .../templates/pushprox-proxy-rbac.yaml | 63 - .../0.1.400/templates/pushprox-proxy.yaml | 52 - .../templates/pushprox-servicemonitor.yaml | 33 - .../rancher-pushprox/0.1.400/values.yaml | 111 - .../rancher-sachet/1.0.100/.helmignore | 23 - .../rancher-sachet/1.0.100/Chart.yaml | 11 - .../1.0.100/files/template.tmpl | 1 - .../1.0.100/templates/NOTES.txt | 3 - .../1.0.100/templates/_helpers.tpl | 79 - .../templates/configmap-pre-install.yaml | 34 - .../1.0.100/templates/deployment.yaml | 75 - .../rancher-sachet/1.0.100/templates/psp.yaml | 28 - .../1.0.100/templates/role.yaml | 15 - .../1.0.100/templates/rolebinding.yaml | 13 - .../1.0.100/templates/service-account.yaml | 6 - .../1.0.100/templates/service.yaml | 17 - .../rancher-sachet/1.0.100/values.yaml | 63 - .../rancher-tracing/1.20.001/.helmignore | 23 - .../rancher-tracing/1.20.001/Chart.yaml | 12 - .../rancher-tracing/1.20.001/README.md | 5 - .../1.20.001/templates/_affinity.tpl | 92 - .../1.20.001/templates/_helpers.tpl | 32 - .../1.20.001/templates/deployment.yaml | 80 - .../1.20.001/templates/pvc.yaml | 16 - .../1.20.001/templates/service.yaml | 63 - .../rancher-tracing/1.20.001/values.yaml | 42 - .../rancher-tracing/1.20.002/.helmignore | 23 - .../rancher-tracing/1.20.002/Chart.yaml | 12 - .../rancher-tracing/1.20.002/README.md | 5 - .../1.20.002/templates/_affinity.tpl | 92 - .../1.20.002/templates/_helpers.tpl | 32 - .../1.20.002/templates/deployment.yaml | 80 - .../1.20.002/templates/pvc.yaml | 16 - .../1.20.002/templates/service.yaml | 63 - .../rancher-tracing/1.20.002/values.yaml | 42 - .../rancher-tracing/1.20.100/.helmignore | 23 - .../rancher-tracing/1.20.100/Chart.yaml | 12 - .../rancher-tracing/1.20.100/README.md | 5 - .../1.20.100/templates/_affinity.tpl | 92 - .../1.20.100/templates/_helpers.tpl | 32 - .../1.20.100/templates/deployment.yaml | 86 - .../1.20.100/templates/psp.yaml | 86 - .../1.20.100/templates/pvc.yaml | 16 - .../1.20.100/templates/service.yaml | 63 - .../rancher-tracing/1.20.100/values.yaml | 44 - .../rancher-vsphere-cpi/1.0.0/Chart.yaml | 19 - .../rancher-vsphere-cpi/1.0.0/README.md | 57 - .../rancher-vsphere-cpi/1.0.0/app-readme.md | 9 - .../rancher-vsphere-cpi/1.0.0/questions.yaml | 42 - .../1.0.0/templates/_helpers.tpl | 7 - .../templates/vsphere-cloud-config-cm.yaml | 15 - .../1.0.0/templates/vsphere-cpi-ds.yaml | 74 - .../1.0.0/templates/vsphere-cpi-rbac.yaml | 127 - .../1.0.0/templates/vsphere-creds-secret.yaml | 10 - .../rancher-vsphere-cpi/1.0.0/values.yaml | 20 - .../rancher-vsphere-cpi/1.0.000/Chart.yaml | 19 - .../rancher-vsphere-cpi/1.0.000/README.md | 57 - .../rancher-vsphere-cpi/1.0.000/app-readme.md | 9 - .../1.0.000/questions.yaml | 42 - .../1.0.000/templates/_helpers.tpl | 7 - .../templates/vsphere-cloud-config-cm.yaml | 15 - .../1.0.000/templates/vsphere-cpi-ds.yaml | 74 - .../1.0.000/templates/vsphere-cpi-rbac.yaml | 127 - .../templates/vsphere-creds-secret.yaml | 10 - .../rancher-vsphere-cpi/1.0.000/values.yaml | 20 - .../rancher-vsphere-csi/2.1.000/Chart.yaml | 19 - .../rancher-vsphere-csi/2.1.000/README.md | 73 - .../rancher-vsphere-csi/2.1.000/app-readme.md | 14 - .../2.1.000/questions.yaml | 91 - .../2.1.000/templates/_helpers.tpl | 7 - .../vsphere-csi-controller-deployment.yaml | 176 - .../vsphere-csi-controller-rbac.yaml | 55 - .../templates/vsphere-csi-node-ds.yaml | 139 - .../2.1.000/templates/vsphere-csi-secret.yaml | 9 - .../templates/vsphere-csi-storageclass.yaml | 16 - .../rancher-vsphere-csi/2.1.000/values.yaml | 70 - .../rancher-vsphere-csi/2.2.0/Chart.yaml | 19 - .../rancher-vsphere-csi/2.2.0/README.md | 73 - .../rancher-vsphere-csi/2.2.0/app-readme.md | 14 - .../rancher-vsphere-csi/2.2.0/questions.yaml | 104 - .../2.2.0/templates/_helpers.tpl | 7 - .../vsphere-csi-controller-deployment.yaml | 225 - .../vsphere-csi-controller-rbac.yaml | 55 - .../2.2.0/templates/vsphere-csi-node-ds.yaml | 152 - .../templates/vsphere-csi-node-rbac.yaml | 29 - .../2.2.0/templates/vsphere-csi-secret.yaml | 9 - .../templates/vsphere-csi-storageclass.yaml | 16 - .../rancher-vsphere-csi/2.2.0/values.yaml | 75 - .../rancher-webhook/0.1.0-beta500/Chart.yaml | 11 - .../0.1.0-beta500/templates/_helpers.tpl | 7 - .../0.1.0-beta500/templates/deployment.yaml | 26 - .../0.1.0-beta500/templates/rbac.yaml | 12 - .../0.1.0-beta500/templates/service.yaml | 13 - .../templates/serviceaccount.yaml | 4 - .../0.1.0-beta500/templates/webhook.yaml | 18 - .../rancher-webhook/0.1.0-beta500/values.yaml | 8 - .../rancher-webhook/0.1.0-beta700/Chart.yaml | 11 - .../0.1.0-beta700/templates/_helpers.tpl | 7 - .../0.1.0-beta700/templates/deployment.yaml | 26 - .../0.1.0-beta700/templates/rbac.yaml | 12 - .../0.1.0-beta700/templates/service.yaml | 13 - .../templates/serviceaccount.yaml | 4 - .../0.1.0-beta700/templates/webhook.yaml | 19 - .../rancher-webhook/0.1.0-beta700/values.yaml | 8 - .../rancher-webhook/0.1.0-beta900/Chart.yaml | 11 - .../0.1.0-beta900/templates/_helpers.tpl | 7 - .../0.1.0-beta900/templates/deployment.yaml | 26 - .../0.1.0-beta900/templates/rbac.yaml | 12 - .../0.1.0-beta900/templates/service.yaml | 13 - .../templates/serviceaccount.yaml | 4 - .../0.1.0-beta900/templates/webhook.yaml | 19 - .../rancher-webhook/0.1.0-beta900/values.yaml | 8 - .../rancher-webhook/0.1.0-beta901/Chart.yaml | 11 - .../0.1.0-beta901/templates/_helpers.tpl | 7 - .../0.1.0-beta901/templates/deployment.yaml | 26 - .../0.1.0-beta901/templates/rbac.yaml | 12 - .../0.1.0-beta901/templates/service.yaml | 13 - .../templates/serviceaccount.yaml | 4 - .../0.1.0-beta901/templates/webhook.yaml | 19 - .../rancher-webhook/0.1.0-beta901/values.yaml | 8 - .../0.2.1-alpha+up0.2.0-alpha01/Chart.yaml | 15 - .../charts/capi/Chart.yaml | 4 - .../charts/capi/templates/service.yaml | 13 - .../templates/_helpers.tpl | 7 - .../templates/deployment.yaml | 39 - .../templates/rbac.yaml | 12 - .../templates/service.yaml | 13 - .../templates/serviceaccount.yaml | 4 - .../templates/webhook.yaml | 19 - .../0.2.1-alpha+up0.2.0-alpha01/values.yaml | 11 - .../0.1.0/.helmignore | 23 - .../rancher-windows-exporter/0.1.0/Chart.yaml | 15 - .../rancher-windows-exporter/0.1.0/README.md | 17 - .../0.1.0/scripts/check-wins-version.ps1 | 20 - .../0.1.0/scripts/proxy-entry.ps1 | 11 - .../0.1.0/scripts/run.ps1 | 78 - .../0.1.0/templates/_helpers.tpl | 73 - .../0.1.0/templates/configmap.yaml | 10 - .../0.1.0/templates/daemonset.yaml | 77 - .../0.1.0/templates/rbac.yaml | 78 - .../0.1.0/templates/service.yaml | 15 - .../0.1.0/templates/servicemonitor.yaml | 44 - .../0.1.0/values.yaml | 46 - .../0.0.100+up0.0.1/.helmignore | 23 - .../0.0.100+up0.0.1/Chart.yaml | 15 - .../0.0.100+up0.0.1/README.md | 41 - .../0.0.100+up0.0.1/app-readme.md | 19 - .../0.0.100+up0.0.1/scripts/noop.ps1 | 4 - .../0.0.100+up0.0.1/scripts/upgrade.ps1 | 72 - .../0.0.100+up0.0.1/templates/_helpers.tpl | 63 - .../0.0.100+up0.0.1/templates/configmap.yaml | 17 - .../0.0.100+up0.0.1/templates/daemonset.yaml | 72 - .../0.0.100+up0.0.1/templates/rbac.yaml | 70 - .../0.0.100+up0.0.1/values.yaml | 60 - charts/rio/rio/0.8.000/.helmignore | 22 - charts/rio/rio/0.8.000/Chart.yaml | 16 - charts/rio/rio/0.8.000/README.md | 46 - charts/rio/rio/0.8.000/templates/NOTES.txt | 17 - charts/rio/rio/0.8.000/templates/_helpers.tpl | 8 - .../rio/0.8.000/templates/clusterrole.yaml | 394 - .../0.8.000/templates/clusterrolebinding.yaml | 12 - .../rio/rio/0.8.000/templates/configmap.yaml | 7 - .../rio/rio/0.8.000/templates/deployment.yaml | 49 - .../rio/0.8.000/templates/envoyfilter.yaml | 26 - charts/rio/rio/0.8.000/templates/secret.yaml | 5 - charts/rio/rio/0.8.000/templates/service.yaml | 13 - .../rio/0.8.000/templates/serviceaccount.yaml | 5 - charts/rio/rio/0.8.000/values.yaml | 23 - charts/rio/rio/0.8.001/.helmignore | 22 - charts/rio/rio/0.8.001/Chart.yaml | 15 - charts/rio/rio/0.8.001/README.md | 46 - charts/rio/rio/0.8.001/templates/NOTES.txt | 17 - charts/rio/rio/0.8.001/templates/_helpers.tpl | 8 - .../rio/0.8.001/templates/clusterrole.yaml | 394 - .../0.8.001/templates/clusterrolebinding.yaml | 12 - .../rio/rio/0.8.001/templates/configmap.yaml | 7 - .../rio/rio/0.8.001/templates/deployment.yaml | 49 - .../rio/0.8.001/templates/envoyfilter.yaml | 26 - charts/rio/rio/0.8.001/templates/secret.yaml | 5 - charts/rio/rio/0.8.001/templates/service.yaml | 13 - .../rio/0.8.001/templates/serviceaccount.yaml | 5 - charts/rio/rio/0.8.001/values.yaml | 23 - charts/rio/rio/0.8.1/.helmignore | 22 - charts/rio/rio/0.8.1/Chart.yaml | 15 - charts/rio/rio/0.8.1/README.md | 46 - charts/rio/rio/0.8.1/templates/NOTES.txt | 17 - charts/rio/rio/0.8.1/templates/_helpers.tpl | 8 - .../rio/rio/0.8.1/templates/clusterrole.yaml | 394 - .../0.8.1/templates/clusterrolebinding.yaml | 12 - charts/rio/rio/0.8.1/templates/configmap.yaml | 7 - .../rio/rio/0.8.1/templates/deployment.yaml | 49 - .../rio/rio/0.8.1/templates/envoyfilter.yaml | 26 - charts/rio/rio/0.8.1/templates/secret.yaml | 5 - charts/rio/rio/0.8.1/templates/service.yaml | 13 - .../rio/0.8.1/templates/serviceaccount.yaml | 5 - charts/rio/rio/0.8.1/values.yaml | 23 - .../0.7.1/Chart.yaml | 14 - .../0.7.1/templates/_helpers.tpl | 9 - .../0.7.1/templates/clusterrolebinding.yaml | 12 - .../0.7.1/templates/configmap.yaml | 15 - .../0.7.1/templates/deployment.yaml | 48 - .../0.7.1/templates/serviceaccount.yaml | 4 - .../0.7.1/values.yaml | 12 - index.yaml | 3671 -------- 4263 files changed, 702961 deletions(-) delete mode 100755 assets/fleet-agent/fleet-agent-0.3.000.tgz delete mode 100755 assets/fleet-agent/fleet-agent-0.3.100.tgz delete mode 100755 assets/fleet-agent/fleet-agent-0.3.200.tgz delete mode 100755 assets/fleet-agent/fleet-agent-0.3.300.tgz delete mode 100755 assets/fleet-agent/fleet-agent-0.3.400.tgz delete mode 100644 assets/fleet-agent/fleet-agent-0.3.500+up0.3.5.tgz delete mode 100644 assets/fleet-agent/fleet-agent-0.3.600-rc1+up0.3.6-rc1.tgz delete mode 100755 assets/fleet-crd/fleet-crd-0.3.000.tgz delete mode 100755 assets/fleet-crd/fleet-crd-0.3.100.tgz delete mode 100755 assets/fleet-crd/fleet-crd-0.3.200.tgz delete mode 100755 assets/fleet-crd/fleet-crd-0.3.300.tgz delete mode 100755 assets/fleet-crd/fleet-crd-0.3.400.tgz delete mode 100644 assets/fleet-crd/fleet-crd-0.3.500+up0.3.5.tgz delete mode 100644 assets/fleet-crd/fleet-crd-0.3.600-rc1+up0.3.6-rc1.tgz delete mode 100755 assets/fleet/fleet-0.3.000.tgz delete mode 100755 assets/fleet/fleet-0.3.100.tgz delete mode 100755 assets/fleet/fleet-0.3.200.tgz delete mode 100755 assets/fleet/fleet-0.3.300.tgz delete mode 100755 assets/fleet/fleet-0.3.400.tgz delete mode 100644 assets/fleet/fleet-0.3.500+up0.3.5.tgz delete mode 100644 assets/fleet/fleet-0.3.600-rc1+up0.3.6-rc1.tgz delete mode 100755 assets/longhorn/longhorn-1.0.200.tgz delete mode 100755 assets/longhorn/longhorn-1.0.201.tgz delete mode 100755 assets/longhorn/longhorn-1.1.000.tgz delete mode 100755 assets/longhorn/longhorn-1.1.001.tgz delete mode 100644 assets/longhorn/longhorn-1.1.100+up1.1.1.tgz delete mode 100755 assets/longhorn/longhorn-crd-1.0.200.tgz delete mode 100755 assets/longhorn/longhorn-crd-1.0.201.tgz delete mode 100755 assets/longhorn/longhorn-crd-1.1.000.tgz delete mode 100755 assets/longhorn/longhorn-crd-1.1.001.tgz delete mode 100644 assets/longhorn/longhorn-crd-1.1.100+up1.1.1.tgz delete mode 100644 assets/rancher-aks-operator-crd/rancher-aks-operator-crd-1.0.100-rc7+up1.0.1-rc7.tgz delete mode 100644 assets/rancher-aks-operator/rancher-aks-operator-1.0.100-rc7+up1.0.1-rc7.tgz delete mode 100644 assets/rancher-alerting-drivers/rancher-alerting-drivers-1.0.200.tgz delete mode 100644 assets/rancher-backup-crd/rancher-backup-crd-1.0.400+up1.0.4-rc4.tgz delete mode 100644 assets/rancher-backup-crd/rancher-backup-crd-1.1.100+up1.1.1.tgz delete mode 100755 assets/rancher-backup/rancher-backup-1.0.200.tgz delete mode 100755 assets/rancher-backup/rancher-backup-1.0.201.tgz delete mode 100755 assets/rancher-backup/rancher-backup-1.0.300.tgz delete mode 100755 assets/rancher-backup/rancher-backup-1.0.301.tgz delete mode 100644 assets/rancher-backup/rancher-backup-1.0.400+up1.0.4-rc4.tgz delete mode 100644 assets/rancher-backup/rancher-backup-1.1.100+up1.1.1.tgz delete mode 100755 assets/rancher-backup/rancher-backup-crd-1.0.200.tgz delete mode 100755 assets/rancher-backup/rancher-backup-crd-1.0.201.tgz delete mode 100755 assets/rancher-backup/rancher-backup-crd-1.0.300.tgz delete mode 100755 assets/rancher-backup/rancher-backup-crd-1.0.301.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.100.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.200.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.300.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.301.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.400.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.500.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.501.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.100.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.200.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.300.tgz delete mode 100755 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.301.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.400.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.500.tgz delete mode 100644 assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.501.tgz delete mode 100644 assets/rancher-eks-operator-crd/rancher-eks-operator-crd-1.1.100-rc1+up1.1.1-rc1.tgz delete mode 100644 assets/rancher-eks-operator-crd/rancher-eks-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz delete mode 100644 assets/rancher-eks-operator/rancher-eks-operator-1.1.100-rc1+up1.1.1-rc1.tgz delete mode 100644 assets/rancher-eks-operator/rancher-eks-operator-1.1.100-rc2+up1.1.1-rc2.tgz delete mode 100755 assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.400.tgz delete mode 100755 assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.600.tgz delete mode 100644 assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.601+up0.1.6.tgz delete mode 100755 assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.601.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-3.1.100.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-3.1.101.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-3.2.101.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-3.3.000.tgz delete mode 100644 assets/rancher-gatekeeper/rancher-gatekeeper-3.3.1+up3.3.0.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.1.100.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.1.101.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.2.101.tgz delete mode 100755 assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.3.000.tgz delete mode 100644 assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.3.1+up3.3.0.tgz delete mode 100644 assets/rancher-gke-operator-crd/rancher-gke-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz delete mode 100644 assets/rancher-gke-operator/rancher-gke-operator-1.1.100-rc2+up1.1.1-rc2.tgz delete mode 100644 assets/rancher-grafana/rancher-grafana-6.6.401+up6.6.4.tgz delete mode 100644 assets/rancher-grafana/rancher-grafana-6.6.402+up6.6.4.tgz delete mode 100644 assets/rancher-istio-1.8/rancher-istio-1.8.601.tgz delete mode 100644 assets/rancher-istio-1.9/rancher-istio-1.9.501.tgz delete mode 100755 assets/rancher-istio/rancher-istio-1.7.100.tgz delete mode 100755 assets/rancher-istio/rancher-istio-1.7.300.tgz delete mode 100755 assets/rancher-istio/rancher-istio-1.7.301.tgz delete mode 100755 assets/rancher-istio/rancher-istio-1.8.300.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-1.23.001.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-1.24.001.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-1.24.003.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-1.29.000.tgz delete mode 100644 assets/rancher-kiali-server/rancher-kiali-server-1.32.100+up1.32.0.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-crd-1.23.001.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.001.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.003.tgz delete mode 100755 assets/rancher-kiali-server/rancher-kiali-server-crd-1.29.000.tgz delete mode 100644 assets/rancher-kiali-server/rancher-kiali-server-crd-1.32.100+up1.32.0.tgz delete mode 100644 assets/rancher-kube-state-metrics/rancher-kube-state-metrics-2.13.101+up2.13.1.tgz delete mode 100644 assets/rancher-logging/rancher-logging-3.10.1+up3.10.0.tgz delete mode 100755 assets/rancher-logging/rancher-logging-3.6.000.tgz delete mode 100755 assets/rancher-logging/rancher-logging-3.6.001.tgz delete mode 100755 assets/rancher-logging/rancher-logging-3.8.201.tgz delete mode 100755 assets/rancher-logging/rancher-logging-3.9.000.tgz delete mode 100644 assets/rancher-logging/rancher-logging-3.9.401+up3.9.4.tgz delete mode 100644 assets/rancher-logging/rancher-logging-crd-3.10.1+up3.10.0.tgz delete mode 100755 assets/rancher-logging/rancher-logging-crd-3.6.000.tgz delete mode 100755 assets/rancher-logging/rancher-logging-crd-3.6.001.tgz delete mode 100755 assets/rancher-logging/rancher-logging-crd-3.8.201.tgz delete mode 100755 assets/rancher-logging/rancher-logging-crd-3.9.000.tgz delete mode 100644 assets/rancher-logging/rancher-logging-crd-3.9.401+up3.10.0.tgz delete mode 100644 assets/rancher-logging/rancher-logging-crd-3.9.401+up3.9.4.tgz delete mode 100644 assets/rancher-monitoring/rancher-monitoring-14.5.101+up14.5.0.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-9.4.200.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-9.4.201.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-9.4.202.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-9.4.203.tgz delete mode 100644 assets/rancher-monitoring/rancher-monitoring-crd-14.5.101+up14.5.0.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-crd-9.4.200.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-crd-9.4.201.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-crd-9.4.202.tgz delete mode 100755 assets/rancher-monitoring/rancher-monitoring-crd-9.4.203.tgz delete mode 100644 assets/rancher-node-exporter/rancher-node-exporter-1.16.201+up1.16.2.tgz delete mode 100755 assets/rancher-operator-crd/rancher-operator-crd-0.1.000.tgz delete mode 100755 assets/rancher-operator-crd/rancher-operator-crd-0.1.100.tgz delete mode 100755 assets/rancher-operator-crd/rancher-operator-crd-0.1.200.tgz delete mode 100755 assets/rancher-operator-crd/rancher-operator-crd-0.1.300.tgz delete mode 100644 assets/rancher-operator-crd/rancher-operator-crd-0.1.400+up0.1.4.tgz delete mode 100755 assets/rancher-operator/rancher-operator-0.1.000.tgz delete mode 100755 assets/rancher-operator/rancher-operator-0.1.100.tgz delete mode 100755 assets/rancher-operator/rancher-operator-0.1.200.tgz delete mode 100755 assets/rancher-operator/rancher-operator-0.1.300.tgz delete mode 100644 assets/rancher-operator/rancher-operator-0.1.400+up0.1.4.tgz delete mode 100644 assets/rancher-prom2teams/rancher-prom2teams-0.2.0+up0.2.0.tgz delete mode 100644 assets/rancher-prometheus-adapter/rancher-prometheus-adapter-2.12.100+up2.12.1.tgz delete mode 100755 assets/rancher-pushprox/rancher-pushprox-0.1.0.tgz delete mode 100755 assets/rancher-pushprox/rancher-pushprox-0.1.1.tgz delete mode 100755 assets/rancher-pushprox/rancher-pushprox-0.1.2.tgz delete mode 100755 assets/rancher-pushprox/rancher-pushprox-0.1.201.tgz delete mode 100644 assets/rancher-pushprox/rancher-pushprox-0.1.300.tgz delete mode 100644 assets/rancher-pushprox/rancher-pushprox-0.1.400.tgz delete mode 100644 assets/rancher-sachet/rancher-sachet-1.0.100.tgz delete mode 100755 assets/rancher-tracing/rancher-tracing-1.20.001.tgz delete mode 100755 assets/rancher-tracing/rancher-tracing-1.20.002.tgz delete mode 100644 assets/rancher-tracing/rancher-tracing-1.20.100.tgz delete mode 100644 assets/rancher-vsphere-cpi/rancher-vsphere-cpi-1.0.0.tgz delete mode 100755 assets/rancher-vsphere-cpi/rancher-vsphere-cpi-1.0.000.tgz delete mode 100755 assets/rancher-vsphere-csi/rancher-vsphere-csi-2.1.000.tgz delete mode 100644 assets/rancher-vsphere-csi/rancher-vsphere-csi-2.2.0.tgz delete mode 100755 assets/rancher-webhook/rancher-webhook-0.1.0-beta500.tgz delete mode 100755 assets/rancher-webhook/rancher-webhook-0.1.0-beta700.tgz delete mode 100755 assets/rancher-webhook/rancher-webhook-0.1.0-beta900.tgz delete mode 100755 assets/rancher-webhook/rancher-webhook-0.1.0-beta901.tgz delete mode 100644 assets/rancher-webhook/rancher-webhook-0.2.1-alpha+up0.2.0-alpha01.tgz delete mode 100644 assets/rancher-windows-exporter/rancher-windows-exporter-0.1.0.tgz delete mode 100644 assets/rancher-wins-upgrader/rancher-wins-upgrader-0.0.100+up0.0.1.tgz delete mode 100755 assets/rio/rio-0.8.000.tgz delete mode 100755 assets/rio/rio-0.8.001.tgz delete mode 100644 assets/rio/rio-0.8.1.tgz delete mode 100644 assets/system-upgrade-controller/system-upgrade-controller-0.7.1.tgz delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/Chart.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/_helpers.tpl delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/configmap.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/deployment.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/network_policy_allow_all.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/rbac.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/secret.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/templates/validate.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.000/values.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/Chart.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/_helpers.tpl delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/configmap.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/deployment.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/network_policy_allow_all.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/rbac.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/secret.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/templates/validate.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.100/values.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/Chart.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/_helpers.tpl delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/configmap.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/deployment.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/network_policy_allow_all.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/rbac.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/secret.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/templates/validate.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.200/values.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/Chart.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/_helpers.tpl delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/configmap.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/deployment.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/network_policy_allow_all.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/rbac.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/secret.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/templates/validate.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.300/values.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/Chart.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/_helpers.tpl delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/configmap.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/deployment.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/network_policy_allow_all.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/rbac.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/secret.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/serviceaccount.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/templates/validate.yaml delete mode 100755 charts/fleet-agent/fleet-agent/0.3.400/values.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/Chart.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/_helpers.tpl delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/configmap.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/deployment.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/network_policy_allow_all.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/patch_default_serviceaccount.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/rbac.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/secret.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/serviceaccount.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/templates/validate.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.500+up0.3.5/values.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/Chart.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/_helpers.tpl delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/configmap.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/deployment.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/network_policy_allow_all.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/patch_default_serviceaccount.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/rbac.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/secret.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/serviceaccount.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/templates/validate.yaml delete mode 100644 charts/fleet-agent/fleet-agent/0.3.600-rc1+up0.3.6-rc1/values.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.000/Chart.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.000/templates/crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.000/templates/gitjobs-crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.100/Chart.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.100/templates/crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.100/templates/gitjobs-crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.200/Chart.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.200/templates/crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.200/templates/gitjobs-crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.300/Chart.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.300/templates/crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.300/templates/gitjobs-crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.400/Chart.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.400/templates/crds.yaml delete mode 100755 charts/fleet-crd/fleet-crd/0.3.400/templates/gitjobs-crds.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.500+up0.3.5/Chart.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.500+up0.3.5/templates/crds.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.500+up0.3.5/templates/gitjobs-crds.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.600-rc1+up0.3.6-rc1/Chart.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.600-rc1+up0.3.6-rc1/templates/crds.yaml delete mode 100644 charts/fleet-crd/fleet-crd/0.3.600-rc1+up0.3.6-rc1/templates/gitjobs-crds.yaml delete mode 100755 charts/fleet/fleet/0.3.000/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/.helmignore delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/clusterrole.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/service.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.000/charts/gitjob/values.yaml delete mode 100755 charts/fleet/fleet/0.3.000/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.000/templates/configmap.yaml delete mode 100755 charts/fleet/fleet/0.3.000/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.000/templates/rbac.yaml delete mode 100755 charts/fleet/fleet/0.3.000/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.000/values.yaml delete mode 100755 charts/fleet/fleet/0.3.100/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/.helmignore delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/clusterrole.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/service.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.100/charts/gitjob/values.yaml delete mode 100755 charts/fleet/fleet/0.3.100/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.100/templates/configmap.yaml delete mode 100755 charts/fleet/fleet/0.3.100/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.100/templates/rbac.yaml delete mode 100755 charts/fleet/fleet/0.3.100/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.100/values.yaml delete mode 100755 charts/fleet/fleet/0.3.200/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/.helmignore delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/clusterrole.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/service.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.200/charts/gitjob/values.yaml delete mode 100755 charts/fleet/fleet/0.3.200/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.200/templates/configmap.yaml delete mode 100755 charts/fleet/fleet/0.3.200/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.200/templates/rbac.yaml delete mode 100755 charts/fleet/fleet/0.3.200/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.200/values.yaml delete mode 100755 charts/fleet/fleet/0.3.300/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/.helmignore delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrole.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/service.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.300/charts/gitjob/values.yaml delete mode 100755 charts/fleet/fleet/0.3.300/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.300/templates/configmap.yaml delete mode 100755 charts/fleet/fleet/0.3.300/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.300/templates/rbac.yaml delete mode 100755 charts/fleet/fleet/0.3.300/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.300/values.yaml delete mode 100755 charts/fleet/fleet/0.3.400/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/.helmignore delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/Chart.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrole.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/service.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.400/charts/gitjob/values.yaml delete mode 100755 charts/fleet/fleet/0.3.400/templates/_helpers.tpl delete mode 100755 charts/fleet/fleet/0.3.400/templates/configmap.yaml delete mode 100755 charts/fleet/fleet/0.3.400/templates/deployment.yaml delete mode 100755 charts/fleet/fleet/0.3.400/templates/rbac.yaml delete mode 100755 charts/fleet/fleet/0.3.400/templates/serviceaccount.yaml delete mode 100755 charts/fleet/fleet/0.3.400/values.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/Chart.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/.helmignore delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/Chart.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/_helpers.tpl delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrole.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/deployment.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/service.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/serviceaccount.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/values.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/templates/_helpers.tpl delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/templates/configmap.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/templates/deployment.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/templates/rbac.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/templates/serviceaccount.yaml delete mode 100644 charts/fleet/fleet/0.3.500+up0.3.5/values.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/Chart.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/.helmignore delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/Chart.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/_helpers.tpl delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrole.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrolebinding.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/deployment.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/service.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/serviceaccount.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/values.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/_helpers.tpl delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/configmap.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/deployment.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/rbac.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/serviceaccount.yaml delete mode 100644 charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/values.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.0.200/Chart.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.0.200/README.md delete mode 100755 charts/longhorn/longhorn-crd/1.0.200/templates/crds.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.0.201/Chart.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.0.201/README.md delete mode 100755 charts/longhorn/longhorn-crd/1.0.201/templates/crds.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.1.000/Chart.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.1.000/README.md delete mode 100755 charts/longhorn/longhorn-crd/1.1.000/templates/crds.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.1.001/Chart.yaml delete mode 100755 charts/longhorn/longhorn-crd/1.1.001/README.md delete mode 100755 charts/longhorn/longhorn-crd/1.1.001/templates/crds.yaml delete mode 100644 charts/longhorn/longhorn-crd/1.1.100+up1.1.1/Chart.yaml delete mode 100644 charts/longhorn/longhorn-crd/1.1.100+up1.1.1/README.md delete mode 100644 charts/longhorn/longhorn-crd/1.1.100+up1.1.1/templates/crds.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/.helmignore delete mode 100755 charts/longhorn/longhorn/1.0.200/Chart.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/README.md delete mode 100755 charts/longhorn/longhorn/1.0.200/app-readme.md delete mode 100755 charts/longhorn/longhorn/1.0.200/questions.yml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/NOTES.txt delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/_helpers.tpl delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/clusterrole.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/clusterrolebinding.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/daemonset-sa.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/default-setting.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/deployment-driver.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/deployment-ui.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/ingress.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/postupgrade-job.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/psp.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/registry-secret.yml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/serviceaccount.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/storageclass.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/tls-secrets.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/uninstall-job.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/userroles.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/templates/validate-install-crd.yaml delete mode 100755 charts/longhorn/longhorn/1.0.200/values.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/.helmignore delete mode 100755 charts/longhorn/longhorn/1.0.201/Chart.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/README.md delete mode 100755 charts/longhorn/longhorn/1.0.201/app-readme.md delete mode 100755 charts/longhorn/longhorn/1.0.201/questions.yml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/NOTES.txt delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/_helpers.tpl delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/clusterrole.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/clusterrolebinding.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/daemonset-sa.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/default-setting.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/deployment-driver.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/deployment-ui.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/ingress.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/postupgrade-job.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/psp.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/registry-secret.yml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/serviceaccount.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/storageclass.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/tls-secrets.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/uninstall-job.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/userroles.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/templates/validate-install-crd.yaml delete mode 100755 charts/longhorn/longhorn/1.0.201/values.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/.helmignore delete mode 100755 charts/longhorn/longhorn/1.1.000/Chart.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/README.md delete mode 100755 charts/longhorn/longhorn/1.1.000/app-readme.md delete mode 100755 charts/longhorn/longhorn/1.1.000/questions.yml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/NOTES.txt delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/_helpers.tpl delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/clusterrole.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/clusterrolebinding.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/daemonset-sa.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/default-setting.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/deployment-driver.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/deployment-ui.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/ingress.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/postupgrade-job.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/psp.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/registry-secret.yml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/serviceaccount.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/storageclass.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/tls-secrets.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/uninstall-job.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/userroles.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/templates/validate-install-crd.yaml delete mode 100755 charts/longhorn/longhorn/1.1.000/values.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/.helmignore delete mode 100755 charts/longhorn/longhorn/1.1.001/Chart.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/README.md delete mode 100755 charts/longhorn/longhorn/1.1.001/app-readme.md delete mode 100755 charts/longhorn/longhorn/1.1.001/questions.yml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/NOTES.txt delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/_helpers.tpl delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/clusterrole.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/clusterrolebinding.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/daemonset-sa.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/default-setting.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/deployment-driver.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/deployment-ui.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/ingress.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/postupgrade-job.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/psp.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/registry-secret.yml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/serviceaccount.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/storageclass.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/tls-secrets.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/uninstall-job.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/userroles.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/templates/validate-install-crd.yaml delete mode 100755 charts/longhorn/longhorn/1.1.001/values.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/.helmignore delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/Chart.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/README.md delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/app-readme.md delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/questions.yml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/NOTES.txt delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/_helpers.tpl delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrole.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrolebinding.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/daemonset-sa.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/default-setting.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-driver.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-ui.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/ingress.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/postupgrade-job.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/psp.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/registry-secret.yml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/serviceaccount.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/storageclass.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/tls-secrets.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/uninstall-job.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/userroles.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/templates/validate-install-crd.yaml delete mode 100644 charts/longhorn/longhorn/1.1.100+up1.1.1/values.yaml delete mode 100644 charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/Chart.yaml delete mode 100644 charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/templates/crds.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/Chart.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/NOTES.txt delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/_helpers.tpl delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrole.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/deployment.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/serviceaccount.yaml delete mode 100644 charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/values.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/Chart.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/README.md delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/app-readme.md delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/.helmignore delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/Chart.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/files/teams.j2 delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/NOTES.txt delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/_helpers.tpl delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/configmap.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/deployment.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/psp.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/role.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/rolebinding.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service-account.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/values.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/.helmignore delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/Chart.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/files/template.tmpl delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/NOTES.txt delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/_helpers.tpl delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/configmap-pre-install.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/deployment.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/psp.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/role.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/rolebinding.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service-account.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/values.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/questions.yml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/NOTES.txt delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/_helpers.tpl delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/cluster-role.yaml delete mode 100644 charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/values.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/Chart.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/README.md delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/backup.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/resourceset.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/restore.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/Chart.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/README.md delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/backup.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/resourceset.yaml delete mode 100644 charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/restore.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.200/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.200/README.md delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.200/templates/backup.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.200/templates/resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.200/templates/restore.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.201/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.201/README.md delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.201/templates/backup.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.201/templates/resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.201/templates/restore.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.300/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.300/README.md delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.300/templates/backup.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.300/templates/resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.300/templates/restore.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.301/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.301/README.md delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.301/templates/backup.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.301/templates/resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup-crd/1.0.301/templates/restore.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/README.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/_helpers.tpl delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/deployment.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/pvc.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/rancher-resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/s3-secret.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/serviceaccount.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.200/values.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/README.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/app-readme.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/_helpers.tpl delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/deployment.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/pvc.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/rancher-resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/s3-secret.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/serviceaccount.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.201/values.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/README.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/app-readme.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/_helpers.tpl delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/deployment.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/pvc.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/rancher-resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/s3-secret.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/serviceaccount.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.300/values.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/Chart.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/README.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/app-readme.md delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/_helpers.tpl delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/deployment.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/pvc.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/rancher-resourceset.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/s3-secret.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/serviceaccount.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-backup/rancher-backup/1.0.301/values.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/Chart.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/README.md delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/app-readme.md delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/eks.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/fleet.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/gke.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher-operator.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/_helpers.tpl delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/deployment.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/pvc.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/rancher-resourceset.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/s3-secret.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/serviceaccount.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/values.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/Chart.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/README.md delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/app-readme.md delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/aks.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/eks.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/fleet.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/gke.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher-operator.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/_helpers.tpl delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/deployment.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/pvc.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/rancher-resourceset.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/s3-secret.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/serviceaccount.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/values.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscan.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanbenchmark.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanprofile.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanreport.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscan.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanbenchmark.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanprofile.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanreport.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscan.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanbenchmark.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanprofile.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanreport.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscan.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanbenchmark.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanprofile.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanreport.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscan.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanbenchmark.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanprofile.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanreport.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscan.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanbenchmark.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanprofile.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanreport.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscan.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanbenchmark.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanprofile.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanreport.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/_helpers.tpl delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-cis-1.5.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-eks-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-gke-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/cis-roles.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/configmap.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/deployment.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/network_policy_allow_all.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/rbac.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-cis-1.5.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofileeks.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofilegke.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/values.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/app-readme.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/_helpers.tpl delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-cis-1.5.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-eks-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-gke-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/cis-roles.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/configmap.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/deployment.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/network_policy_allow_all.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/rbac.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-cis-1.5.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofileeks.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofilegke.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/values.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/app-readme.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/_helpers.tpl delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/alertingrule.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.5.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.6.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-eks-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-gke-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/cis-roles.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/configmap.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/deployment.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/network_policy_allow_all.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/rbac.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.5.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.6.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofileeks.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofilegke.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/values.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/Chart.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/README.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/app-readme.md delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/_helpers.tpl delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/alertingrule.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.5.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.6.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-eks-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-gke-1.0.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/cis-roles.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/configmap.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/deployment.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/network_policy_allow_all.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/patch_default_serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/rbac.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.5.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.6.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-hardened.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-permissive.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-hardened.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-permissive.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofileeks.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofilegke.yml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/serviceaccount.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/values.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/app-readme.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/_helpers.tpl delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/alertingrule.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.5.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-eks-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-gke-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/cis-roles.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/configmap.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/deployment.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/network_policy_allow_all.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/patch_default_serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/rbac.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.5.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofileeks.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofilegke.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/values.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/app-readme.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/_helpers.tpl delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/alertingrule.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.5.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-eks-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-gke-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/cis-roles.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/configmap.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/deployment.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/network_policy_allow_all.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/patch_default_serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/rbac.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.5.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofileeks.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofilegke.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/values.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/Chart.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/README.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/app-readme.md delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/_helpers.tpl delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/alertingrule.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.5.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-eks-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-gke-1.0.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/cis-roles.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/configmap.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/deployment.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/network_policy_allow_all.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/patch_default_serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/rbac.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.5.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.6.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-hardened.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-permissive.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-hardened.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-permissive.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofileeks.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofilegke.yml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/serviceaccount.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/values.yaml delete mode 100644 charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/Chart.yaml delete mode 100644 charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/templates/crds.yaml delete mode 100644 charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml delete mode 100644 charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/Chart.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/NOTES.txt delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/_helpers.tpl delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrole.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/deployment.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/serviceaccount.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/values.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml delete mode 100644 charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/.helmignore delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/Chart.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/app-README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/questions.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/NOTES.txt delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/_helpers.tpl delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/admissionregistration.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrole.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/deployment.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/issuer.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/service.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/serviceaccount.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/servicemonitor.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/admissionregistration_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrole_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrolebinding_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/deployment_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/issuer_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/service_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/serviceaccount_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/servicemonitor_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/values.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/.helmignore delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/Chart.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/app-README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/questions.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/NOTES.txt delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/_helpers.tpl delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/admissionregistration.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrole.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/deployment.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/issuer.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/service.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/serviceaccount.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/servicemonitor.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/admissionregistration_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrole_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrolebinding_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/deployment_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/issuer_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/service_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/serviceaccount_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/servicemonitor_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/values.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/.helmignore delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/Chart.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/README.md delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/app-README.md delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/questions.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/NOTES.txt delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/_helpers.tpl delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/admissionregistration.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrole.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/deployment.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/issuer.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/service.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/serviceaccount.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/servicemonitor.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/admissionregistration_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrole_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrolebinding_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/deployment_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/issuer_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/service_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/serviceaccount_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/servicemonitor_test.yaml delete mode 100644 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/values.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/.helmignore delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/Chart.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/app-README.md delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/questions.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/NOTES.txt delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/_helpers.tpl delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/admissionregistration.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrole.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/deployment.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/issuer.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/service.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/serviceaccount.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/servicemonitor.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/admissionregistration_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrole_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrolebinding_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/deployment_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/issuer_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/service_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/serviceaccount_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/servicemonitor_test.yaml delete mode 100755 charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/config-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constraintpodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplate-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplatepodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/config-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constraintpodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplate-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplatepodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/config-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constraintpodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplate-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/jobs.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/manifest.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/rbac.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/config-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constraintpodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplate-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/jobs.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/manifest.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/rbac.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/values.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/Chart.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/README.md delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/config-customresourcedefinition.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constraintpodstatus-customresourcedefinition.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplate-customresourcedefinition.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/_helpers.tpl delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/jobs.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/manifest.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/rbac.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/.helmignore delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/CHANGELOG.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/allowedrepos.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-admin-serviceaccount.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-audit-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-controller-manager-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-clusterrole.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-role.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-rolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-server-cert-secret.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-service-service.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/requiredlabels.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/.helmignore delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/CHANGELOG.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/app-readme.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/allowedrepos.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-admin-serviceaccount.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-audit-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-controller-manager-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-clusterrole.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-role.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-server-cert-secret.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-service-service.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/requiredlabels.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/.helmignore delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/CHANGELOG.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/app-readme.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/allowedrepos.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-podsecuritypolicy.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-serviceaccount.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-audit-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-controller-manager-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-clusterrole.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-role.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-server-cert-secret.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-service-service.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/requiredlabels.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/values.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/.helmignore delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/CHANGELOG.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/Chart.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/README.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/app-readme.md delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/_helpers.tpl delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/allowedrepos.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-podsecuritypolicy.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-serviceaccount.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-audit-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-controller-manager-deployment.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-clusterrole.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-role.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-rolebinding.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-server-cert-secret.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-service-service.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/requiredlabels.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/values.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/.helmignore delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/CHANGELOG.md delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/Chart.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/README.md delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/app-readme.md delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/_helpers.tpl delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/allowedrepos.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-podsecuritypolicy.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-serviceaccount.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-audit-deployment.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-controller-manager-deployment.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-clusterrole.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-role.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-rolebinding.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-server-cert-secret.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-service-service.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/requiredlabels.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/values.yaml delete mode 100644 charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml delete mode 100644 charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml delete mode 100644 charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/.helmignore delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/Chart.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/README.md delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/dashboards/custom-dashboard.json delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/NOTES.txt delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_helpers.tpl delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_pod.tpl delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrole.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap-dashboard-provider.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/dashboards-json-configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/deployment.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/headless-service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-deployment.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-network-policy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/ingress.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/nginx-config.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/poddisruptionbudget.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/podsecuritypolicy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/pvc.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/role.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/rolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret-env.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/serviceaccount.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/servicemonitor.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/statefulset.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-podsecuritypolicy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-role.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-rolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-serviceaccount.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/values.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/.helmignore delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/Chart.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/README.md delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/dashboards/custom-dashboard.json delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/NOTES.txt delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_helpers.tpl delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_pod.tpl delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrole.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap-dashboard-provider.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/dashboards-json-configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/deployment.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/headless-service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-deployment.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-network-policy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/ingress.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/nginx-config.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/poddisruptionbudget.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/podsecuritypolicy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/pvc.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/role.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/rolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret-env.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/service.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/serviceaccount.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/servicemonitor.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/statefulset.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-configmap.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-podsecuritypolicy.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-role.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-rolebinding.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-serviceaccount.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test.yaml delete mode 100644 charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/values.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/Chart.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/README.md delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/app-readme.md delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/Chart.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/NOTES.txt delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/cabundle.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/configmap.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/envoy.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/go.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/kiali.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-1.1.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-x.y.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/nodejs.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/quarkus.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-tomcat.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/thorntail.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/tomcat.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-client.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-eventbus.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-jvm.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-pool.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-server.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/deployment.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/hpa.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/ingress.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/oauth.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/psp.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-controlplane.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-viewer.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding-controlplane.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/route.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/service.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/serviceaccount.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/web-root-configmap.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/values.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/.helmignore delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/Chart.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/README.md delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_affinity.tpl delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/deployment.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/psp.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/pvc.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/service.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/values.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/configs/istio-base.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/requirements.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/samples/overlay-example.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/admin-role.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/base-config-map.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrole.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/edit-role.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-cni-psp.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-job.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-psp.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-psp.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-uninstall-job.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/overlay-config-map.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/service-monitors.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/serviceaccount.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/view-role.yaml delete mode 100644 charts/rancher-istio-1.8/rancher-istio/1.8.601/values.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/Chart.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/README.md delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/app-readme.md delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/Chart.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/NOTES.txt delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/cabundle.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/configmap.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/envoy.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/go.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/kiali.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-1.1.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-x.y.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/nodejs.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/quarkus.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-tomcat.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/thorntail.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/tomcat.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-client.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-eventbus.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-jvm.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-pool.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-server.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/deployment.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/hpa.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/ingress.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/oauth.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/psp.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-controlplane.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-viewer.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding-controlplane.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/route.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/service.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/serviceaccount.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/web-root-configmap.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/values.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/.helmignore delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/Chart.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/README.md delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_affinity.tpl delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/deployment.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/psp.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/pvc.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/service.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/values.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/configs/istio-base.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/requirements.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/samples/overlay-example.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/_helpers.tpl delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/admin-role.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/base-config-map.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrole.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/edit-role.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-cni-psp.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-job.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-psp.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-psp.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-uninstall-job.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/overlay-config-map.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/service-monitors.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/serviceaccount.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/view-role.yaml delete mode 100644 charts/rancher-istio-1.9/rancher-istio/1.9.501/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/NOTES.txt delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/cabundle.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/go.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/ingess.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/oauth.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role-viewer.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/rolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/route.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/configs/istio-base.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/requirements.lock delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/requirements.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/samples/overlay-example.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/admin-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/base-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrole.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/edit-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/istio-install-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/istio-uninstall-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/overlay-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/service-monitors.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/templates/view-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.100/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/app-readme.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/NOTES.txt delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/cabundle.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/go.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/ingess.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/oauth.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role-viewer.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/rolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/route.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/configs/istio-base.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/requirements.lock delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/requirements.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/samples/overlay-example.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/admin-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/base-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrole.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/edit-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/istio-install-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/istio-uninstall-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/overlay-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/service-monitors.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/templates/view-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.300/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/app-readme.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/NOTES.txt delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/cabundle.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/go.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/ingess.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/oauth.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role-viewer.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/rolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/route.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/.helmignore delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_affinity.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/pvc.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/configs/istio-base.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/requirements.lock delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/requirements.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/samples/overlay-example.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/admin-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/base-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrole.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/edit-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/istio-install-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/istio-uninstall-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/overlay-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/service-monitors.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/templates/view-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.7.301/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/app-readme.md delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/NOTES.txt delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/cabundle.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/go.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/hpa.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/ingress.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/oauth.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-controlplane.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-viewer.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding-controlplane.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/route.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/.helmignore delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/Chart.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/README.md delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_affinity.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/deployment.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/pvc.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/service.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/values.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/configs/istio-base.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/requirements.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/samples/overlay-example.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/_helpers.tpl delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/admin-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/base-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrole.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/edit-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/istio-install-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/istio-uninstall-job.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/overlay-config-map.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/service-monitors.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/serviceaccount.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/templates/view-role.yaml delete mode 100755 charts/rancher-istio/rancher-istio/1.8.300/values.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/README.md delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/templates/crds.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/README.md delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/templates/crds.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/README.md delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/templates/crds.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/README.md delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/templates/crds.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/Chart.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/README.md delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/templates/crds.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/NOTES.txt delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/_helpers.tpl delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/cabundle.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/go.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/deployment.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/ingess.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/oauth.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role-viewer.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/rolebinding.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/route.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/service.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/serviceaccount.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.23.001/values.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/NOTES.txt delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/_helpers.tpl delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/cabundle.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/go.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/deployment.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/ingess.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/oauth.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role-viewer.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/rolebinding.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/route.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/service.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/serviceaccount.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.001/values.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/NOTES.txt delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/_helpers.tpl delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/cabundle.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/go.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/deployment.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/ingess.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/oauth.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role-viewer.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/rolebinding.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/route.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/service.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/serviceaccount.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.24.003/values.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/Chart.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/NOTES.txt delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/_helpers.tpl delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/cabundle.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/envoy.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/go.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/kiali.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-1.1.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-x.y.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/nodejs.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/quarkus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/thorntail.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/tomcat.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-client.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-eventbus.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-jvm.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-pool.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-server.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/deployment.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/hpa.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/ingress.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/oauth.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-controlplane.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-viewer.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding-controlplane.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/route.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/service.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/serviceaccount.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/web-root-configmap.yaml delete mode 100755 charts/rancher-kiali-server/rancher-kiali-server/1.29.000/values.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/Chart.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/NOTES.txt delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/_helpers.tpl delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/cabundle.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/configmap.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/envoy.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/go.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/kiali.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.1-jvm.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-1.1.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-x.y.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/nodejs.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/quarkus.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm-pool.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-tomcat.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/thorntail.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/tomcat.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-client.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-eventbus.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-jvm.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-pool.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-server.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/deployment.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/hpa.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/ingress.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/oauth.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/psp.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-controlplane.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-viewer.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding-controlplane.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/route.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/service.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/serviceaccount.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/web-root-configmap.yaml delete mode 100644 charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/values.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/.helmignore delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/Chart.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/LICENSE delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/OWNERS delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/README.md delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/NOTES.txt delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/_helpers.tpl delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/deployment.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/kubeconfig-secret.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/pdb.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/podsecuritypolicy.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrole.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/role.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/rolebinding.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/service.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/serviceaccount.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/servicemonitor.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-role.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-rolebinding.yaml delete mode 100644 charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/values.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/Chart.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/README.md delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_flows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/README.md delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_flows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_loggings.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_outputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/README.md delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_flows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_loggings.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_outputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/README.md delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_flows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_loggings.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_outputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/README.md delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_flows.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_loggings.yaml delete mode 100755 charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_outputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/Chart.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/README.md delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_flows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/Chart.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/README.md delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusterflows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusteroutputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_flows.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_loggings.yaml delete mode 100644 charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_outputs.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/.helmignore delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/Chart.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/README.md delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/app-readme.md delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/NOTES.txt delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/_helpers.tpl delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrole.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/crds.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/deployment.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/aks/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/eks/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/gke/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/kube-audit/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/root/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/psp.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/service.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceMonitor.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceaccount.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/userroles.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/values.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/.helmignore delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/README.md delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/app-readme.md delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/NOTES.txt delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/_helpers.tpl delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrole.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/crds.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/deployment.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/eks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-systemd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-containers-rke.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-rke.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-containers.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-journald.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/root/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/psp.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/service.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/serviceMonitor.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/serviceaccount.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/userroles.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.000/values.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/.helmignore delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/README.md delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/app-readme.md delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/NOTES.txt delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/_helpers.tpl delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrole.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/crds.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/deployment.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/eks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-systemd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/logging-rke.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-containers.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-journald.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/root/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/psp.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/service.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/serviceMonitor.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/serviceaccount.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/userroles.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.6.001/values.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/.helmignore delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/README.md delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/app-readme.md delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/NOTES.txt delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/_helpers.tpl delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrole.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/crds.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/deployment.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/aks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/eks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/gke/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-systemd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/logging-rke.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-containers.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-journald.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/root/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/psp.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/service.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/serviceMonitor.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/serviceaccount.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/userroles.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.8.201/values.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/.helmignore delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/Chart.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/README.md delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/app-readme.md delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/NOTES.txt delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/_helpers.tpl delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrole.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/crds.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/deployment.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/aks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/eks/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/gke/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-systemd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/logging-rke.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/configmap.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/daemonset.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-containers.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-journald.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/root/logging.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/psp.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/service.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/serviceMonitor.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/serviceaccount.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/userroles.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install.yaml delete mode 100755 charts/rancher-logging/rancher-logging/3.9.000/values.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/.helmignore delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/Chart.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/README.md delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/app-readme.md delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/NOTES.txt delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/_helpers.tpl delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrole.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/crds.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/deployment.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/aks/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/eks/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/gke/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-openrc.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-systemd.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/kube-audit/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/configmap.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/daemonset.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/logging-rke2-containers.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/root/logging.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/psp.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/service.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceMonitor.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceaccount.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/userroles.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install.yaml delete mode 100644 charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagerconfigs.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagers.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-podmonitors.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-probes.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheuses.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheusrules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-servicemonitors.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-thanosrulers.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/jobs.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/manifest.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-podmonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheusrules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-thanosrulers.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/jobs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/manifest.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-podmonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheusrules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-thanosrulers.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/jobs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/manifest.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-podmonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheusrules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-thanosrulers.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/jobs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/manifest.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-podmonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheusrules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-thanosrulers.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/jobs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/manifest.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CHANGELOG.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CONTRIBUTING.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/app-README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/dashboards/custom-dashboard.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/NOTES.txt delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_pod.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/deployment.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/headless-service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-deployment.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-network-policy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/ingress.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/nginx-config.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/pvc.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret-env.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/statefulset.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-configmap.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/LICENSE delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/NOTES.txt delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/deployment.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/kubeconfig-secret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/pdb.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/NOTES.txt delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/certmanager.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/configmap.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/deployment.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/pdb.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/secret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/monitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/.helmignore delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/Chart.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/README.md delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/check-wins-version.ps1 delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/proxy-entry.ps1 delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/run.ps1 delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/configmap.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/daemonset.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/rbac.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/values.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/nginx.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/request-handling-performance.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster-nodes.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/home/rancher-default-home.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd-nodes.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components-nodes.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node-detail.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod-containers.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload-pods.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload.json delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/NOTES.txt delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/_helpers.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/alertmanager.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/cleanupSecret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingress.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingressperreplica.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/podDisruptionBudget.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/secret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceperreplica.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/endpoints.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/endpoints.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kubelet/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/node-exporter/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmap-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmaps-datasources.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/statefulset.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/etcd.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-node-rsrc-use.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-cluster.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-namespace.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-pod.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workload.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/nodes.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/persistentvolumesusage.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/pods.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/statefulset.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/namespaces.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/certmanager.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/deployment.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/_rules.tpl delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalPrometheusRules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingress.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressThanosSidecar.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressperreplica.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/nginx-config.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podDisruptionBudget.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podmonitors.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/prometheus.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/etcd.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-network.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/alertmanager.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/etcd.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/general.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/k8s.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-apiserver.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-scheduler.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-absent.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-apps.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-resources.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-storage.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-system.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-network.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-time.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus-operator.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus.rules.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceThanosSidecar.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceaccount.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitors.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceperreplica.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/clusterrole.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/config-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboard-role.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/hardened.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/validate-install-crd.yaml delete mode 100644 charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/CHANGELOG.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/CONTRIBUTING.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/app-README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/dashboards/custom-dashboard.json delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/_pod.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/headless-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/pvc.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/secret-env.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/templates/tests/test.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/grafana/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/kube-state-metrics/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-delegator-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-reader-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-resource-reader-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-service-account.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiserver-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/custom-metrics-resource-reader-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/hpa-custom-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/hpa-external-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-adapter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/monitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/prometheus-node-exporter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/charts/rancher-pushprox/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/requirements.lock delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/requirements.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/cleanupSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/psp-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/psp-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/alertmanager/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/core-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/core-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-controller-manager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-etcd/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-etcd/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-proxy/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-proxy/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-scheduler/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/kubelet/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/exporters/node-exporter/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/configmap-dashboards.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/configmaps-datasources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/pods.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/dashboards/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/namespaces.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/grafana/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus-operator/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/additionalPrometheusRules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/ingressThanosSidecar.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/podmonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kubernetes-absent.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/node-time.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/rules/prometheus.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/servicemonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/prometheus/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/rancher-monitoring/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/rancher-monitoring/config-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/rancher-monitoring/dashboard-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/rancher-monitoring/default-dashboard.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.200/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/CHANGELOG.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/CONTRIBUTING.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/app-README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/dashboards/custom-dashboard.json delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/_pod.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/headless-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/pvc.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/secret-env.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/templates/tests/test.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/grafana/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/kube-state-metrics/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-delegator-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-reader-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-resource-reader-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-service-account.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiserver-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/custom-metrics-resource-reader-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/hpa-custom-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/hpa-external-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-adapter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/monitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/prometheus-node-exporter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/charts/rancher-pushprox/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/requirements.lock delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/requirements.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/cleanupSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/psp-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/psp-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/alertmanager/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/core-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/core-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-controller-manager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-etcd/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-etcd/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-proxy/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-proxy/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-scheduler/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/kubelet/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/exporters/node-exporter/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/configmap-dashboards.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/configmaps-datasources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/pods.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/dashboards/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/namespaces.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/grafana/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus-operator/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/additionalPrometheusRules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/ingressThanosSidecar.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/podmonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kubernetes-absent.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/node-time.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/rules/prometheus.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/servicemonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/prometheus/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/rancher-monitoring/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/rancher-monitoring/config-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/rancher-monitoring/dashboard-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/rancher-monitoring/default-dashboard.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/rancher-monitoring/hardened.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.201/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/CHANGELOG.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/CONTRIBUTING.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/app-README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/dashboards/custom-dashboard.json delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/_pod.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/headless-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/pvc.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/secret-env.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/templates/tests/test.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/grafana/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/kube-state-metrics/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-delegator-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-reader-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-resource-reader-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-service-account.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiserver-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/custom-metrics-resource-reader-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/hpa-custom-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/hpa-external-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-adapter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/monitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/prometheus-node-exporter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/charts/rancher-pushprox/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/requirements.lock delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/requirements.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/cleanupSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/psp-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/psp-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/alertmanager/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/core-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/core-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-controller-manager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-etcd/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-etcd/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-proxy/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-proxy/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-scheduler/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/kubelet/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/exporters/node-exporter/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/configmap-dashboards.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/configmaps-datasources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/pods.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/dashboards/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/namespaces.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/grafana/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus-operator/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/additionalPrometheusRules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/ingressThanosSidecar.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/podmonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kubernetes-absent.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/node-time.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/rules/prometheus.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/servicemonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/prometheus/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/rancher-monitoring/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/rancher-monitoring/config-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/rancher-monitoring/dashboard-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/rancher-monitoring/default-dashboard.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/rancher-monitoring/hardened.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.202/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/CHANGELOG.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/CONTRIBUTING.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/app-README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/dashboards/custom-dashboard.json delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/_pod.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/configmap-dashboard-provider.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/dashboards-json-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/headless-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/poddisruptionbudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/pvc.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/secret-env.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test-podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test-serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/templates/tests/test.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/grafana/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/k3sServer/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/podsecuritypolicy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/stsdiscovery-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kube-state-metrics/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmControllerManager/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmEtcd/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmProxy/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/kubeAdmScheduler/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-delegator-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-auth-reader-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-pdb.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-resource-reader-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-service-account.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiserver-service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-configmap.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/custom-metrics-resource-reader-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/hpa-custom-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/hpa-external-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/templates/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-adapter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/daemonset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/monitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/templates/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/prometheus-node-exporter/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2ControllerManager/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Etcd/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Proxy/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rke2Scheduler/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeControllerManager/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeEtcd/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeProxy/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/.helmignore delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/Chart.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/README.md delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/charts/rkeScheduler/values.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/requirements.lock delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/requirements.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/NOTES.txt delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/_helpers.tpl delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/alertmanager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/cleanupSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/psp-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/psp-rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/secret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/alertmanager/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/core-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/core-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-api-server/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-controller-manager/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-controller-manager/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-controller-manager/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-dns/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-dns/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-etcd/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-etcd/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-etcd/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-proxy/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-proxy/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-proxy/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-scheduler/endpoints.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-scheduler/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-scheduler/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kube-state-metrics/serviceMonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/kubelet/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/exporters/node-exporter/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/configmap-dashboards.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/configmaps-datasources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/cluster-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-coredns.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-node.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/namespace-by-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/namespace-by-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/pod-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/proxy.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards-1.14/workload-total.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-node-rsrc-use.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-resources-cluster.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-resources-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-resources-pod.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-resources-workload.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/nodes.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/persistentvolumesusage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/pods.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/dashboards/statefulset.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/namespaces.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/grafana/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/deployment.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus-operator/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/additionalAlertRelabelConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/additionalAlertmanagerConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/additionalPrometheusRules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/additionalScrapeConfigs.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/ingress.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/ingressThanosSidecar.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/ingressperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/nginx-config.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/podDisruptionBudget.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/podmonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/psp-clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/psp-clusterrolebinding.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/psp.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kube-state-metrics.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubelet.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/node-exporter.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/node-exporter.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules-1.14/prometheus.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/alertmanager.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/etcd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/general.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/k8s.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kube-apiserver.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kube-scheduler.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kubernetes-absent.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kubernetes-apps.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kubernetes-resources.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kubernetes-storage.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/kubernetes-system.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/node-network.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/node-time.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/node.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/prometheus-operator.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/rules/prometheus.rules.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/service.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/serviceaccount.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/servicemonitor.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/servicemonitors.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/prometheus/serviceperreplica.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/rancher-monitoring/clusterrole.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/rancher-monitoring/config-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/rancher-monitoring/dashboard-role.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/rancher-monitoring/default-dashboard.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/rancher-monitoring/hardened.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/templates/validate-install-crd.yaml delete mode 100755 charts/rancher-monitoring/rancher-monitoring/9.4.203/values.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/.helmignore delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/Chart.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/OWNERS delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/README.md delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/ci/port-values.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/NOTES.txt delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/_helpers.tpl delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/daemonset.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/endpoints.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/monitor.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/psp-clusterrole.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/psp-clusterrolebinding.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/psp.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/service.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/templates/serviceaccount.yaml delete mode 100644 charts/rancher-node-exporter/rancher-node-exporter/1.16.201+up1.16.2/values.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.000/Chart.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.000/templates/crds.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.100/Chart.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.100/templates/crds.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.200/Chart.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.200/templates/crds.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.300/Chart.yaml delete mode 100755 charts/rancher-operator-crd/rancher-operator-crd/0.1.300/templates/crds.yaml delete mode 100644 charts/rancher-operator-crd/rancher-operator-crd/0.1.400+up0.1.4/Chart.yaml delete mode 100644 charts/rancher-operator-crd/rancher-operator-crd/0.1.400+up0.1.4/templates/crds.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/Chart.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/templates/_helpers.tpl delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/templates/deployment.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/templates/rbac.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/templates/serviceaccount.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.000/values.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/Chart.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/templates/_helpers.tpl delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/templates/deployment.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/templates/rbac.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/templates/serviceaccount.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.100/values.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/Chart.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/templates/_helpers.tpl delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/templates/deployment.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/templates/rbac.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/templates/serviceaccount.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.200/values.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/Chart.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/templates/_helpers.tpl delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/templates/deployment.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/templates/rbac.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/templates/serviceaccount.yaml delete mode 100755 charts/rancher-operator/rancher-operator/0.1.300/values.yaml delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/Chart.yaml delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/templates/_helpers.tpl delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/templates/deployment.yaml delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/templates/rbac.yaml delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/templates/serviceaccount.yaml delete mode 100644 charts/rancher-operator/rancher-operator/0.1.400+up0.1.4/values.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/.helmignore delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/Chart.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/files/teams.j2 delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/NOTES.txt delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/_helpers.tpl delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/configmap.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/deployment.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/psp.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/role.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/rolebinding.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/service-account.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/templates/service.yaml delete mode 100644 charts/rancher-prom2teams/rancher-prom2teams/0.2.0+up0.2.0/values.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/.helmignore delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/Chart.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/README.md delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/ci/default-values.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/ci/external-rules-values.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/NOTES.txt delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/_helpers.tpl delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/certmanager.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/cluster-role-binding-auth-delegator.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/cluster-role-binding-resource-reader.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/cluster-role-resource-reader.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/configmap.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/custom-metrics-apiservice.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/custom-metrics-cluster-role-binding-hpa.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/custom-metrics-cluster-role.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/deployment.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/external-metrics-apiservice.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/external-metrics-cluster-role-binding-hpa.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/external-metrics-cluster-role.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/pdb.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/psp.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/resource-metrics-apiservice.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/resource-metrics-cluster-role-binding.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/resource-metrics-cluster-role.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/role-binding-auth-reader.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/secret.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/service.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/templates/serviceaccount.yaml delete mode 100644 charts/rancher-prometheus-adapter/rancher-prometheus-adapter/2.12.100+up2.12.1/values.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/.helmignore delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/Chart.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/README.md delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/templates/_helpers.tpl delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.0/values.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/.helmignore delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/Chart.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/README.md delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/templates/_helpers.tpl delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.1/values.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/.helmignore delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/Chart.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/README.md delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/_helpers.tpl delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.2/values.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/.helmignore delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/Chart.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/README.md delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/_helpers.tpl delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/pushprox-clients-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/pushprox-clients.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/pushprox-proxy-rbac.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/pushprox-proxy.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/templates/pushprox-servicemonitor.yaml delete mode 100755 charts/rancher-pushprox/rancher-pushprox/0.1.201/values.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/.helmignore delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/Chart.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/README.md delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/_helpers.tpl delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.300/values.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/.helmignore delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/Chart.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/README.md delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/_helpers.tpl delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/pushprox-clients-rbac.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/pushprox-clients.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/pushprox-proxy-rbac.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/pushprox-proxy.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/templates/pushprox-servicemonitor.yaml delete mode 100644 charts/rancher-pushprox/rancher-pushprox/0.1.400/values.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/.helmignore delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/Chart.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/files/template.tmpl delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/NOTES.txt delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/_helpers.tpl delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/configmap-pre-install.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/deployment.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/psp.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/role.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/rolebinding.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/service-account.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/templates/service.yaml delete mode 100644 charts/rancher-sachet/rancher-sachet/1.0.100/values.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/.helmignore delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/Chart.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/README.md delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/templates/_affinity.tpl delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/templates/_helpers.tpl delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/templates/deployment.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/templates/pvc.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/templates/service.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.001/values.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/.helmignore delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/Chart.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/README.md delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/templates/_affinity.tpl delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/templates/_helpers.tpl delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/templates/deployment.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/templates/pvc.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/templates/service.yaml delete mode 100755 charts/rancher-tracing/rancher-tracing/1.20.002/values.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/.helmignore delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/Chart.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/README.md delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/_affinity.tpl delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/_helpers.tpl delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/deployment.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/psp.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/pvc.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/templates/service.yaml delete mode 100644 charts/rancher-tracing/rancher-tracing/1.20.100/values.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/Chart.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/README.md delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/app-readme.md delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/questions.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/templates/_helpers.tpl delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/templates/vsphere-cloud-config-cm.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/templates/vsphere-cpi-ds.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/templates/vsphere-cpi-rbac.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/templates/vsphere-creds-secret.yaml delete mode 100644 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.0/values.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/Chart.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/README.md delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/app-readme.md delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/questions.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/templates/_helpers.tpl delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/templates/vsphere-cloud-config-cm.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/templates/vsphere-cpi-ds.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/templates/vsphere-cpi-rbac.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/templates/vsphere-creds-secret.yaml delete mode 100755 charts/rancher-vsphere-cpi/rancher-vsphere-cpi/1.0.000/values.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/Chart.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/README.md delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/app-readme.md delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/questions.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/_helpers.tpl delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/vsphere-csi-controller-deployment.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/vsphere-csi-controller-rbac.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/vsphere-csi-node-ds.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/vsphere-csi-secret.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/templates/vsphere-csi-storageclass.yaml delete mode 100755 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.1.000/values.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/Chart.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/README.md delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/app-readme.md delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/questions.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/_helpers.tpl delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-controller-deployment.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-controller-rbac.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-node-ds.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-node-rbac.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-secret.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/templates/vsphere-csi-storageclass.yaml delete mode 100644 charts/rancher-vsphere-csi/rancher-vsphere-csi/2.2.0/values.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/Chart.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/_helpers.tpl delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/deployment.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/rbac.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/service.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/serviceaccount.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/templates/webhook.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta500/values.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/Chart.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/_helpers.tpl delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/deployment.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/rbac.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/service.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/serviceaccount.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/templates/webhook.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta700/values.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/Chart.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/_helpers.tpl delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/deployment.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/rbac.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/service.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/serviceaccount.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/templates/webhook.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta900/values.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/Chart.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/_helpers.tpl delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/deployment.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/rbac.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/service.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/serviceaccount.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/templates/webhook.yaml delete mode 100755 charts/rancher-webhook/rancher-webhook/0.1.0-beta901/values.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/Chart.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/charts/capi/Chart.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/charts/capi/templates/service.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/_helpers.tpl delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/deployment.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/rbac.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/service.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/serviceaccount.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/templates/webhook.yaml delete mode 100644 charts/rancher-webhook/rancher-webhook/0.2.1-alpha+up0.2.0-alpha01/values.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/.helmignore delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/Chart.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/README.md delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/scripts/check-wins-version.ps1 delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/scripts/proxy-entry.ps1 delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/scripts/run.ps1 delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/_helpers.tpl delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/configmap.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/daemonset.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/rbac.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/service.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/templates/servicemonitor.yaml delete mode 100644 charts/rancher-windows-exporter/rancher-windows-exporter/0.1.0/values.yaml delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/.helmignore delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/Chart.yaml delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/README.md delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/app-readme.md delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/scripts/noop.ps1 delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/scripts/upgrade.ps1 delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/templates/_helpers.tpl delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/templates/configmap.yaml delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/templates/daemonset.yaml delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/templates/rbac.yaml delete mode 100644 charts/rancher-wins-upgrader/rancher-wins-upgrader/0.0.100+up0.0.1/values.yaml delete mode 100755 charts/rio/rio/0.8.000/.helmignore delete mode 100755 charts/rio/rio/0.8.000/Chart.yaml delete mode 100755 charts/rio/rio/0.8.000/README.md delete mode 100755 charts/rio/rio/0.8.000/templates/NOTES.txt delete mode 100755 charts/rio/rio/0.8.000/templates/_helpers.tpl delete mode 100755 charts/rio/rio/0.8.000/templates/clusterrole.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/clusterrolebinding.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/configmap.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/deployment.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/envoyfilter.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/secret.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/service.yaml delete mode 100755 charts/rio/rio/0.8.000/templates/serviceaccount.yaml delete mode 100755 charts/rio/rio/0.8.000/values.yaml delete mode 100755 charts/rio/rio/0.8.001/.helmignore delete mode 100755 charts/rio/rio/0.8.001/Chart.yaml delete mode 100755 charts/rio/rio/0.8.001/README.md delete mode 100755 charts/rio/rio/0.8.001/templates/NOTES.txt delete mode 100755 charts/rio/rio/0.8.001/templates/_helpers.tpl delete mode 100755 charts/rio/rio/0.8.001/templates/clusterrole.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/clusterrolebinding.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/configmap.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/deployment.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/envoyfilter.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/secret.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/service.yaml delete mode 100755 charts/rio/rio/0.8.001/templates/serviceaccount.yaml delete mode 100755 charts/rio/rio/0.8.001/values.yaml delete mode 100644 charts/rio/rio/0.8.1/.helmignore delete mode 100644 charts/rio/rio/0.8.1/Chart.yaml delete mode 100644 charts/rio/rio/0.8.1/README.md delete mode 100644 charts/rio/rio/0.8.1/templates/NOTES.txt delete mode 100644 charts/rio/rio/0.8.1/templates/_helpers.tpl delete mode 100644 charts/rio/rio/0.8.1/templates/clusterrole.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/clusterrolebinding.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/configmap.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/deployment.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/envoyfilter.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/secret.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/service.yaml delete mode 100644 charts/rio/rio/0.8.1/templates/serviceaccount.yaml delete mode 100644 charts/rio/rio/0.8.1/values.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/Chart.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/templates/_helpers.tpl delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/templates/clusterrolebinding.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/templates/configmap.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/templates/deployment.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/templates/serviceaccount.yaml delete mode 100644 charts/system-upgrade-controller/system-upgrade-controller/0.7.1/values.yaml delete mode 100755 index.yaml diff --git a/assets/fleet-agent/fleet-agent-0.3.000.tgz b/assets/fleet-agent/fleet-agent-0.3.000.tgz deleted file mode 100755 index ab117189dcd8a2b1de825d6cdda65505fb9be4e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2162 zcmV-&2#xn2iwFS0;@n>V1MM4KbK|!0p7|><>}0O(m=yJ$(VOeLWSsgO&)LmO)A2wg zD4_-kmH_RjivD{S07;P)ZQc2FQf|t9FezYnvG~|e!XYC>I(R{1*?aSq!1KK6c#QOO zGSN?OFfz{^P=7d`O#2f+>?5x~n)XL;(D-W!RE11PoPsC;k7G)3fFse02WVmV0-t;y zRGDTxgCS7J`3%i*x|NM84|(~nSjb{LC4~^&r{Fx$6O~KLpkBVKPObF+ zP4XwAg)#!G--d(kyxs;4ZJfY0OH9js%ZWsN@`Cs&cxcPS8y_oO*UgZmU{J&+FyM`j zL{Px>s)75D7v`kFI`JoUaHSePiy09Dt#}55W5!l`uhG*I;t18KW*Bh5v}go&P@uR1+r1mPGHd zZ#~c$vb}fZ8L%QEVPPazHe)xf5ef0NEdwLvgDEkVCBo8QUggdNX#oDsT&_5BIZb68 z1*}Hi$^eGVhgXoh1DH_J;y^I)xaHvF@?W2Scz=6ye(}ESLB`AekV24AX#_7w2?GNh z)?4%T8!VTzQf{|&OeL;~uh84|x|}Prjd{KgjD5b(oz==lF4}C?Yxfruh-+GRYoa%s zS+f)D^Jeq59IY)~)@uZj2KC9g@AE8{yKdyvr?7)lLA(72RiJR7$zgKAz4m`NYTEzd zbkN!VW59Y%LlhI_<{_qA#-gaSGVjlF(n|BnIH_+Rfj&g7D(^uM}3;y!#Y)F+NIDY!88k&m2_m$QPr zgyB@1QbmJEDQ*SER~DR`Fpq}B+QXDJUlLf*`8wva^1lvuYxn{~MAky>N!pZ7rm4P0SFgd~$=#VaLUTjc?cg zJYT?u`IlOPecylk-k_oXgGs;B|D!K-%3pVZ&ig#&x_f6|QqM^mq>{~iUJ zxpcnskmBy-(ATExMxTk6$RM{Hjy^5wZ!-b?q>6I!IWOVCZSg@7t(EHsnNlM1LV#`| z%?5K`?^a1sK)5tC`u)9mJ@tzJvEaG`c483=x9HE>`3e>eUgkEYX3|BnGp|36ndzxDY)@p;RE z*T*9-QVXoqss3LikfK8Z8M$KFTXOzj0|gh-$v>T*nO|A5NO3@R(VYPNz9f!u=0L0) zMdtg21SB{^a}x5DIJy~BQjc544fPvE)yqNqF2NWqh!NmGNE79#pyyHl$IElKi_C)P zMW|i)u|Ma+PctdXZ(vrg{vdt#=Q%uy7pN$Elrr38j1{xkC2gQ=iz{lHQH0gz|I^L~ zu+NaK_guZyt$}LEr=?z_P@4wyV8YFLpm{V o__SD25zn#zz{Bv0MpVvF{~NKo9dyt^2d9Vs0U*U4{Qy1y0NFN6<^TWy diff --git a/assets/fleet-agent/fleet-agent-0.3.100.tgz b/assets/fleet-agent/fleet-agent-0.3.100.tgz deleted file mode 100755 index 4b0f4f65180523e8ab255b196f698e1753e4b49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 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 diff --git a/assets/fleet-agent/fleet-agent-0.3.200.tgz b/assets/fleet-agent/fleet-agent-0.3.200.tgz deleted file mode 100755 index 0ce284876a7329a8f2166ae13a4aefde75860446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2120 zcmV-O2)FkiiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI@bZ{xTT&$IrDfr7)fMWo0dNe+5TvwMfV=C(nycQ3tSK}%zq z4MnOX<(#Yfe=kT%vMg)k{YaBr!1G{BivP6H7g_9grK@yC? ztva<*8uLM3p<-Z^m%k6zN@PeB21a9}%r0S%6!ce=iV7aXa_o_!XkVjn5{|tTRU&Dj zZP5=#5`HF}WGLa%Xn+8Ir26lL0;1tAAq+j57~X}}g^Ev469WlYew{)W!djuoBhNJAgg-A4g}?KK{?A2mC(^(VS#xkT0E$ZZm&ViK`#*gR?bjz)TrR{<}E0cOOzl> z&MD6<$2RElQfZhWDAce(iQX~1`JLni!wuxn6@-b%zQ3YJT306hqb)dWQI(E7C_R}{OOKx zSqQ$ZL2$MTO#>?+5`hbCp65HZY%+}K8qhkX0G8OWwR zV}(*8p+qA*P`&UR>)Y4euC@NZFaChmC}*&FcN%QvyG_s-(v%3U32o=C7E;@tSC~lD z%5(ANwo~=4ACejcO>FXx;l{=qNQE7>WI=f5R@w}icrXiBo90W-P$^i65+oAFR(7u8 zVL`MlG(AiO<(WshM#%{?sB_Kin9)YY+%CcN)&;zGJ0Zo(n3y?LEWKBrkuiYM6&?8X12pZ}jv zqR|2W&q4Q;r!idF`Tm&{+Z*VSm!l>r(Zpm6yBpf3#x0i^{u|h&p|ZaKRn_$vF0q95 zx~}zIfge|u7C$M$dz|a_$wrSs_eQeGF8$cAsz$0QT(5o0w?5=6pFqR-PqAQPl_P(W z`BE>vj$7@dB#A#O`H~VWNd}JBys?WN}?@ zCLL}`QEW>BG)u0Q>9k{rZHW&m0BD*wRBs1Swn8Q`SZ*`~wf*lde|~d!b9wcqtpT^o z{y~a7?i2#dDYEny=i8-q`3=#FxV1ZMH>NGGJ70lURn_+Okwhzm^?KvctZca1qOI3) zzfzNIy?)iUwmUhlT%laj1TT|Blw9v_BVT$I9_XcL*#C3X4?^C5CH}d+Jec1v ziw1l1zw`07{~wR0le2^We+~+QU@PaVXP)vby#HQ>RBQsmJ6CmM*Tg_fsNGp$SBv?r zYwDA&s%jIw<^(M49e)8WWg8c%wUf-_@tV`cI8THVSstpz=|YHmKZZgm9Z;?`VeG`cl|?2=io5JViVQUd4$OWGwosKx zf|z1@0yCToiGeLnB-(aczpNs!}`XcmNaUd}kZrTyalvFy?fh#iEjgwOw+ zgs*=nR-eFkQa`Y{-^chg$)MTxwl>_9j5WR3745NXHrJ+`c}~pa|HH2v@K3gtk0;ZE|9=kZ`hGj>q|^%`>3^(O-N^y3 z-1pI2!SL}@f%+3>&@GZiN|wwdX919c{wPIR)S23=zr3=y5R@oof?I`4l(SBO*N<7B zXZK$zPbts7%=}?VhwbXr?gFejA3pPD;9?-x{oy(8aV?X8b}Fa^r(#mUX}&F>TtWy|U- z{kE>_Ui`gg{Mp%oJYBCnZ?HeRI(F|>zEp2^Eg9;N(1XcL*JyvMf+~>s?~+Qiw}agc y>k}Y6gDc zVQyr3R8em|NM&qo0PI@bZ{xTT&$IrDfr7)fMI?X5Ip{6T?j81;+Xl(rz4VF&EsbS1 z6seMwbFS+Dy&x&cvaF5wBTa4r&x0+IGsEG>Z)Qkw!4P#oQsjDYwIou9Ym%{(C#B(V zIGjzV_J24WcK?Ux7w0FV$;HLRWO^|f%}$1+$#isn0>h^@qn`?;i98v8bz9xeeIrCT z7n*1)xQaZ0m}tU88pcFxh9MP$7^S8Qib({L@OX)`mu*Rt1bGC$mIeB~ESzMhauQ<% zZq=!^(wOz~3KapPy!gGhRw6^9FfbZxWp)XBB&WZkR8;T?R%4IkdGk69C*j0PP{oqw z+7|s_B;jYmNs1CKjRpwdN2>pxD^;&cJV)(9`XMyL^G12LB7OX zD5`~AH$We>7cYP&X#^_=BkvU6FA?%$&S(t3++KrNfLD7)%pJV&afz&a!g>p z1_BSr7~FI5z~SmL-1gz>vfYK46-paxFr`XM>zQ3YJT306hqb)dWR6UM7C@53{OOi( zkqf@7L2$MXO#^En5`hbC}^q zV}(*8rbHt=P`&gV>)Y4ut~LI@EB=7iC}*&FcN%QvyKT_u(-aG?32o-B5>mUJR~Spw z%5(ANwpI168!| z!)rT&0QbclW6d06AL=UxTkkMG3P<0Evp+((I?@wUJN|3Taz-?&!G|TX9Hk0%{sgJO zq5OX`9(LmY`NhTb82_Jx$})fi7nCFT&TD)~oZI+N`Oviw!DizbM!JCTSC=F@zfV%O&M{0sePt;D3<xaAVTe*>E|l=c^(EZZK#C6=(+ zRJFb<@T0QS;wL3|hjX(z+v+js-b&Wlr62iaSxeQ0n~iVzHphJB6R02m3Fb_!GvrTl z9C!f#qv3GY#sB$uc*Os6P#fEFUO?p-+r11jjJ1$%XOR&dFR!c3 zq{A)A^Ib`RddXEXt#%Bt9r0cT0Cn?*s_h`kM#v-vtF4Bhvj5%X&u{K-F0bA+HQ;vH zKS+^9twMkWMV8#+Vz;y^zae@VHFk&1#=wB7`hJ~bRr=P+*ylIy z@uf%nk463X&rR@d;!_nph>ISd?*k6ye|zUY~P#6DmGxJ-_|0L!;NVm%) zsE(?M2hjP74B#)3WuaOQmO|Y75#&PYfO4e?V`uKI$WuuY+-DCGWT-K4VD=-hg{p{S z!~~NwnBzi73~X^M(YD+8jopm0og5xYf*hAbvmmtda>nVc>=*BkWtVP1>>%tUeE#Po zeBDE_>IA-(`hm^;KE|g>3iYv>Ai^8_7gIhX1eI z@$J$f{EvoR{9jDYkMaLmsDuCB*z)-C|4aAaNMA$!_+Jr56Qc2HGJu2m|Ni&?(d2mk z`z%zJbO9V;KRNuQ)7r9x1)&W7RNwJ=zoZK69r@;JZ*}a02~ch?PHwMney4yaTUK4^ zw{>mz;vY2Q&(03y$!6nuz5UtOv45}frFye(NneMA?oDReM*BMzRDr~Q7gVCX9qevc yp8??sWI}0R^d8w72vee+4EgQ0UwUmG=}1R9(vkju^uGWA0RR7p(uSk}IsgC#q&SZN diff --git a/assets/fleet-agent/fleet-agent-0.3.400.tgz b/assets/fleet-agent/fleet-agent-0.3.400.tgz deleted file mode 100755 index fb2d54a67964877ecb78ad887d5cd68d4570e257..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2281 zcmVDc zVQyr3R8em|NM&qo0PI?CZ{s%7&ue{(fr4V6=MX7!;y8ug<+9siduc96wgnDtv7n`q z%`-)+B<0lS`nw-UO0p~~ad$VH>>fNX{AV~b98&zv3@K&|Q3qs#TpwRfiPYhO%;Jy+f zoC{4f6plJI1TvR7V!$_f<&qrCj1w^brTqA)NPYh!i^d!(R0qf}Jz80IG)DT?NA6rP4dFGZC| zT4>Aq&S=7qgp&zMxG)wVfbXgPXQ6;-xJw8_k0wTTs&%2_JAd`R?k@h$uSY zn8J7g1n!YBm~nB>;qoF}kKyv7J%ognN*ix*LY0;_GP`kjTFh*OwX#=aj7)(RK+@EF z>6UU?2)=1SaJC3d2MZt)feUT)Fa?qs1*4piM2FrXvxZ~u5FisGhB1+A->8X@Z(r9F zS@&nWP)a0}XoP#Jr=Ami`?@`}CjNKT@6kHt95(-*1>1PNP8xld62Ud0&2y`i)aKw7 zCK9#sT)w$&HC=a8Qf;8lP2M5g*jxjtu(Os-37@!?Hby4y&BE2D`;s$M3KpUSiG;C* zeb#V4CE7C02vb4%#G_oJ*H&Wq1qKi?22-JSA*)0f|Y=6cQJ4f4!#XXUqbr+WNPPsjd{U{Ms@stimX7X zLR~yTDX^>lKRt;$`Ty*EIN0a^=b+^>fD|*z5qyV|_o;))`znSmd; zhAS*#wW?Zu$MECjQi~sy;2p`;>S%4ppnI)ZSC@Y5FPF7e&0MWqeX#nU$j_gf`tiRm z5}zUf?7;uv^!%iY|Ka%_|Ib2gypy6($Mb>bV#4e7M&a=&pbAXvUS?xEkQ1Fuud2MM&uD2wsRordV zWU^YlYI@s#IF7GS&S`=dNg_(Fx3`gXoDJ;Wy9vbW4Pw~dP&R>hYhzbi(c)huXAr`l zz$s77zVq9)T3xPfFdpi7V{6-JY;Qk5xa*fj-j_lB@t>o<7jpK#5R4{^_k=NVZ$3XR z8|LW%~w5n$|vFMTYHkzB!p|%bYs^iZ7Iu!m3@qz#UWl}F8b$d;qOy@Da2)J1+02z>j@&5zA!U^vyV%+H`O zpUYo;QfiSKfxC@aes~)w z#R@Pc$xLL~70s!RVekaGtUvzCF-e~89>A{nZ+>^q|IODv{yzh?W50dsq|{R(>3=Lj zwrapj_kQ$NFns(}pn8QFv{}+<$kEC5o_@1-bJwEHzwLnoU^nUS9=d;I^}m* zy+sb27`j?{{rGop%%3U(?ArgGop#Uv&d$!y_V|Ae>YVr2fOzz(guh&lM?>UEllmSJ zcXdh6ZH_G?T^XlY-+I{+w+&9Fb026+wB6p(u(xj>R=B({@-^ZND0ak+u@KtKLGhLB zGathLr|tMQX&3$nQ5XN`r-Oa|e-`TCzc;r$e*FK^BiPfYP(S|Xgwd2}e3}YiXZ^qZ z{y#e3pZ`7!EtfO{j<8)E{-x8}Bj#%Kai)ZmFM-2XWPd1y~>vw&9*0f0}{Hom}xuhZ!}N^5`QnL zM0-2f-LO8gcSCcbG%z|twgAGEXct3%yYH7?n|s>Rp7yk-&qx0a00960FY5z%06G8w D8nSp* diff --git a/assets/fleet-agent/fleet-agent-0.3.500+up0.3.5.tgz b/assets/fleet-agent/fleet-agent-0.3.500+up0.3.5.tgz deleted file mode 100644 index b2e0d2a0e83afb7910402aeffa09b5e72f42a491..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2328 zcmV+z3Fr17iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI>{Z{s!+-)DV_ffmKypGcAI#3}Ta%WjM9ZF51gEpTXy1uczi zo+(l#DW|UM?|vXD$+E1(o82_&0-gt3B4>ufKfjqF#f%~9fJ~9=1zfMU_Ze zXj}A+k%aFFCsUMgZZtpu-%|abLIKfmlMsd;O$_f$>q5oH$B6-n3aha&))1vot79gn zLLFOULbaHByT&cHOo^g@mW4Cw8Rx%^{{>+ss>gQ#d+c~RRpjcud6xBj58~7i$mo$JT(-;$r1?MB4aS;;+Dh3dARAr#d*662`iO0*5H&XEv>(H{qVGy zTfb|0-;oJ21zG?}Q}d@=!et@&wg$o3GBgb=fk*@{w2{LUNM;0#a7GdxdM}w(9D6ST zG9hA^5V^698o&AWbv=-Ed&UZ-L_xTSjLIo7wY+g)p-LRb72tx?Wk^X@d*%F9hC z>C==5t_f}CtrAk(omZGh)XH;F=(<&P*$q^+f;wV(FX75YAV`HBwPZ&4)UC7$GI47b zt~Sk=oS{;%6eUO`j4kb4!|jY{TWETi3d*M* zJs={*8)TShA%SqSAQ-wXD#(PJU@HMB7ECO2BWxAfSZGXX>xf~sHi+M7iQ%VTym>jn zM6(@k4*+1^AfOx8+iEOp0CQZ%&`ttuIe;h(r!l~P^J__%UzJ+~#NapX$`EE5COU>o zag)q2Eg8188w;flf5I~P0%hfz3uXfDx?{~Ggx5sm8j!wgx0QiZyBgj8T( z{y!Qz4i{IC5diH*ExCb zQf|ZwNx9Cz|4JSEpQHep!sf-_*n>RnK0o((ereQ?|3vVNPIFQ`%4T3M{zoSr{Evs@ zL;n9HG^ad`;lj@M_oUd~Ko7heHA#skHn{KP8Fh_YE;0NO*m$(6Lg8xF_82aOg!Q_r z^<9Avi0%)MUC|ziL|B zog7!LP%dbK=Sd<;u6H+#wVw^_F1vBWo2_8j-a0mpcxMY&YtiDrBxex9AHXS3%?|VH zjaZ$oZ57gZ9oE`lCQ&12DTRC4f^OR4+`PcS9qzMR@uIkFJiJq8HxwF8o7V}%xRA*SLRRiz( ztSjssbQxII?z|9b=iG_%sYGQxP2ftfTj18~`(=Su>02jbpWnF0=N|FD7WL!5Fu}Wt zPgV3FE_yuN2kguL#%JRW{)fZS@PPlPpf3I=X684T|4vMLkZzYpP#sDW51{iE8Ni<* z%R@Cgo(VDcV$Nhiz|QN~&&|$DlC3tDk*R zYLOd;o2^lQFXqU9_G8EhQ@Hkj+2r zhpyLNKmOgf@yGH2`}TjQqwe|N={Pz);QuM8bKYMA;@(RU{%SQDpCC_~(032J%S(Fh zZR{xN@;J%*e#;KKt#CY@n?F0O?fQ;{y=QZ`z{R=YuMuZJvBz&rgwSRTiZ5iJc^Cda zZ^ySy`|v-Ay7)gE4G;1ENvMPW-q>>g@&9x8;6R^4{rF!HMpL5kaWa6t`Ty?s|3P#( z|9ui#t!M@uVK+JasMFfj3Nk_&{H?y@^L|DZ*gNvgCEn`T2UDQjUOC)c)ci^TQMRnQ z(r@e9?#170#^0SC$kX-O^LqQUt7G>D<#Y9B*OI;t3Ei8_w2k(+DyRa9zm`;@y$9^> yQXkn{pt(>Q7@Z?q0%1zDlOey|_H(bz10Co<2RhK7NB<810RR7dTaUB=IsgFA7LlF+ diff --git a/assets/fleet-agent/fleet-agent-0.3.600-rc1+up0.3.6-rc1.tgz b/assets/fleet-agent/fleet-agent-0.3.600-rc1+up0.3.6-rc1.tgz deleted file mode 100644 index bdb0fd8d9f6814974877482500b35df37dd50440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2335 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 F{{yRmx`qG% diff --git a/assets/fleet-crd/fleet-crd-0.3.100.tgz b/assets/fleet-crd/fleet-crd-0.3.100.tgz deleted file mode 100755 index e0869233d85f761dc35584b372f50216f81183d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9676 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 E0E%7c`v3p{ diff --git a/assets/fleet-crd/fleet-crd-0.3.400.tgz b/assets/fleet-crd/fleet-crd-0.3.400.tgz deleted file mode 100755 index c1974f4e29026b9394c8142d799668f2b9d9248e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9990 zcma)i1ydb7ur^-c;O-Q6E$;4C+`SZccXuo9?i4tLye7hr zy5DeUb?}h=dVbo9y4#vE$o-{S5|~`^d}8vhf18Y9DkJWwB|Uf~Shk-mb>hWi1Z|aa z5MBIl{ztLQ^TS|Ng8=2NcPkbPHepHrXtM@F56C?I~z1}XCPLZx|7U9c0Cs5!s za%wz_n%1C*G*JLI;Nh*?^ZE6vX7fDjbGiHT0dM*f2k2ocHG14xApS1s;rlB1tFs-O z$*zo)Y1&rnPv-?c#c!tyDG7}7bgA|`y9(0ray~o7fxR96L<;${QmGX7nuIqQpvX^$ z(L2k{y8NS2!J2Nrc2dg+4(`;*GMSv;aw*&%T-Zsb$f+I_n3%Wp(&|qio7-NB<5_|e z7Ww;k#Qzc}(NFV>?9j`h=t}teOFPU@{(K(!y*GdQ=y%@`f8I2kg?GO{etHR%Dksov z^tf$wEVI9Cb)9zWMmSLb)b>^={6m5jz(G}qu0Ltqn9=vv(nvC z?_jI+tF#@sjiQ&dJG$q1_WS&#m&PLht<}G~CU~2GbyY3!`Ml=BQ|L7Jkw#v;{cG|} z!-Q>*zIzeAEvKBM5MBA;^iRb_H>LE?1Mb$*leMBQBG-?WdQbeqy3qm4B7s{=spk&z zKz-EYskVf_X_D&27DpPTkaPsjJRFVYExJs& z7A{QQ4w*74W+Z3)$HR;L-ZuYG=@#9;<&J79#UMx6zpMN_&sv zQli641UNlzo87ul(|0fDbix?fm$kA-*^0D-HQ`Dzj_w-{B|=g8dXe0%pK9^YMi)2% z!+u#4C=$y-~`BrxaBdgOas*2jROC5s4EMurv}QDr|zSN zvmr~a_c2^xaJcr$jLBOEpYQ*Sn`L;`Ou7d^w}ZW)#gglwU35_M40^vx2QeB;Ln3%N zv3AAdXW%b+%(uaAJR7k|oUt?irQ6P@I1{N}1RrU11#eB^MI32-b6}{)uol;5gV~1E zoF~Twq|CWlj8*z<%*)59i^-M02%iZSXOnhi`dVY0h0)d8|0MDs_onJ)60r+)?>WE@ zRTN_C@LzH#3xm?PPtk}Q96V(9m``Rc;RSOKSkc%2b}wMLGDtKO+l~OMp6oJoWR8VulJx8!=af7K zWZDW7TXu0Pd^%Dd0`IWiCOeo=HaLk)%wG>qy~;Z8|eCpm?Z%}9QK>bn&>^yty+!B*Yh-`Q8DZ^WN&{+54+&;4!h ztSkIb$DNCLv(TBxPoL5@H(kRdyXJC`GZDSq7hZY9Y$BJQ;H;eGo%Tn8xfK1l_q$R* zK*n@S?Kr^W@&Y2akkb!|waIR&mi`$i``4DrPA%*>;{f=U@-ptOICG-c^o2NyE7#e7 zvLP?9GRI!;&%*Cy825~REf`5<;>RxL+^wbeW0Z^@1&WO058A~`>ZX#xip4k90!D_dgQG9cp zD1X`II6i`|BSZ*b#;N*$1BLWpO;Ar*aUUhK^pHWj)<`3VUoD@ z+GexTQGidro34`*Y9T7Y6?7-UoE(!5#SN0f-?>2bQ zGgjfzV!4_xt}n6nY*&?Y?b}2o*F3jLpNQ* zQw@hR9k|7IGfG#&uO~?8={l< zp(vfZdF;N&28%d+_e>9X-1jxO2>5NOUd#F>L&wB5cxdeN!edj4aSVl6Ow#&OBjf+< z5L1rE)!Fdd%W_9LsyUQix%B3{0B*x&|YN9#^R+xH08_&`Hmo5X$drMkD8 z2CZ)RAoM(~XGsM4!GHS0I4QyS>X`l|TcO1eS?>4=2*BOl=WxjDK;}~ii(0Tm>wk5g z27wpX{i`}!P@nAnDKIFzpLBWv;}d5;2I9qLMWy)G}LpstXO_c z;<6V_yl84LAg-#e^inA$lH+@uX}200#>TO@xPYE~q$`8E!)WvtzgM{5dq8!jd47^( zrq7*sx)s+FKJr$?dihrrk_D9U#0H_O4f_Z!I*_v}xriQdv}dqMroak?~WeG2xWVB$MnDqFq=c*a=Q~ z<`1E`_}vOJ!xHA5onfADGT(uow10;?f8M7`5G%$qRe>WjA11t;q=?QimqLoLaNSBiewzuc8^7j5TJ$@5~ zIv$!B48|Q z^R6JTooK6)l1pKCh3OCOaRPr5b}060$^Ixvcvv0{6x4%g3`Q=(Gk?`Vo8Bt|Qdv<9 zl-`#FtDcvHjWS@D>8HJ>f#YX7Gn}}l0os}DWq<88#$P6G9?!o_7U|?>wN0@&6A0#r zUrLa`uKn)-`lVE7Wn{$_1Kbg{lhN`P_CwAbn;6jBmJOfu;V*?VaE_sNTVL;wCptqu z*5VMJ=?K;3BrJRr9};DLzc&Vf$CH$(hUZ_yysLXSF-ugd-Vw-yyNVD^BBvBN@x2Qf zP;QDrei$7;Uh#r^=;2E`(tsx#${)hSzB5y#l!n&K(GjCj)&UFwTW?|1KC>y@6xpo> zkk=VvEdKF7jM%1!UN^%k8Rq5g$21Z8IgNX$G;3Gl_Ix9gup@zi@Or`!bRBSSR;Jdy zMbbO>ajuOEvlrmfD#Dm`o2C7pjmS@~Ev4LdX)t~|8#Ch)x-GU%Rk=T9m8COvg=_z& zeNzaqF$1PuH{;K`=2pwhh2)fxVH8HwAd` zrAV^uHv1emrYno4w~EG~BQ~~Zul|;1DwM}2RD;`ya^i-4ugW<;k=^KwvjY}L(LLGxcct%J=cOEOUtXhfOn(H%w(mPvzmpIgM(4UN(CiWx5 zJO5`A^pVT{K1s$qYw((Az3jzFV13nUzSp0$>U7$cwgAHeapE&N(ABf8xqao(4wbQT zlewZc@ zXKJb{Gel&FYsd6(I2Z4GOhuj?W$-dQh$iY1ioWXk=}Kw?8Slc+vP;f-cR5N(jb&b6 zxsY%d6rY6KewNcGZF!+fYKY6w>6*=dD=N?gY|^_7p$sZLkUA~a#)ITtMzp~){OILL zv0zZcMl&b)_q1CO7ss{zmznDekXq){om^r#d`u}u#N(sfzyDtXSK`Ng5a~f+d?S*kA2Q6 zi=4u;`*T(kNUlOf@x!jT1(a$ z#$^+S^w7<9TZwsOnMDD`oA2cuBV+L+p>3*og2%%-9^SUVBkC9 zc%2QEUQAKLDQYGd?Z>TvA6m;YH-wB-d)}$VF=@aK$Kk)8VQ#Yez6Adjp@k!@yFF{q z!trxG-A2exVlHMR77S26RpUi^`xg}x${EmQp{kat{te8t@{p)iS2sg!a;D9`K3q-n z63wu1B^3QdAc!y~L9W3c`c(vM-!8Gg5wAJkEE9#5D(X-`TezxxFDUAA}Ty zoE~{%-TvfVXp(Cn@YO)_^mZPFUAmx!A-FpzL-m{ZZD_vq>OotF{eSm)x%8K)t&tZE zk1wi&+q*@f_31_uWpx@)%H9u9XG>r-o(^!0Q*Jf2T?C+nk9?R>rNUhDUb zzw4u@Dx=<<8#7mLj1s~@VS1eEId6XOayfX8E$H9ghgDuNyHxqMPG)bozh4P%`n11= zdH8popIsSr`+mUryw|85?+(F!zI{BNZ)AD%HU^rbJGR%hy`Bm3Nql z&9dukyuxmvfdro?s~6P#`psR2DFs^)0d8=+S(jmpXMZO*R+hCNYFc5IW>OIZvg9K2$h*$q~?ts{1D;#F&* zeH5ir>I3!XldxCfk8cIMP7tN-o=tBTWb`L6_+pIy=o7s^rTuEM3hzJS?9em`CiY)o zj^IBq=39`LBHkOM5?1yUhu%w<0NNMjU)8Nq?1J6p0t5HYw+LHJGr)IZS zgJnr|uS?E(--ci|?-{Xq>*S6^8#pd6*Ta3s2VWq#;Nndb5u%JiSGD>DRT!*K2t9qw z3ua8W&jHmiy~J6PxAI!C3ATI^ZKkGT?y7w~oGZ9K-w>!rtA2vckz_lkvvobgsS6}m zSNqo9V~iS#whEDFY=q544zv#X#WT(!R7vRCYeW;KCUXu^nmyaMO@o}(&@3MIi^`=F zZqBjU2yD`Jfg`Km+I;1kDISVYi4pV&TdcnY*Nlhcit`e#YQCsZLhv^fOg0s@89%j& z$}~&)YKFq9gIBfd5k=bVqvcy*q5B%LyULC{J0*0fpGv;F6^tofioe`mLwYD=wgSfL zteG(8(`>?T^ZCZclj`NaDT$)8UGn#FT{iN>2wWVOk054ge%wC&Fx{?*SLm##owFeB zSKv5Tgc;T)wiD~Qqk=a>K$!UT3yUt}ndwMKHbUuEwxd#efdCM>_&l_KtVw@qbEloR z>j}q?Jv5TT+$O7g?AWtrmty+)eg}C?)`qz_r7~#96!M9a@>_BoA+-9iP1xbSuh2M( zcIZ&i_C13rWUwr8;K83r#+0qa!MDTjLfW}%M=ti-9+K7%?W@vC1Y+5PG6Q5`S}Ur6 z!I|nvS2cqMN^=eIcG^|7+3JiuJ#RW<&v?O0W_0l%pD zmIroGf%nzllR8t~76Z7b2&=0MBqB@Rb<)S=V^LY}cD%3rw*3JroarqMqO9Mvdk;9Av> z(!Po?EL1gbYuDbF2Mhd04G~=AihwR`hWj>IJT3$subiwv%jEjNQ@Y)MI?72qB~Rjh-P; zv_VMq4b{jEPnL19krV=Fe-}7<(F)ml#UyzVLe5!-h9C4oX?UOZK}h%0r9}0)yq)(q zXLOsOnXYy`hkwVwJKZwf6S53z5U(w<1hS;#Pn1Ni0?*i(^F6p|nkxBuE~QKp6d zS?YP*Mt*%sl)B2f+lyJ9tXh%rWFBiB#r*sSb4B?K^x z$X&Cu_VL)b*kqkOYCWARZ;kR7_ucrcqT|8{AU*^7q=Gil zRT?M)XK(fw9j0VP!!Uda&gj;B79Us!#?@|s0RjbP^l#yxBee46Ndb0TvYk89TMiCH z`fEZY9Hkw~;LX+0!eO@E27W(trHhbuifzXFk_VUSn1oe`%ceCPpc$9gLb6@Fxzmfc zBTESgoVj4s9H5ZkWmrRDLKK98`d}E@sLgkrgBjSUt-th@_exs-evjPRSxFX9SvBvdCj=O1T9R?wuHYw!kdKdaBm@qoO zF~{ePv5q?Vx>0}v51eHLN0RoTwE5h7>iQCCRFo6&Q+`Al>zk}glZ(b|YQs-Mu^IFB zs;zl$k}~>wBn7NF1*7Z2=lC9|p(+$Ly!i$uoO}HdeB0LbG38E1R{m+I){eR)t2)U0 zEPYL@>l#$0J`;Z*gZ(dZuu-9#9D2zB&nTVzy)W|g!%HRWd&wGYDZuh4oe>|VjJ;Ig z`;#+!jhK`M^ya0>+%FHwjat$@H`Xo_)@)fv8gmK2pp>s(Z2Zgt@Y_RqLuDH0?uov` zF&7*{$qo&vs#*b)Gx7{}TL8c(Uz>}Nm*qvI8O$eN08ZS1`bA_G8xIQbA`JF9cQLmECDmq)u7!c=^}B)g{Oun4+Iq6nU`tdxux&kw&o z6+V=_#%Xv9^>F(1LZiNhvSIC})-NmTT=ePea=>9UWX*D8l6MbCGz&BRY9VA)waS4sv~i8a%F4H+=fw{a36V(rWeE6CBN2hPz34gPR{8@(t%zA3Fbn4=%J z{ghl=nu?k=tr*DPY3*RFSkpff&flr-&pCiJ(EXpEy9g6oI|E=aA`$<8JbXx^xzoQf zjl&N%dfGjBV|#4Nz-1H8CQ_ z_7x0&;{g&6gTp>wSQt=BW}Po=1enR&PE`6ow=!3{7FTwZ342UKg#TLqLV5i<=2x9| zMToy)T&RPdRU{D?W1D#Giel|-Dc{{-SZRXD&$Zc5;>tSQCs~x2Pcx8*tx7gL*SaQwyTkO;$Z@DCveX8WH zT2kG%Q>Dt)qDA`@?CQPTrg>T;wN1Le#fE=|v*Og`>^HD-`sy9QwC#$1dH$M&*lNds zlb>{mcOY!?lz(9J7qkipV)^XYULu0QKGmPWz8PF++ZeFk%SI_m5Iekw$N%rc4FsX_ zZE6ihXZzIf{vwFMz8@`$!QKl@++Y8%q!XH=9u)B3fuxc55LSz)7|7H)Q^Yy|Km6;I zA)+3@Y6-eF0jy&h0(4Ofo0+CHFMjO747XXFPSpUB8@%gKP{32O zon}60*T_0x4WLG%SK21+c2VwF$Xn}216PdaWg(g(G=d8;s@0VS!13@jO{C75I5 zSyJ4Wt)6nfU&R)}5sR#<>Q`z7g*T5>cC!OH6zXf68_OcKj|6+L693DJZCztLB>>0* z&}5;u*KqV@qn0}TRZOzysXvs3s=$$wz+$oaI_PF(Ku}KH@nEQzz4{V{{^ZFiB|V1gChdrrJ*%r64kU0ofQD$x1ohNj|4M0CMFB6Tm@zf z$^s**2VEs5zq0~$wEDtmby_+^(M?paDF;%3QFsVL^&7@e{j3a+;XOUrQ8sS|P`a4+ zX+_4p$}f!a@*ap?gOBnZWR*xiNRN}ZX>435w9q=qX3;vOZIc$|hmORq(EsrsAad^h zclUvgvA(v3|H)Sxi1VDIVFHycXMQTkJGA9VA_`%y8{9cZ1)0h%#zU%H0cpA!WIq6tB}0 zU(a+rkCtQW+AKe~{(_u13kPdN&<6K|*{O3DLbgIBW869ud7nwBlxy#=xE1YcFtNj? za5JUSK4$~s2R^n_#i(JB2kWM+o8b-X5DhHd=8qm7=u4o($Udu~e5Us=0v?TJ=5Xms z3_P$VLnqQYLXPTVMW<_sb4^I77%v^h^Hxgsk_qADkdt^<9E0NM{pk&d5&KxJz9_;N ziADC{EtZ&3cA`LfS2>ySm4WWYu{qsdKnWMy$&yTYjP5}|MZ~r03AByi$c~XqoNEQjYJT6K%aXXGK6)1%VYA7+nPP?pkbo4en|!!yM*Qs z!Of1R)gU|Wu>TPeVt?PT!S8gfaVL^3FIqg1kNBJxg`JB{Q6eRz-*lP2S5H)wK$uYo z-xMxR87)6X>n>4Kk(o8R!X7DRBvvp&??;Dwk*yrKp&E+O%$^qq+TDrX!gLcey{ZN) z@kpZTJnDBw* zkz&Xn*cXA z1ns-K6NWg%#L<)Y+!&vo8BZqdch7*edwt<{WS&CE_#~+24s8d9oJ}G=Ffy{pkrrc= zRPy&1mtdlIi^MvHbkznWRI&PDmv2y0f2r%!njEA)Z0gCmYxLd1A8bq8nQu1Jf$Qik-Y}SifLS8MP3O+DL7hBff zbE977eyA4VCDH;NRb(iB_yB*?rReds@1peaSdRh`}+jgtMNt# zjlZ(MIplNuhY!^l){2iy%4(ivw@$!8J}vaa$FL)^M6my%Ham!>)6cu8%Y8V9ot$ml zcO4cd*qm+YqDt9030A&-p@A;xdkX&Z=B(D_Rkr+;0x3KR0N|zCX z0!4J}kxXrRIhef>H_e+7u?&K2Ku>r`o!1J&Zw&6RCCPi+Fr;+wH}$^~2S`T_%z`O;6rIFdB9aA_w!rzYms;T<0-p@LMS7O)Gq z+uYjY|4~SVt%I-PVP^gKhigsMgb{)uQ<$v{3;)KYsKKb}qHz>CI|V1z)!(@0zmW$v zL1J0*k*2uvvyf40dLxb!(1UU<{O${!jwu2I33W}P>fTh~L?D7m5->61RVSohck^ zclGSlDc0v%(sF8+44AtEW=Z{1i5KB8`7rf4LIrvuw6_o4S5AZ%kkn3;Cv`Hm?ELqT zZ-6&^J^SdEG(D?!b-?CqJsI%L`qoE56x&%)rstw%f~)(zV_0u}=!+}Wb@L@@-Z_Q5 z*~uwME?6m+MC!H6=p$XB(w^aP1&kf4C;0uw$i`<;bK1R-J^?B73Nob7sEzI(y!cI) rdTi1HE{Icpsn;RarIL=^rq=(4{gQ71pYUH_-ag~I`?SH5Ai@3z_N!<8 diff --git a/assets/fleet-crd/fleet-crd-0.3.500+up0.3.5.tgz b/assets/fleet-crd/fleet-crd-0.3.500+up0.3.5.tgz deleted file mode 100644 index d3c3aca5ab0c85b7255a1919d8fe3e784142b593..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10058 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 V3ftXaUx}HYvo{d9AT!_~{|l@s#~}a! diff --git a/assets/fleet/fleet-0.3.000.tgz b/assets/fleet/fleet-0.3.000.tgz deleted file mode 100755 index 0b9167db0339b1507f1807352af4d805f1bdceee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2798 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 A_y7O^ diff --git a/assets/fleet/fleet-0.3.100.tgz b/assets/fleet/fleet-0.3.100.tgz deleted file mode 100755 index 9938532587235c07df479057d4e4490deea83396..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2800 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 diff --git a/assets/fleet/fleet-0.3.200.tgz b/assets/fleet/fleet-0.3.200.tgz deleted file mode 100755 index 35946b921bf1c0533f4d10126f5bd2fda2d91e69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2878 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 c^Vn;9gd-f`2zSB10{{U3|GF}(Dc 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

?Crk^9L zr=LqRJn2ApI&}&}Is*5T4Hd1T&kj9H6}%$LB;|Spo&Q$7&PEK7DXbnkb9sy{w;@!L9J&g#o4JP7#7%@uEMvy zO$r;Gb^=&VV!N9pRrJ1UoC={vH-9nLI821Ny1)?Wvi-5xUtg@4>LefjeDUsF;)s52 zlD0ahQyaTZx0kGI+kbluNs({yI$)jsKl0k~-_hZTx3~YhfV%xBS*CiG6L?+igu8fw z;*1`clj8g=2VgD<%JX=+;YpS)A&1H>l!Ubr3t$Z%tGNKo1Sz2CB9x=7D2q68JZIA_ zr}O^wr#F}9r)O`fp7PB2gA{2{YXlfkWYGnVnyqE~Inl+zxDh|BPJ;`+mNBp?md0+3U{P$)F4r1;e{|1(`Ec zfzt(&(I2JAvod!VQ~gB@=U1jC+o(h?Lo6|#J}XSv80E0mu)wEvExRcjlh$leR<>K2 z$I{dhYwFa7Ol`nwIaVj_yD(e1G>c=DDP1X8DSEA8NO?qgY}@A;t*(|ZPPf~2Hs2?I zw2bexT?E6@wa(^$%V-Y3;-*|3pyb0Z7;3W{E!kzmd#$Eyr1x)b+zWfX@4la(3O0I2 z_f?{08|=1CwW*8`zkm<5a`)W1cbIXvIwY=KCToK3WS4fNXLX?;PUC8$Y`lUs9(U2g z$9AT_Luki;O+UAtNO0Z#PyetT{~h-a_xazQz|#D0OFQpi_!n%~=Dcb;|JX0*I{>Ty zwt}!{!}6_H1FzG6|HNRF|xwsb}29KML5f+0~Df#Ai_ z4seXc8OiFm-Bk5@Q^WSLC%y**%k+QS)u8M0|6YIL{N*;)wBW0VY;QN$l&L1^2K8YFrXKTe>hF+A@pV#GNID1h(N=2)z23`Qp)Bmpt3SNV zh*H-=Mz4aGxn!?`mzj|IRlzD0X-Yt0Mx-h7V^nDnBZx#wC|4jP&(|~aB*%W@cSpOSN!X}c*Bw~`oEKbx3~X0fqnho_YJq}f9>kv9^v4+_|I?GfAqaW zf1m%^32ZexUWSWhCcKDD8o6*=anTtP9VRyNXk^80_tWAyY0DR?^my50a^}l`g=NmjIsW7T?o0!c;yw}7H2TO)A?qm?R(ahgOr%6v(VC0n&`ajXbs(Y)_Lsx zyNCP1o$Y^lKfH+>SQq~d+VNlCKR(*$|8@coao=dSQMcSN+q`2e9nAbb(VTvl-zc_d zW)0O1A}n4Z!uJ3fCmz4n*W}_^{{id&^K&>#p2&`7t;+Flk7`Ia^6<)AOGZE92@Tgu?++D=# zLbqFHSB>S?~8VA$4gyW~MCBI_tjhO64sO0+>Hap+zWI03XlJXJ&}V81;FH zXi%HsM8o?(_WSxzgFET}J*xrN>A!cf5dWW??7#o96WFX~uQUUXE&Lwt4a@Z3O^~Jb zi{V=tW1apV9S#=ie-8Kgzn#DVoD;24as^s|U39okki#&iETTMyjD%MtM&&vO_J^oc zo*BmvDnZ5|W@2d1{FKMfK_VlXj?w%qRIQ!x$T|vvA?aCkDZV)FScM|O-ea%r9`>+@J=_NW3IG8A|Au{uLjYU=0CGp^tpET3 diff --git a/assets/fleet/fleet-0.3.500+up0.3.5.tgz b/assets/fleet/fleet-0.3.500+up0.3.5.tgz deleted file mode 100644 index aebc73c86631124b53b29ee85c3c0a85b7ca6258..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3029 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 XIKTl8a2NbH009601<^Tm0A2t9RkH() diff --git a/assets/fleet/fleet-0.3.600-rc1+up0.3.6-rc1.tgz b/assets/fleet/fleet-0.3.600-rc1+up0.3.6-rc1.tgz deleted file mode 100644 index 4f02d2b7ad1d9dae9f766e21d5183b63951cfc5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3127 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 diff --git a/assets/longhorn/longhorn-1.0.201.tgz b/assets/longhorn/longhorn-1.0.201.tgz deleted file mode 100755 index ac9aa44be039dc77b5253d91de58817101e0189b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11524 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 b6X@xAdY+#D9nb#{00960@a)XA06GBxRK^cr diff --git a/assets/longhorn/longhorn-1.1.001.tgz b/assets/longhorn/longhorn-1.1.001.tgz deleted file mode 100755 index beb49a3fe33ef89ac8831cbd66f0664fb2f0fc93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14845 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

b$*$Fo|aMR8rcd-GUDzRHvNY4k~+o;_?G9w z9-R!80t*T()QYkOy(rJIZ|Hsq9&`w(dy{1ir)O7hetb24cl!3#<@xE^D+LlWy?qBN zN^)$jZR%JT^g8)fd_QLcC-q4^QsASqH=eVc)3>Ms6sva`V`Cm4iMVRuIaI*~cIO-m z=&$~(%3|i&D$i4xxPWkwDxO3A?s`%r$?@~?$Q2G+^A>4hO6N5MC7Q$MT1R;cyo{C^ z+cRUq9S3X};nVXsV(S>_-@~3tV+LzIGPiO!4Q(Up8Zqb(gO<8??eeE#4)}K9^a3lC38) zG97DYk(KmgJsohP708!@ib7k9LBd{Z8^w^zuHk&aq{8QR$ofozZS=YZ-|3}WN=r0B z64+X9B6+<9KaPk@y@hRV$n¥i`3m^{rUsYhc~Z9NCy%ZoY)lFpIX%o==|SP)(j9 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 K61R{5FaZGU&n^N0 diff --git a/assets/rancher-kiali-server/rancher-kiali-server-1.24.003.tgz b/assets/rancher-kiali-server/rancher-kiali-server-1.24.003.tgz deleted file mode 100755 index 3944887a4b98953a2a13498eba60b21ce9ddb20a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9246 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 diff --git a/assets/rancher-kiali-server/rancher-kiali-server-crd-1.23.001.tgz b/assets/rancher-kiali-server/rancher-kiali-server-crd-1.23.001.tgz deleted file mode 100755 index a3fa2a7d7c095e7617336c10ccbf24b4ecec76e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 607 zcmV-l0-*gLiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI#lZ`(W!&Dp;~=y&;cuq-=mGWb?BJq%lS$YGaZ2S#RXA+jWh zbg=&WK~B1EZGsL6kYPpMMG!@iw7~c12u^nx^R)qMa>BU5nCsXSHyuQl5767mu~15> z+2!T9Dy5#Us+vzH<#ay1s>*6Un@&`DHJ{BVLLHs?4=@lzoT#I7J^#3W1mK)!VB;Ot znGhNntZ$_TW{cAJqBBi{t`-*@2fWB2m@gQ~cvp)}l{H8@n!w}!gChoONpOeaX1O47 z@1xk)VKQ^jW4-q*bzjC00c!yvSfj`4vdv@GQdU!`RGIzlr+X7P$bZH@SYV_=$A*p) zg4g&zt1h4Me?Gf9^Zz8s^ZYkXLooQA(WM>9^?OPhuqju_P-bi6np)fp#J*o5`5|gt z;JtBXq-c)}4KO4j+48&h&ajWhwGB|W@{n5T$tcIJlg4KhP^W8c^h5ad-jmBV=BQFa zY%96@>9%+bKb~4c{PB>-Cqq1X1v^Br`->bM$hdZ}5cj%dLXh@Jr9P*!0%%OOolK2o z=DSzelwd;#Z?6}3x3X`J&++Q~pS_s>(@LHB ze+v9}cm`jK<@QME^e-s50~Y4Rj2{Rav3d|+_XYa)f5#lCE{fK0H>{-geX(;a8r10Dbn007;lA7B6g diff --git a/assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.001.tgz b/assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.001.tgz deleted file mode 100755 index 0577a3315f69d90296fc0f62523558fe12704590..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 561 zcmV-10?z#(iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI%5Zrd;n&DmcebZ4tl;v|D_MbpEub%z{wXC*ckB1?iq2g~0N zveR|T5_CX-6dU|5hA4`p1inW{aH_#rZVgydCX73brHcCYzJW-553QYC3L%78R8{{K zLL7g^bUB;I*>XOe%`3T(6Cvlz#eBlV#hL#CT_T7RadEEW%l#t&=R5%!?^0bbrhvfu z4Oc*9ksE*87_HIO?1o~8Hw6Uq4P!Fi)oeE{G$s{Ipnmi>-0GX7^np->xzFE-GB%vvH=U zXp00I2(pk2{BFH7#%($a@uW+^SW-T#)Yn{A0EO9hkg2}R^6&~f z2{tq!hoG5ax@K8U2Lt&C8$4Jz=T{ZBv;1E_+^rrTc&jhZ@fQDOC64F+Op1~J*T9GK zGx(0Jhb^Y^zaXOqh?zfTe3wwOr~R2Z|K9f-F=E7s5vTDZ00960)x}Z?01yBG0K5o( diff --git a/assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.003.tgz b/assets/rancher-kiali-server/rancher-kiali-server-crd-1.24.003.tgz deleted file mode 100755 index 3a2cb529dc3b54e0120c9a59f18d5baeddab4ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 562 zcmV-20?qv&iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI%5Zrd;n&DmcebZ4uwRF3xp)xqk#;ts@}qY-}>dBoG+4 z;Sz`pa_w$gtrXgZ-B9T9CIhd(VTjt z+981gf+Qp(zdL6&xuESvL2REKq*i)0@}cXvc3Jc&)3Hr(z5n&xtIHU3P$|a7N*;f@ ztzN0A(+4o8iyR!HwwvBSIO&ox7Ntun^);2{L1MBUWNIigKfJ=O z0OMOI#-NE}s$oe^M+3P48$4Jz=T{ZBv;1E_+^rrTc&9GU@fQD!N*vGsd09^UzXm>> zpTT!*J#I0X{skGeKurHJDc zVQyr3R8em|NM&qo0PI%5Zrd;n&DmcebZ0BF>n59TMbg8tb%z{wXCyWjB1?iq2g~0N zveR|T5_CX-6f68LhA4`p1inWHu(H9BZ#5X5M+`d*xeRK$Xdn>ZLu)3NLI@#dRn>om z5XWCp&Tl70B}yS?MJZ+zQQXa|y9pB)XZ{CtkswUO#kr0z_n!c)bp)iHjdjMD1OnqW zTmq3nuHCfJN};XU4TTPGGVuC4hNzvb*{;kKMj5oHe*M`-0%Ibh2H9e@jO@t;cB;d8 zW}(IUq4u~|Dvt@L8#eb;gAvglE!W1HYQ|NFTYmmy}aQj86iJpOW9 zK8NpjjgIu?oX1xksrT}x3t&zc**ipSH=TiS(j{XoN|#jXTPn+g#AG|jR9|L(c!ga7 z#y3z5K@-JP&61oB266#5c(8EJuPSV3`M-L&Up_wYR$ZRsHU1ZsIG+FIT#Wp`20omh z!S`%6Y%!Vs1sOF!O#e0GyNHUd_h;t(TiDc zVQyr3R8em|NM&qo0PI#zZ`(c$&Do!V=ADj}B;6MIl{lG&+qGHWX47%JZuV1B)%zW^^i~l=5OS z=|(B#{wQ-f8D$eWmD8Eb^YKV#)7eyxK%N}=AJ9a`Fp?+7+P~Z<0b1)ASvwnx1VAC9 zaVw#a*^togywYV!wtzDZ4V@+E^&N$%oh@K9PD+X@XwTjJ#zsbCB5*};wU|e^cL5Gn zm`E(vR2*Dut1scLrvlJ>qg9t(vU!Y}iF_XtW&{7<18JJR;xu|q4@|b5MX~-8TMgJ`$y(d8fU735s}~eq6BNzq zUR&LvbmY#AS%}i)b}jt;#85>rflpe|h6*tK=PZF;ZClyMhI2(eSmqx@f7U(Ro@MO~g=V{h?4o5=nCpUa{D zzYG35-h(e;(Jz5&{{?|7WYB;0_$E>b%k7aq|IzmwFkrxd0f+G?00960X)GJc01yBG D*_Dc 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 diff --git a/assets/rancher-logging/rancher-logging-3.10.1+up3.10.0.tgz b/assets/rancher-logging/rancher-logging-3.10.1+up3.10.0.tgz deleted file mode 100644 index c94a882a457ba4b95a14a0b1a5f307fd09d3054c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11635 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 diff --git a/assets/rancher-logging/rancher-logging-3.6.000.tgz b/assets/rancher-logging/rancher-logging-3.6.000.tgz deleted file mode 100755 index 6d6ad9545e86f76376e73449dfaa8bddfc9f0bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7694 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 diff --git a/assets/rancher-logging/rancher-logging-3.8.201.tgz b/assets/rancher-logging/rancher-logging-3.8.201.tgz deleted file mode 100755 index 485d790b959c6533c22eab9c3abaf1e210ac95a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8769 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 diff --git a/assets/rancher-logging/rancher-logging-3.9.401+up3.9.4.tgz b/assets/rancher-logging/rancher-logging-3.9.401+up3.9.4.tgz deleted file mode 100644 index 63d024fcc05643dfc4db26b030e69fea5a6d855d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11649 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

8$;t@&;Oz* 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 L6DbniOCukyPgK z>?j%I?kZ*RW%{=9=koeGOaAb5baZ@uI(nFlB%jv(yt#Wopx5>N`luvlo7Ua#bo(f3 zO)vH2Yg&_gI52V0ElqqA^n)RUW08XSII5tKu%Jk-EG1W-SQq6}u)WR@<8(e?lJ2jwOq)aJQwK+KI_GbgP#+s7okWgLM)}_z& z`MN(kIyzJI?KNj;`GQ-3D}}gk+=QVmdlpk4HP+-YPDtupgjh%z*Tn55e}DU0M5xvE z_3ix9?ezJ4g?Rch{I&S-@Gy&B02jywTJR>zxA_im?XY|E0uJHrS!0mzqTFg(8+qk1 zTdhF$2_Qw8xQfPttuD*QCFjtm0mw_}CmrA{JirXhOLzDI#@)cj9_zOI*kpCNy%%pm zz*}Cft01h+HajVW$6u7?@7Eu~poXCzB-rF!x@wcGGTDOntMT@2(iVP6P_?{$c`To0 ztW8B4s0DSu>9%$@_c)YHZp-Apk2TfHVsBB6#X?%+n~|x|mY$u=D$6s&FqhH3D_RA0 zqV+KBB>O1RP%hgkqqZmE8omz46sxEL>Wj0KT}EHy#~}t{uRmXh#}N*(EY`kO^i!mV z=Uq`QcKm=Id(Z&W?@jVjRgZk@tD!oaBtiQahkLRVlb^?%kZZjwJDh4vHvHM|YN!+Z z-j9XYk_g49q%4NAg0!JaA>k@58FplT6l%TN`yT7{yu)<|)jB9-uw}G|gi4#9)SfW0 zy%2eXaLOU_GOTv^eJybbplFOML%bGuTErm-*1A787&>kUDmc);fc0Gw(>UZ{B)`kR zM7+g8Z_jY0;pWgD(n|Fe<>yCWm6zxu^11tjED~r6v1{|&UAr+hV~r$G zT8FLTb0oURhT08H{utxO&kK++acqVWBZWiCgHxI};mOMg)Cl;&DwmOaEnxa+)-d$+I7LcMNUb2KiP%g0Q?klHsH)0zeSXln2PSO z#JU}nP^<-bkD|Du#L7fNStURJUHj%u7@-mhWo%cHmoA^Jig1%)Fv5uw>9mwP*fvy5 zO@I|#are9Wjb_m86Ob#ZEj0qJ$Ybh~C4$cPBSfN6BR&`lSPFaK4Vce)rbDhXSG&zg zy1i=ss$RCjmS4M--O)2bVn)}%J)Oa|C*#ut(t%lqtaxYww6ohx34%nogK~f{JOc{- z64|49svF_kXpk3}9Eu=TIcQUKWw1GkHxUzw@&nyC&vM|xw zrq^c|T@hPw2_Jx2tINP5Fs?*}64LwDr$5dka!HOD`Bo#JC#&tbDx@u;+>vFfUgnX= zWlBU~1|Vw2qwcr3;X;oHLTkzaXQIcoS68qZ=9tEOQc>Y+rwAu~9SGx6toDaF8`?<3 zJLdk;V&-|ocC3P92aZl@fvb4XjRQX;bm0N_A?y$+v=MKh2WvXQpIMiWP(Ms3b|Es+ zn=SUTs!ehc(9cW6=coPl&3ohiIwN4Er4{TbmTADu5mDEu=}9_kEj_52<#3}2r+N%P zUUnqN96L=TW@T@LE}++y!!~G->3JXulL)=eB+n@R zD~mj1;QGTYp2TCszEqj0T@64AY@c9-(o-M~BiU!SZ(RIbFG58(JG2z!NV9~QMKd%w z&8zJt$#M*ydO;*|;pI%G3?!p$o^W||n_$ayX0%A=Z9lh=>GZBnC1b)iY9Vt6DX!#v zccVMjn^<&bq#vv7ITx>MwNQU1%XB1$Mv=TgzcVgHaOO6yn=pYK$q)jYz%YbpmC@`d zWAyvG0dW{(3asgGzcrxEY;1}tzC--%fRK6Q#~Nn1FLQw;0SrZ`O6f)-#`+igwD-`< z1F;E_QLG89HR#=|Z##HfVMDtMX6}=QHydke$X5(;aFORz5oDQHOl)=C27iUVZ z2zfR*%n_kWGq#PhR<5I9x#%+Ti9xTwZQgg%JN36QJHiuuCqlJQuO}Uk^`KZ*LP9LA z>XZp-Ln4zdVLmrU`#)mb+PCxF1*C zyv+E%Bb8YmgfW~ERUqgJBhBktP#v$bNm2f224FP6hic#9SL#S3UdBqy#fu+?Zp|ii zvyDXLDnib$s_VB`aG9WOn(a9!_Y(Lfl1m1Y|8Qwf?( zr3ggkx-|b@A^JE!(zLo&OYSps)Ad^ayJpuwV^U2{2r|pHzI((}cvVS>mT1gK4{@hE zlRdaH1xntC09p>CTNTcG^8)YsFGIL}N0#}E@mB9U78u;rU-?-|$B?6UIB_)O@y0`p zMEJWvr%w^w2tE;SS-p7EWZbWftP42n&7wM7FQ@r-8*+s4=M>wFJI z%*DsGdRB#5G}s>QsDKnwW{3)3Zacs3=XKZZRbLn7&5NF5)DMMIw!xlH??uDlv)E0& zc6>hP<{rm1g|B+@2|I8x+mB&YdR?!t{`2|Q*jinl;n&z$U|p||VO%7i2AH@mFI!)} zO5jyKM`eGUkgdkNdCoY8P;_bmyljelm9L3%)~W^m#WtAz#0&IG2M(KLsL{Z~b~Nk; zD-Lp#YW~{d^=w>JA`hb_8-9?-_PRNbFsa5^nROXArG^%hV=FKf(9npahAW64s7K?X z!%fXqk0@F*4)dIf75ySn-OrdT!nK-;qnf2Z3DK3yV$|(?crrBFsilMqPM{K0jAp5< zkFb{f8k4HItbRykinfx)O4+=fwFadO?bE^RnU`_wW6ef?%?p0(ciAUUAyn!_P{~hi)Ae!@oJW?IG~y&*ePlLe6S(+?aJo}qFpr(b*Zuc8I5#Wp`&R|sS`Sx@W?RRV{fan^I1 zu)@fd=!lpt`I)ULAxOG+1{jddDRTE0a``cJxFEwS;;r6qprAFg*Q%T0@QkJ|QBZW{ zT!)wGB|I!VhajoUDA3Y+dOyOFc`!_obZ^KBH>l`hsJ@q5c?ijI@3od4ue=H{E(Q`2 zPZsEW1H%E-VaK070Xtlg;g5$Oei_{YFPeSboH80~Sb`KobsspZ_M-F~S!Q(c^{%+YM4oh7ccA z98mEzZdTx@*x$mhF&G#8=ywoFgKB=WUeLQk4Wpvi`N6{x51EV1w2l`y6TeCX=cCDt z=>@>{CMteSqi>KxAZQ~R7sh(uGiP{~sC4MZ>?-S*AJVzFLVeY{S5`&>{@I<;xm(M* zfpeMolRUV@-z+=xr9G~?zQp|ao3Dkbb@F)tc9%0R4bQYimxWoIJ+H1}mkaNLRMoTG z;R(pWK#=rYi>e71Z^T!nL)%=)S#xPp5xzj(angNnK_0#)c*j6jq6jbY&thFG8zgSE zqd8NJQ1Rh3CmfE9TCP*}`H-W%$t{tVc8vT&up{%61ov85+K8Cr|zL>lh*Ro4QTtYPM92 z3&aA_>=XmMn9#7d_SBSJB^M(+4;wuHt03MXP*MJVH{Ez))T2t~&07T|SpLO1L4r)F z18VWU&4; z=A##sr6JZFg?lQNs}~~UW!v(!EYhY!A`2SYG!)`dL(ztFYHN=!ooZ1JPPJl+Ru

cHCaD!^)e*JK&ik>=H-hBq~an>5a+=ejHJsFso}JdD&CZ3$ag_u-9Ht7 z>b8~kS28LQhnfK3st;D9FLjP>`)6!-ftol9xBGzq?a&EZe-U5i*TPx+=ufkI*-U1v zkJ*#he_XLVE?6I)<^_sn99D!~HsZ?h%?o7X6DrC@JqfHmhjvev?a+A@cd*r)M!%)! z+XlHg(K)k_)I&z}C|U}uzvxHa%*$P})_cfWbQ`3GwZUdKN1Pr30DJn_H zGfHPNQ zC4i;W-*EEhhB^J_zQ9fZhx_Dgju#wnxbJrmOf&XxKk$G=62alJ0f=)2v4nV8{tmVn zS#f<%k;8_Z7i;xu)&?@mJhU>WRG;lEZ!m*A8+MlOvlw+nv}^|>D3UFC?=n_wtnkJ0 z5pq)r=fBawq0WyDxeG&ZHEe!cmLNqxB7%b(I=^7bh{uL;yEsVSxrz zmFv9ivF@#*z`-dmjNCU3Rk@|s$cvaoGe&>F6U@eXYnyiW z1dvh?eUV_H7G`-*w86;oG|nS4Q9Ifs^7S7ZfRqe_|-`xDOf<2Iw3)oK>EUuV3jTQ#BZjF%$(Ov-XKaHAJ9 z^@3j2I3+S&bZQHMjaUBGa`C7zTE672P`k7tGJ7bY+QNg9xMnL*ZyYkl*fe?m)7q-; zN4b%>4cerf>LW$_GDs!gHCnYc*JAi!*Ax@5Kdy($TXr&7VFQj|1MFBo{J+u9;O-_z z(l|T%Z3(5ykqhV4WYi9=lfQrCTaESGpWR89UN))pgBWTO&AD3)yMp$2_X0(@mb@xi z{j^`+iMPNS*@V6=B@<`_p*Ye6fhgP*YwSqs?q|PDOy+Z7mC1(r9L6UyFag0=_dIez zxfqoZzvis*=j>gg&`dQ7wqf#KRV7%0cf z;FGs&dq|g0ou_9Eos0G+ym1uvkqo0Mr5#|FNJ}{kkPQD|PCH0r7X7y!kHPyyB1+>E zJ9v#iIQ@lQNYXm7^2B0lAoPw~y5x9TH)x?JS#ERcE*7NvgNjYq-==5=(FL__ibcs$ zZc=~+auG+#agHq70=|Ny>?kke$Ky)&rGZd&gK@KjS%DEXRlz}kaVzsqjXsQ6Xlc>m z+CI7ioW8VjGM_(-oH088hp7V%{IctvPa)x~fL~j(#k^AP6Q$wM9gSRTdfs&K;CC zl1DR8FE1E6(qAvgGawB6fEa*z&XIb>Z2YP3l1$Ls;LO&2ZFSpY zfb>up+cIuSqIz}L;l-BG8&R>RuU7AsU~YzV9@157tZLn3mVy2ab$-im9XuwFSov)KXc7vZsBh0xUB z7|FwXENE_t8n+c^$^m44(pnpNM?+>sLc~6=)|YWA=RSbJj~Pr-X)-bMA_N$M?ybMt zXeH#mwt!t8*{d0A)ZUSe{tbrCbtJ7xEMA_+Wrl9u<`27WQ$9`CMN1UGx~@N?ZA^i}+lWxj5;!Up|BowZ)0r zo49zfPB%tx5lDP5Qa}@5(cEBI%{R6-sj!wTIdbk=hqQ!Eio|tuV&!3@i!MU-YJa1R z-{z5GsSO51ZGKJbc{19M;29)@wOeTM-%8r&GVd0^Fo?rNuapIcEY3<0}^zU zz&Dh;*YUmAvjI}^h|f7e%%mqgDiT!4AX|ogo5Um~C(8k&nDUhv$zlG?Va#d2B`6Bv z(u*MD_~XU@B%-&>m~Ml*n`Y$3F}xf0%Sr%D?~jvnQC+^**V*M*U_VBM<{Yf};{!hgt)&p4uQK!1jRjbUuIKSLLDZ&BUn@vQQbi(GF)%SIeO zgBWT|2vvUr%DAgql$F{m_fE}$HTVanAhF$c!6tFN(1?&fBM;`hBNR2mK!r7zEJ^C< zXjiU~ksKdTgHi)tQ@Jb~ri#F(7-%;p@3MqTUsRVLXNTNOFZ%eN<9zFZ{J9kD6{=;^ zLP0VdZS#LJ5t`->LSzjarsu|z43su-K+_}YHy7GuI<#tWxWf#X64CI5x7((pjuDB2 zI%2;LP>w3lxR98)cFa(o9r-}9+UsUughoe)ark+mFj9w3Bz_A(%<+E`;9GdX-fu>fGw&^kE_0+p&+VgZvp&HL)l?F6<4_WA!6Q9R6qjlZ_Q9uIe zV22_Dk6o<+s1EFiy&Fd`3*?$-bd*u^and8^p#Cjne&HdPj1RCxIw9;E|LF>n_Wr=& z+V8~2jU!kQ#Ba-@-!v85dV*-RvvrGmt0s~XF?{#;pEA;x8Omd2QNi9(6wx2Z|LwwH z_arhA8z668LqF6It-pzzc9bM-8Rc>jHiem?BSQ9Ry-)QmPCRumwIAgCDq}Y8e@r4- z^yx)?V!xA%lxZx^K1uqH!{fzX#X)7f2R{mh^?VQtA;9GMWb3@T}eDs zK6qfgL{(tae<>x32q!bSb)^4&+GpE2sqT)NOoccF=eVv_%UkM2sjRmUA{L9=;-;+k z&rXWPZQ;*X7KQVg(<=_Ym`6?$A; z_nfqNf<0Iu-~cGc7{``-dlE#;1~WrxrYL|6jk$baUm#K9tZ4S{Q=Yi-MSbH?k6MFr zrJvOrI0Y~S^R5%{{*~3&nyLh=(aoA^$_QJ8N4swp%#I6cak?RZ_d$srg@41J{u2t4 z=I{~%b|BUbJdq?o;` zIibe&#Yz61F5~v)OJWLCc@QH7v~2qz$-aI0E?YQzI8$LrnV9wNQ82`;j0PygtkZRR z17sprFM3tZAAH43;iwrF{<6}Z%B@8w?j*T{ocILfFj@k z7dGT}CqB&OJSEs8#RQyunqKAR|JEuTi_uyNplutWeuQ_E^^Cf70?9$7FlPU!>*+f| z@J`QhcoF_=--DT*Pq$niwwW3f; zI{c9jhqmdX(m*_3jz{j9E=Qrq$6moxBFEr`O16Zkp`3U>dK2shoIYrnncm<`lz@_z zPxQTLiNf7AS9w*sXM%_GK{6p5tXMbUADxb)Lyo(|y6415@GQbdoXIw9*|LH&*lI8O zMe%+dS2Asf`T@DtgjzuQ&m0pttpd#PkEvj*y9&bTiVseB+}}itCORg*Q-Ua{);h*n zS>)QX%w)KZkEA>m0qa5)R(8c#Bt}Tc48IuFIqR&&Lo}EH2DvmsVe31E@&v2}kS3`J z2qc`hji6gF#&p*jyDJ%u3<=5LYzL2e2+PSB))HrPq8^Q!$P0Nm{tOOT5l^OnT-=W< z#XcOMLkuoNT4r{1bk$ zNH|z!v;5vrmK5SDBC5*_^oRMD<_8cW00CINft|)1YRq3@%uc;PL);-0&N&QyRPZm# z@l}yD^Ytk#8u|HFXo%H3-BK9et$?tO0nwi&ESQ55mi5zE&of&#pU_au>Qw3|D*@By z`x!xTeGys00{!OD&g8w1AEdFS8kcn<;>6>yzV`z}It|Lk?JFB>}kT#KTGCJ7adc_r$^*TdRx7M_6TBJJDst?;b*czT7Aa#4HQ)M#=xdAY= zFJ_~nlAqtvn+^&|eJ{Y94swZJ#%N#g%=>y~I#R%dDJyX%i()Z|&?*JY$N(M}6Mntc zv^^8WpD!*SFf_DA!sM5OG?Z*x1!x@33$s}fB@E1^G5<+ROC8$A;Fzv5WEdXReLlq{ ze#=6UUrTF~veYF|EpH_sFJP~=L-Dp)=QLMUlb(9Nj#@vFl~?72uI#}Ewyet>m;Lhf zZk19s#Ld3UpUrK~FX1upC$7zoxoV$*OHwVozV2Iyy!;K0`TD*~zCP|e4Tg~8LZkWb z5j%@pNhtgIZfYpuTtm$M@mjXmEU)-q%fGV}hZF;D1#3cg|j4U;oJRvACP_A-&n( z?~_Y2drnHFc-P}SWovA!74Gm}Y2Q(3((95uoYTUDg5yFmAgfJB-uClqR0(oy*1%~r zhN$IQLO;4Y++X)jD{Vk2>Lz`+GgmLcFH{3@6z+xDW%5-wA+FoCDOXu-VTLt%DmI^A z15N1VwXZd_71z&g8bA9Et3OhISbw&BovO036T5V*#MB-`N>ypdD1WUhyHW%gV|}4w z6WR{ace$wkQNM8^XNxb~5{yycX!F|}`baC`6Wlu#UxrVCj>F{jwDOl4*6zeA)>v>RU8#$!N5UWz6`NDa3uiLl|h`rP4(6LYE3`Y{|7g>H?3y+g<9{yC3%R1jlL7qLZiQkwtN0UXHCp z|C^%qWdtd_FJ)Oep_JP7L|z#ZF*F5QOY{q^wPnS!P(n)dXJ!%0kNR2%wm|V>q5W9! zh#%T-u;1)62e7Tvn6rqjNGv*p4Zy9{q~YQklwpGGODD1m;30W>v!mr6NC-*b7I6ua z!YkO?-Xus#2>)o*o|1ZTY(q794>WP^r(xp>4qQ|2L#;m>US|Q~G_&L)8|fBsN^)#R zTZvun5zO3%ku9b^jy8k9s(SGSON@Z4@m(OEftuwRSrRt(0bELmA-fRRCTQ$eM9+(W z0h?NW?DPoQYIGr4`JhF2CJI*}gkBSR{6{o1aN@e$t?kH)a~K zkiP_yRB*aK(;x1LE4Vk*4Oj4-j?lB7sXdT?cPxTQk~qV-F(yNF?mVOyHwgz|3PFft z8bYy7u5pkzyuj8Y4PZ)!G`jO!`&~`Jp&sYn#oADSwz?LZKg)hI=;YUdQOPs`7#RHC zXLvzaAB|6oPGCu6X+r7S#9;7=RYEAAt(7;z5>OSI9TAo5d5d&ATK7de8G*wrMx7c~ z5z1{3y|+6q5+KR4XiSMsi`O3p{BSbb@zy6v{CEzwVNW%g0wxg(5~QVWF?x|lILx53 zRW9o9eJ%t-Wmf8ig|^c5HTczE&&3klm(v{E8%eMCnVA>}PkmeFb)YZaSsNTs8j`P@ zb7r$V0c7eeeNFj~Nd5X&SzPhE4aGXT=}bg?Sh5EvW|;mFF4dyag;BJIg^Z7fC>F(z zOXz3;UQvxaN8)QuY3eLPKO?o;Tmwa}p%i|01`SDJF{u%nFp?c?nXP4Z$ebigPAFYY^PYpii>=FcSE#Yo1M;*&yGMh`=kV#sQpfjl?h|1ZMa3Mn zoGGe}J?W9~$_>GEAOO6?YgDfx>052_<99+lOU&F-9ttOPkWdE&Bz%%!$7c|6!a(|Q zQN1J{@3G%z1+Ap8kL-q*{fW8V&37SCz#|o3?C&_5Aaj~uw}S|^x!YMwzFrS|FP2qb z&zLudOMlA9cK1{L-kZM`Kkwwg9iAVm5D#qfcz$mz2OM~k*dG#X->G0%Zk)K}hYaFF za5C)feSLg&-zmf=Il6OI4a5LF&`T`wIds>iy1N{-FYfqLJV_U#<-(*i9UfuO*~+dz zlPHOnkN43-h>UhlHKf{OMnv7E0y@1JT6oov%<(A_#`Mvl1(3sy86%%r(x?Xss-;ZO z_gWp&q00h|e?$f$g4nUU#5QN*PM&=yyjfNYK2Wk6#lj#;5YcQ93NnB0dE zZ=mPQWdZ~XJd~iPi1Yz_lJ@A0H6l{#Q$!y6L}QNVxfDM+3bah)e>D+}xsc_5OTMOY zc=mZ^#N9=Yr8`ddV^LcAfu#&K=_%obJ{yFmefGoSfRdCiFmcr@9lO-oFj1fj1ryzKftT;BI#SA4Jp?j5&;Xk1o&>Z&J;9jg22^MMTCB8)T zNlcz(BK-@CZZ^Y@My{e+Y|U#n*)pL;+#$G#kThVx%(m8o< z$>D^)zC|H~B1^%B9MoGRx;QIXqPj6@Ueu(z_@ajCjMmsI?;u06&6~vcYXRP>Qt}Z| z*O#(1FfxX>8(tCO@kB%FRFhB~AR`y27{)soo<@N-NE}TZD_ms{mVG9ijlJ9HvqfPL zO+GIM0+-T4OQ$a+j#z~9(>sJIbp=%A;Hgkr{tB6^)oJugiIm>{Iki)PKwwppsgFFT zjZ!ACb{{>+?eMy9D%PAzFNP_u5W?g|d#=f^imqXyw-X?#3jO|MIYBFPGC|EP2X{FW-Lagdtmi`d6JMR;HHpDnIMk<55a0)uz930**a{s6p zeecn}1U$wnCE6&c1b4Wh1R{CtE(oN!*Me*wjXjcLMr#{6ue>scL4cQsr`GBo z5g`*5yo#t z8>{dGA{V56b;CL>2c+Bt3{}=PF~s1)G4fJ^D2hTYg4z$%PS%nQhxj7EV6t`$p3wlz zs{{ka>>EV|>hG-n7|L-RzW3Fu#pv&CKb0Kc(-b9G`Cw_a3<>L<968Uzkf#8BCE*l* z&QER6k`kr>cMFA*T*HO%3R*kh_}8$>o^5x@ILY_N13+}~6pNHx2(h1y=iPvI9=IgkT)e$rA5PW{Hs zmaIRZg=%Cs#pE3lN^RNOJ)!%?NJB{dJUh<|A^HVRBS2Z^W6>e*O|dN3oE5&Pt15Wq z`}qPtwgl!B4+TxG1AI1&)-qk9PwP@VG1 z5)$2$fWV)_rc`<&NJR7qL%y+xUTAE$`dqmnEnKafG_-9v-*#@~aVt*wvwpeoFITzU zO_%uf8+jUmtH_OIaEcVICgKfD-J>Bfemu*W*f!7mivif27oXqOC&?lzy3N)5`W~AW zQ?%+UdYPNY5$hrMqV&jZ z9`XIFkvLa6M%DhC+C3tWlMiwDoUZH>1GQQ18vr)Msd4oo!tlOC)2v6*Xe*M`%D0|D zrh);etQ8&yZ}tS+xqExB9iQUISasthVL}jV{CGbqyb3p9G2Zu5ocDB5J%!uEvQ$O* zS6S@_np3@4JfRD7bkDSD7cs!;c^|{VYNH%RS>rXZ^WzWx?2jAog;mjza8A!U;Ij+R zyr~#YPpUl-XP1RldDADLvkStevPNGS&W*VK|oaQL+0jJ9OamOVD>hcP;#5)cd$Ei6J>Vnc>94 z23ObpmlRXZaBGyJ;+@Yoju<10j4R(qmFxFhM=2}6kmQlbcTtNMZ37??OkAn9DZA6k zT0Xb~bb0LX&LKLD(+n_DQb^4{T-AdQ%f-y81X3cBi>NG4LJ4Tm!q0H5SH2V)qT59n z#Q8VsW};`mi_y!$Q|)%Ml2zu_CCH74H_w-?cbIrU5k z^x0G3g~brY*K}j)*Yeku>Z~A@npk4kETLfgoYwxs@AmWlLC4P7*abtcaVm{QqYb~; zTbKLFknWdluE!MXMFZ#JQS_u*#68qX6~5-4=5KN!6VEt;Ki+3;@uM@2ebvvgUVia% zp3;Qvm$uYgk8byB`*Viv+4{cNeN<{yr>XILtok1NBGvwW^%_IYNmF5V0^R8WYtwyXt#Y1u$2?WH-!S z<7uStnt65D44SL~bLhQtb!EEEd@cu-90+v>)=>B)9F}ATh|Y@l3i#|+PnjkMhA~_U zUlbON*mh=+5K8GcvAoo}hD+bE#SAr_m7seB3NQW9W!oG-+w1F3ebrg%3crrZYWJ} ztgYBnNZYrTWu%gsRM%7#^%KTN*Y!=g-8L%%I^c@ycQ9{lwE5?9t8-15)=u;N@=~lu zyA944TocU33%8||LslhouL7>Uu>|ta3RHKV=tDcc23YVkav-ndj3jY#YE@b5m-T6E z0aW7GZDy~mgKO8S=5b9r!?J?*Q}h<9h&#Gks^tyJIyWP?f-wfGLBMyB7ujE@ACMHq zcByQcp%3?i$N0t6n`<}8qI=~fR=iFYlcmQMy0dugG`H9)fmV~mh=r~cIn+Qx%>5-W zkBJ~Y-a)J=KUcOPzhCa%aLoNF{ioi&R$!355TeT2+T}1_=L>t(r}t`q^5#9Z8_o+- z+7%djW;XnJOxjeX(bD(*@EqW!=6*A8ZXP}VYj1FEhyiwui4TcK1m?2-D}!4b$h^7rOsivBzBDnKEQM7dT|w6R7{1@!baj(}%A= z?oXpOtx(739_H+jCr_svbYVOe_~8yuj$X72=i$zfzw3Q|3h3cZ=ubn?P_XMAM~*&M zf21r`vpij&`Ti6e6OM-oJ}QJ4I4b0k;3a^FgAvQ)0xl|K$jt1IH@#>$0;vG2rV_`cnl4)HRXyQvotM3exHMqmm#N>QZ|#0-sMj z_bYC%D+x)9&PeL#%IE25dyX#%mXC2k*IV_i$RP&w9YrWDyW{s5NDN|530LI|BO}6} zipUMDH`&N>gB-kTCA)Hg3`v?)xfOZ?$O<%+gQE+tI;lgpQ38i2IJ|s^Cn@0)TW8-n zhAWots{>$!$$$AmvA;$n0eD4uYGs{=TluI1muADaRKYze{WAC`LANOv>-WD3uqyDY ziRQwgCGN`A9=sGF54Ef&G$_;Xf3XeanT>3-eVx(=z^3=VUkv0=fNlB*(6zof zMIdLOV&bEL^>phff-C#jGv%H+bY<$_nWo?*b%^~cYTvEX50;X9J2Ij9nD8Stv zdS+r1aX1ozvep8*Tn+!u{hPcarpH2axc|O=F-x zM*E<#ihGKuyx$34=fM8fV2r}C)jhsp6CgiUVL zy~lFN*tVqXpqtvt*087>N?-G}<@Ino#VOsZCE;GoWWADUXK74JjVB%#RrDus*F23WjKLm(9C%Puo_KzXn|AnnByCd1v1ZC^Q1Kv6NfO8|F z+Bu8%=Lv*PwWrY)iMZifkq!rvT&;6e;w@H~aLhTDreiF>1*RcGu}=KMHMOQ3v<&fz`pfLqdyp#v;@ItaS-~gloHE@oB9K0P&u*lF@)!SebbE2# z&VB=2FuPI`{rC8mRQJD*ZxFeUvBszSNs1fU@YRGTVp$n5)%i+#UgNl0CS4^kRI>6z zKp~Mv0PInLHX$PJVNbWzUI*ynW3?~>DO*-a;WxV$i70FP9uZ({`-@#vM`m#5iJiJa z*n)k9C0;^cYRM?tEgN?Y{jC~Hj&}SH*h7_y=>An6(!D+o3p&+5^##|v6WjY*p_&$B z4}4hwTU@W+#;ScVwxRi&$cAN#r%he(qcS*_%UL@uFb}!WL!OhATu+KUZj|op^JiFM zzTEdF@M137<`rIDzx-)@p9bQSYQ9j}H&BcU(Bsv(V&?a|I))~id`7udmdj(q-{Fz} zgJvWZ^I$4?TkEU)pqBq?$d-0BOb(?>LqRphQg-f7ua#QiVe(JaY+f#053jb|ZG1z* zc#FpvN&KG^#KPRI`3%u}`#&J)?~h8=$Lq<-$=mHe6i27W?cV6`RK8BHkN)xHZQrl6 z(aA{F=|AwK!UlKWd+z^QGV0I&2d3<^x&E)3(QSH;Y^QZ|{KH$X_y@|$8&w*rDhsBD zybx_F2V5O4I|rn57s##CJe}Swla7A_&&Btx$$1P}F86XJz09vEil&N?S+ComqpuJnCrB(-zVQV?$Td`anU$$T>wz`}u0Agbtz+(s<#1SU@1 zV3y442xs~0yMEg3>=9DUC~=~uoFttsG_ChlIzf&&G{u*Bez1OrJz^yy)%Km5ma^;) zr^mN91}cWLoL}0+09(nXHxas2BLQdL><6<{h2ACW!RQ+>jsME1aI*gJ_kIjRMN6&< zl*G@;Y9Yg~xH4rY^N3PhJ@Fef9FG;Ym)v{+HH@Nuft36ShBvQcZ|nU=@;CUD6C-{d*m~+6g2N`Eo(jU|DE1A!6;z~CSmkDn8u6VCiRIIo9XyWssHy{GAFl!3<|04Vv7 zcfKZXLuN zO$dDrG=aWBuBi84EQUf&`u6eZKp4+UV#LamUr^K}lKI(sR__MQ`aV4A%&>ceiO26C zf(FI>CbIMo)>1tNXLw%#FZ$iH9wFVIcrsvCRT%)b;eZY!``ddFtEq(gW^_GKaGt-l z7SK&+WLagt_R^QD(O!1jz9V9rjUYMQs8NfhVUsnztkgl*+treej}umlH;?LIQ1GXS zZeS+)yzse)DwW#0Ob3O{_yq~f^N}PVMk>O`3hm+!Ll)~rEUQHXIg=d>A*Jnpb>+$s zk)2m{yE`{E+6k7n5@Wg!9+;M`>33j(#)9*B{IKE0ET%n;NUjd!us(CciXp=zR8&XD zs_*@zeU3YzX6FnHKwFd#`pjuQ^7b61-=+{1r%6~$_!A5AA2tLpT(gZC`5MOHzfmiO zbM|XRjHm1_4rxwN;=}QUFYSpjKdjB@wl1uVBD3OeJG8jrw3)6S$^o;t?;CR%KJ{F( zwL>E84N)x@@wCUOmP(5vz_`j~An1#l(rGgx5y)bN2MNv&EAjMe6roiYrfs+;u1p+j z-{nMwx%&T>vvF|sS6>aV-*2!3{b3N2{ucJp#4@dETK8R7;voh#)CP)iW{=rx7x{Mm zH)sXjy52ldHGhQtxQ@RLp~@9|J*Q=1`PfH32LLE zyndCrP8~<9cg2d6QFpN4;=eAXU^4iLFl%(`F+ABQnwM7yS0+|!6ex2{g`2Qd9nTjV z_^6I@DvY}lz>vY5H)1dWPz3vK8EQOSv@vH1Gz^+3NnTaLQluH9PsN2>o62xupCWTj z&R%HOM#dH~?!4h?dM1+%%UpSgKJtHvtw_85|AnpC{)4Ub{GVVeiT@W{`M=o8|HW4R zx3HC$wENvjf~r3>+^FzR$y)DucT&rJP2uUGY3^@N^e?I$Qcx?5fKz^df$B@S}oH+ z=5{H~+a8}Sw1m_Yl@De0;FQwA<-XE!BKse*JGae7coFq%ir4P1$aqFK8-UFyOxIy` z_q)wM6Id-Fu*d473&i~*kBk;a{Vt?=y388=R6uX*#@Dw$ffAAFH($JHY z3_OEA=LW>#kSiP_1jw6vM3kXjNs?>;@PlN zt#ag0C@%@8iQDKZte?H`amxQ4KS^L!Qu;4loM$v#U%19a8NEbIB>eRthA4wDT9oJ| z7^8O*M2TLbMGs?y(Mz-tqBBaAs8J$DFHyrFdZLryj&O6=y63~Y)_Kob=fhchpY!aq zpWj1@riB|IG@!eIQkb!NN?&PHe_W+J!k=5iwwbLlcivKiX~inctSv(- zKSy4y0O9-a&+mA!W{y0oWEdJ{8GYR?)@F~Ck zitcQs!ty3P?^9c;3X9k;69vf)gy}?N*#CFwp7(t@5H>u1pShU@ea#ds8>mexJ$5dr z3>6;9`A_LM{sJeyM3z@>mGUVyCw})wx25porVj$fY|)J%v}f=m;elKFn<*lW@O$rG zZD$+QECav}jX9pNWdekhmpIDb!sj@g5<)8uxx`hPdWK#uL%f^ibJ!RnG?(Yo<$iBA zA+=@3s-@M>-DkvJ6_Dx34Iu@tT=xCQ8@W11XOfN(cE`&6TS@L>p~5rd!zGH6znC)V z>%9`oj$%ughLERyc;SC@U#zw`*%N(FOz{&)9s?AKhR@?vXxTpU&S1bS-&|#XZ8!B< zsCee7ITgZn7!oRzeXLP{c$brc(oN&O*HM__0Vh9)7Y!1>ee}~lRPrjcY<)`+G)kG! z*yvHCbWGKxaF1!dnfU%DcSAmYYhmaoMZhOTQn0-2f*5iFs%p&nS&6&vB)17l45td6`JasdKjp6ln2}NKrHk{FXm7 zfoKW1Yz1ysHqMn*4)_uV@HtVz*xbOd-=t(mw1S%IvAm*cb#{4Jtko`}0$>Q)O|pYk znl}5xBGBrda7F_?A$)dZsJmznqlKvhPok>dm-Ao zOY>N3J6RN!lug>WMBtx?gwd91jYqH;p*CA~!oNJ|l(kmLstbiuK4DM{?_IrMA$PL3 zH}X1U8I_#6{aL<<-MEyPoBFr=^zwp2!~3t<1Ec{tkpIttxI~||=`y*O!{GqX1qeZq zn>Y=`)5wY_ubMHJVmK7HK1<&r3vIh9DK*Mg%w&Le^UH#LIRV=Dhw&5IPv0u)%}&b@ zsD5*m!);^M5~V99`=Y@!Zy``+v9=e~7+(k6w<3bK`bT>rIw@Ev2|n+etD#v+TB$zN zZb`f`=HNUEpm-y5hSQ_n>pNH=HEXU<;K4?IY~?c*y&V?c0BCr_k$OucPZ3aBD)ouCZjploI*8 zF~R$lsQcJ6+K6Ck>q=9zcy4g*%@W$bJ)7&!GnPNBu)q}>VT!@^Rd_Wg?RFIw(9@+XkGoD2oSF(v(!?_zW999fi}`!<;#%Sq;a9HS6|FRE z-oU;;{D$@&SFWp(CBTcyE-+4T%Fc#=m2@xYK1F?Ydt63ShQp|4(|w7f{4Gz?gbJ#= zH7G7|6-g}M<|QW1@x*F(pG8eA5mtp?T6oGvC`9YhL|zY_kZ%JulNn5?g-kJRJ1Dyw zeJog+e-OfrP?CuqEpgvcG199ZL9L}CrfCC$_MVf?_7uA|6hAh!Lxn%pVs}&kQol$y zC158sGy=bNcF-_!owR0Cx(6kovSuF5m6#88a$Az%vnC-s`WF0*})uTnA+KM#YM_aBP zL#Hie!PB9XU|$l|cPc}BQ+KIGZ6aM@)N~?G{oo+jPuZxZUm=eSRs{cYBx8<$=3_2B* z5|{p7cxWu#xq%f(pGg0w`Gw3Z=o$E7xoYR$q0PI|&8g>XK&thq7SArUaDva+16cdq z9~)Rj=S}ZEqs#`W0W*jYBujE@>S79A6qQN>N?NJ@o|&eJBDY}|PSra9N2COOeub57 zl{j#M%U0W@Rm5wZ2a&cLU80RYU#O1OYE4UpqV{3to(tBpAzM)XA@&kh$hRn{ect83G)?O3%)7hGW1gUJS`>#nOk5-OpNEw>}#3yspFsU`C zj+~RtNCk$wroo&0wV6+oMsDQEjm%}MiShd&wemrv_8s;Se-6pl8nx+z$U*R#>_STe zITiZ(TdL$8GWry%By{LQ9rxb`y|Fxnz8RZOWpjeg7TzDG$hQ5|O3|0Ig{cp7cF-;o zSl>oCKIR%BSo}jSNtJ&R>(evMKv3rS>d0fw+kK zl)bl!#k9O=ou(>EWaY^apBInCtMXCRrnFLgVeA|ucvpQ}8IQ}z(R!9x_$50~aAT-L zgi(D!eYcQE$)tHermD!lWlY+B?g5+8Tms-FOHA3JLa_!21YuZBXdCyjQ>5$31p;?$ z8Ni*p6u|%#fxOU%pi4eCfql~SexM!twCr;nJS;`137CEno}bqGk4T9*#9#-9gS#ds9ZkrHvUhLj?*It|f^LSOv79sx+wdR(-krTWxuZVq zL?1*kdh%7gRchUaN&a_U_e9T(fkW=RpTsq(39x zpi~z$;mkmm7=);JFxEfV7WZ-74^AvD`|NvHu&WM*aZU7=G#d-_bF|$eCTe|c2Fa6E z4IlwsVkt}yPHglC;}J=JDrpDf17Bmf>o9)##22zVhSb>PDp#QdDbq-u5qZ70-iHK0|7^_b$whh`bUX3SBA&Ex{Xa0p?_v+} z=_;t(!W&5+%ZjH^zTJ8PSNwT zz!JFKe!2}>x4&e%Yeah-9qyF{t7xv(KM>5r$r{t4*FZ-f$s_Xg@Mna(h{e65=1JUY>D=-?0OSAoO=VUctQDHPvWHr}N+Uux8)T#wz38~>y$`b=cs2abNqnOm|P!HNM5a2b5g9V=vtm{8Ywz?L73j` zK`IghqY?0f_lr-*$^7IKjYGzUtxJesU1u=ICc}fpN7%|Qqgu|ZZqxdirly@*@$zw= zL34YTv-CDfXXohXc-udo`fxcpIeEO5smeZ`%j0?7qB^bH;qiPH`bX9#r?cJt;Z4Gx zMfTChtSSFwbaKB-hVn5O2>m;bMH<@6y|R4Lf*if7tds>@Xz33h-2i5*(L4`rxJKre z)eL3yu;oEl(Wa}7BiewaJY0>w(}GWXS*I5r+%hp->TLm5E!XHrQjVe}+SOWqL34`1 zQ-jyD3J`6YC9Ky^{$REwN9{CLG~2DuvdChkQnehNw)o6f2p!Bua}L^b8f|M=?@qUu z{`t&IQ`OuTSed}OciTK04%WQxt)DXi5wS_hTFr}!6cVGF)&k$!Iu?<=`no@LKh75` z31c2VZ&jytI{Mx}vFx0^y}cWQ&HA^e{Ej~6W!Zg~H|W>-H2w0YtJ!`i)kL=ZWUKc< z)M%~eQQ0a+=CtHE9aJL}-1jP~xrOVVfmy>kveN&AwPeC^PA$E|X>6_+I%{Ssi&X)Sp zD=aG@oH;pTtOFy^M`9~jYEC)iKJ_W$_j`7=?aILCQpMERTtQOx57)S%c=m!5(8U6)XMe z(&s|b-s4%!ADy5~*Le!z?tp2^jM!8w{gmdAfL8@rt(QP6ILpX63_**ZkE??Y1*SNH zul707D^seyxR>l_$R-YU$Scq~UF}Id#4sLBXl{>YCVB!bW-_Wv?4uz+GF&Fy<7vtc zFv9X_=cv@`e_^Z59UM7zAb%^%dC>PXVky{F zuvsnPMhY;(C5lm~uoyEbQ8q@$8QTKymc6TuV9dws+TTO*=*O9ZSEv#%MUD3vQ+#p> z3qm(iWJJ%22k#ca@>b&Jd0liv=uR*U1_bZ;k9EKZr^%i?@&d~HH&SXc6kRywpd;cC z6q6StzMmknXj@cqHQV9LEEhFLP|0)kXj^YwyR8r z?%z>D9D|~Tty9IT^584Wffbr1{TacUiSU}&4HtYs>RK;xz+V=cQh67Om72!gQ-Ukl z+Z-uC0#wKpPV1PfAi53n#nl8))roHBkW}`$j3nLTM3S^^NSr&21@@yt} zkL{;e3?rLOeH?8DfmQY53znEfF2;9&cn7MNXJpCPIR@~lA%^Ti;2NQEUywY{0tRdb z@YchVayLZ!=sC_vZ$N)Hb{HP*#sf`yYHs6RPU>cOHKMFd*V3*SCX1Pow^nIMBLow_UHh1QAr6fvgPenUl1 z1eD3npLp2MV+?vxnLE#5V9Nvt{~^NkZ$ zrbPTK#^aHok;QmWYof$|9u&o|{2()oQSw)icn9g404s=Tc_SaCtAjEeA%Zr9>n%~| z{v*tmOUxF4WjJcbhFAtav(e_i`={xONpli-MX-7&_|v zTP9|}DygcsDnA?Pq6_GPxNG5PnTk0&uM#K9;J~nKE3$drFWvT2IggZGFG+!eP!rz! zgkY{eI}sw@uHspHDExhDq;{_Wn~V9XYestd^*ei(6w4o=1mf@cDd?K@Z)Kql(&)hQ zV`G(Q1H!;mW@Q1`D8IWt2K+(|T`gdOc`XS8F?D<1*eN0LRd(f{NBR@obYa0|;f1<+ z7B{NXfu|bNCEe_+MyY6=N@w;RDOYjK7o!s_VpY&cAN=!R5rmr}IURm7Js%^xXZfvR zGncxg^>JM*y)2g`Si3~jSV_-k_$BZsnb%#I{YkRTCYRcxn6M~ zDOx58yRQ!#I+HboES1PJrKWKo>rwydqdx`0-94RZ4+dQ0DJm;wF`> zXCOkeedmKC$*|}~(C)SrF%Evvz2^N$kW#lO#UpimVooK0OOR4}lr>^uG3LA<_Qu_p zNr|c|7t9PCfv2>C9XLGJt1ETh0ME0;$fwFO*%h@$sarT>4~;h_;p`JfHw`@MfTC`K zM|y*d5a&}fa=TsHI*omHZPi!EZz(icr|r4ll$c8ZGYrpq^1!byye!nz8d|zxw1`o$ z94v2LgKtTSuHAbz-cMzw{@pO|<=h|iZg8vXb?T#`^2FrxTk%nmYg0Cf9B3;_>S|o$^dmT0+ z;MJS6P#aY8mgml=5MYpbnJw9gfIYR<%z1@NR>VrJDS2qrH5(k+Kq~!(L?qQ+1F>Ol z4+;%eHB?@q>CM{Av#A&LNkw(NqHqe9f0pn6oL@tVq){5Cw@SELEX*315a_lY=)SV^g{`7*eTO z<7J0}dCfU&SkSOgO=w5*wG^wc0zW{JKI*I=59^sSU1ED^q2!p;wHx ztOoo5Dh(!b1}jlUGa4w0uAKo^I3Q`-{zR4tt|l8)cu}0q$1N!6r_A}%Dg+|)pNH^p zhO%FKr>5k*O}u-c=zt`ciSBKmfw7#(hA@VwL?jz@OtIuBCALmtDgt}01xKs*ytEU+ z_;?ff8gP&p64hw~L7Xh;;}(&?Ue&TCYj|M^grN3BgE&dlXwtdT%j=yYpD@uLx|c!=(A zIB;DB(R}d=-V>PWC6IAi@x~#+QnUFh5OQ>CG!u ze4Chu(Y3_y^8$@ilU~{*OKS6tx53?w4b5ZDz0sRogef_uO**WN>m0c?%57TaLiekRl5?>{za1rC^yFt^e+FppZc306hOf;ru(d!D z&^aDA)NKqC*?CoWdGj;i9%E^!Fy!dtgJ{^8{ecu|O53A*aC<{jU7ys@p?|=N;syEB z%48dJJ3;FJu1ZN|K@5-Ivn(OBIcy3yo@@}b4nqy!w#Y#QkNUIu~tMg;dDF8Q6VrTqB+Sed3$iGGuZ!N)v~@8XD>MfelE|Al)&Xd4#$Gq|Kwi|dQu@hz5i~&V!5K-S zRFN}6|8*JHy3Q<8M3ZjSU=|~j&Af52;2Xx@5WeSG9EKG2m7UXto3_!6hzL_KC`WaLi*~8?ErwLuIo+5gYAO0D z+@p6i5z(^;;tV?N%U1UXC^V-=VD#f8E3ED-marmM%l+xSJnto8E_ujiq9_V@s(LKP zSv0|+Rs9tv>Xtj4p6j0dIp|7r_~R7Av@x0CQ*yXJ$`L*u{Jq%0$^TI_&Uvu15~fc_cK!xn);ew_E&qgYX2z)Pt# zPV|S_o!H;dFadY;M<-yGdI7IFPN$`)Vno9t(b%MtW=>ZkbIYOim30G5PT4(V$)^6f zA@~SDR5aYwjHORwXcQfkxhRUkd>Sgb-NBymR4X85kXB; zQkGUCjq{bbe#kS43_6|F%|rIEzxIR@!wqy(c625$xZfkU^UP`o(@)zA;BZ}>8qiNC zuposbG1{~X5Cq=^^H|`;g~YtJ17iC|>g)w>zGEExGY$m)BJm+HnFaB(#L>jLIR8$z z;nE^T{6Yuy>9^)86>&jv3vThvxV5j!fj7J!_7` z_zSn?V@YV)ifmW^o*?#z*!<-aQ`y;tfhQxzR&*a1z6qFUFOI5;o+Izq^y|MuTUlb> zxyY*MwKq-jW)mP~J3JXFWlK8HqGPb)gQ8K(f3yE*0b(jj)t^|fR{^UcWB3Z$W>vFn z>GqTI1vp8H zS27oM6F2yRKDPJIvnfyYvPF@AcWqEkDSP~t%bBbnmNBZgOA9mO+S4xuTx zRLb~cyKD3b=;u@%zoz0LOq@^*MO-g50h)DISQU@69!rC{YzR%_9$}lYiF8!Kch?sJ zs=nz+Wf8sOX2fF-Ga^`LC++Oa4p)5T?pYisq4C?A3AhE)T)y9!$`J%C)l7oJnN@1a zMf1bqHmN#_6}KKGCD$+VwfjC(WsIXt;OG>bA?B!wcub?$aPSnI6qCq*`}X_6)4Zd| zkz0n>uR?}r&!OQ32QUikUMXDX) z7x9!FbFEfBuWw1-i=E~dYJ%T-#b|3t~4T8W6DYSY7}hi|n^1DV^Q zHg9`q4b~D;Q&c{X)q__`2bcRy$BXR0&+gbV6L&(=vngJ^%lXDT+Ry-OMrFDN*K*ip z{*l0D*$nGRijI{jki-{}pvl7%vn|;SGZ`roxn%oFvSrp`6!A=-gy))$~}OlHK}K$fhb<69@edm6YVyd zoNOP~Qz|@+w>45>k9!8Beh*C)P0-UKRfx=BE+o=)F(dYnZLYHMJN4)1Y_AfS( zX;rI9aLx|l6g4PVy0mJ2X#OA^Sg5(8P2&su+Kcac@l%;kn{@yY(ZkaN_U$U5!1@BL z5#~qfrWB|qlU${CdDgFTr3CIZuy$KSm(Ks$TswIiEYQ{v?#--}k4%2z0o#qV#ht`C zMuYy{dt;~DF21gPl9<9J;ar%&pxBqTe z#m#OLHvQ`>!`HV~-dJHiDem$355~C9FNrJA93f@y65Q<{wlu%bz0@A(0o z)|Ur=U=v9?Z|Op(D)M4Vap_Bx3aRyP5KVe4pnlG_`FpA+dtHvaAWKsp@aUEG&P3pF zE%_)Yl&4;bFqR7#*#!}uBbGZc6`b}-)1wxAqg;TVuEZ-bVjtUgSruPo!uGTkSFt3* ze)L);nJcbJ6Q?ISZytU~8E?o9EpEd(HP~OPj^=C#c0X^7nYf!tfj$rzhQgB%$Eiz@ zk_7USeDXB9@@ynhBm?WBB$kHuh)qt22=aSOvwMUJr+#VDV-{UF5g|7qf+vAL>_8ba z6QVcc#r}qd34WcP z%vxf2VQyH^JEydMydR#M3crC^dR`-C+q<@DsS2in_OxktH$5{o;f(AlOT3V zbov0FleBSIuz?He6~OvWBasP!=+h&D``b+XHZ&#r!63~@UG?eiwAhKSR9p0ooeT*M zCActutoCf+1|NeIH-!(emDXKTkUwMwYQ4qmQTz<)Mo#Ys;?Nyl9}HZb#o83=sIh~? z_MWjXdaKZcO$ri5%pLx#L5dNiln!TP6l0KNMH7iu8)AkMcY zGh-pC^M5L6XC|q0o3NmiOt_D#@6q# zeKR5sbA=U2*IdM?rByj@Bj%r#jcL%5!@T8P`>=B9%`>KKgosNa!1CTpm1jzJ1P@ql z|LIRP>W{Y`l-Ms?sUm;6eNp&!1G>6B zHV}m`@5Bb<1|ni;91Zb|rZm>iTT*&1Fx*yGFEO5!_~P9_$tlUuFZ{@|p0%Uy zrnMtboof=8`+&`B5OXAR#@l3-0~j5hh053o!&y5O0HB1pYBx?dSEsqeoO{ufYV|md z^=*$sq|ae)*+YVwMMgi4h||v$dl+}xwE-vDOQU#M42wYl77I_9NImt+-uzrUl&Z+9S`Z`H_-(-7lfrCt@tA5hidV%yy#P4 zNUqzF{C&Vu?!SORuSs=!jS!0RBU5gw50-KOg@n=AWu>)B6==M<*}#I{Ay}&9`S!PI z-S8=}4xly!Mm_&d-S2R}pT&EAg81kVePh{1R>x1Eu5bUhq7Mk~#}TibT2~V>+u)!T zG%Mu=OUFf_U~c*M?b(CYlw0J~kXvu}i=>ALuZ2U%m0eF>XW~FSU@{w{xPQOjVelsb z2YL!LK6nx1zQTWES{1AbNib!=^=9LftpW$Rc4gV@p&X$s1_KnLRs@B8VbW2*2f`*< z=&aG zmWiu&Y&djzKmtGWzKZl;>p&|p%SLR;@L|wx;Tovg)=;Um3U%^ry<4vs3qK7g3~$?o zd2D@EBqwuzvMB)P=Nwt8zG<MO&HpVnA54PE-Tz zXS1+1ZqvDtnv^cM38V}KfXc8bO|&;*gWRx(P6;t@7_X52-;_L9K(7@{E+qP`=}b6I z3$%bK$7}9dCc9yVA>oIBu?GdM&Nd(Y>>l`qxx5tpO++W?<~)HRceWoTm?ZW;!wg&F zC-%Y>Ivv;*Cq@jfog|j8i}~Juv@Ft1|Kj|0qu`@`cUtf_WEk5ixZS9~p;Sz?Dwm7C zIxC??)z)H9m9W03wj^!IbqqQdZ8Lld@L;+_&K{tmxkEwAH-^UZShHiUFIFOtyVxgL zU4I1;VFJ9P&8YLaSVtH1-N8sx2g@^Wn9da*8U2EmhW<9s0CthN26SEZ0B!#~RqGF} z|NO&DNTek<`E10YVt7=C0uAOjVvI#BH5wdYa5!s_$|9LJvlp?BfXVf5lM<`!uzfJo zGI5A{o`Q)QQV28URg_W&bG!DGy#zdGI5wh(K+#=w;x*Iu9-H-Wo*pHU%0oatux zf%fh&j6(4w**Q?TA}KddL!>FkWf>2Mt6vmd%9iU_RbXl$;Pu*@-Crm3jqqDoti&VB zT>Ya7-*~veTz|l8-h&q8296uUYrZAYK6-^KcU1DJR2 zlNillEmQjAzqZ?zxGYMjR(@hpmCB^(r71G4>YAm|NOhg9X8Bkh44L4c-pR#nKT&vn4FzQzcYLs_Mu5ZHJ z8*1OEr=qF^d{xm{lj{NJeMmEXK&*A9={HMD36ESKhqX=#n#w=K%^dxC=gsq+G*`NW z^z(~qVy2#Ecc#{5=CNwqBbKFwzv!Jn4;GJJe=*)0yjlT=@OeIsJ~(W!^ahsVkE>{w z>0pY&=NuDHc|0BHhc(jWGs(S+K4$EOgr7KHZ@50>{#AK*wq(2;zOF2sueUxOSqF4g zeJ>#9-=B=QsA$Gm%Pi?tX(?2eiz~X=zb-*=X0{N!`LyM(9DtEtc;-Fia z`1*bO5>sQ=r@lX7L=J@^ zhG#|8n2viK7Syg0;Mr(|Rcnk=&9g#$^>)3zd!A3-fRNM6{H$YdScCmt1HoBz6mFOG zy`~+0)A^S|y|oTzOpAxouj_lrNu7fBe`N6G4U_luam`l-)73Z2&v^zbJJB7qU?~-RvRjwZn@rcw zx7)!`2l#uwd-ET3JWuVWUN`$>wJdO*fD{|nsjSSsH;B}UcBA#Erx3h~pSm~Sim8T! zv#`?J3gsy@RxJ9`feQ4%U1bb?lNxbNi(>1L5OnrJXe{OKB_Eg+Zjsq^5w!2LNJI9m zbz9aMe_at(aAJG{=YNA@gp|~$?k{v6^co4WJ;I+rh*hTOaks9P-fxzOwi`gMa`{_@Xt4x1HD)Le^i9)J* zT*-tDPu2hbgzRB!y!b*qi0?U?nz7TP8GcrxN?K#mrwHzmLl{ts;lC%YpTVK~X?CkZ znY6y!z8GNq_!6(L;Nm&|KjL*2I_`z!X8WFE!K>71Qz#Uy2jXnWr9RpMmfdoDt{?Xh z+NRJ5QJ1GBmgUuC**CkV3R}`UB$O4;9tPVT+Ls#^`+1^2Y0+Yn$L5hmapGQ%twRP> z`X#c5^E6k&*U=!)Fga8#dmn!#?lWp(KDRuzCo6;`po9>b^9XVTU+S`S;vZ_46M1FG zq|j98&C$=_tSu{+g%VPtKQfD0S?X#W*aIbsh4x~>BUrRw;b84E2XL*^09m9~WEQ`K z4Zy9{q~YW0m0^PHODD1m5FmMbv!mti$%x6|7x9Uc!oO7NS4na*;wA!GPbs}P_Mz&$ zd%8IH-um^>hn(B{}xP&BRXk2msIjok|T>t(6_aef+D0 z$i{Su+Q7BvGx-bmlHc6z>gb@Mw^AdRZEo-W00z?xRnKI12B6>pTszc2z-w zABRM9xb7@jFu8u~b-luy8Yz0JnW1GLCx#`Q494EBX)b+NamH6=4vb2siHL#0?H=PZ;@W6@T66+y8fznJ-v%b5PplGR`D~56 z5ssj$(CmnqT=#3F+u@oo`q2nHRx#Stu!>M_d+43rpCUoBEQ^Me*tB^4VG$N5qit_} zvc&hNU>lB9lPO>_p`h>IXq%0m`g@-WfzSX-y>QT0y1oWI{dL@|!F@SR zvAvNDdLNmIfe5tMWnTOG5*;3=i2sQP9R!~*UA8(y zjjircrWM*f>PNO;Ptto!M zCMK}N$}Q!ka>4)!bx=SiBnx(Y0+ApNWEdCIOXBq&yEQ9lC5L<9Fg)*1%Q9^19y13uR_|l z$>Y6UUk=#!B(pyt+PYD}tz18H$qyMMgy3S_+5LR~?7C5iPjYnUt{R8|x}TO@vgO!X z9_Qh9*s!<~NO~=qjgSSGT6MT(No^^$_Cl#BTrl3j1T8euF|E3?d32s817l!LEJ)R^XmglViGmWn$xi032R97V}p)*D9 zWJEsTjFe4U!;`OW5ZBW{Hs(&82_AFB;Pm2uPm8gO6idDR(St*CiXBZ8aL7x}7isoA zmi``__a-SJcT}9gkGTTO3}h*fy(7#RFIP573(r)N9$7;;mzHU*SDn5wY!iO7K7UXo zf^h)dEAoQd8;n=jGz`t0teH?=5=L5u@S40g;;3FvM8Uk4#8?Wyi$JD~ssMHXU7VWu zX^h&~q?%wb-{enZD%FgAx&?XN0-BIm9U9=462aWu?F4;f+{>?Y6Pc)(V@Hbf-e3d) zv6JC(CQ{&#wpT;gccnw2N+e*AwTsLW`7<6>vVlSmKGjTG0E22#gUq_?XpB{2jjZjv z0?NaB1Z7>2GMNgO1eS+YZ=_MuHF{z~9A%2Mg!<0Fn1n>X4E10F^WhPUB(#G1TsZ~< zrjb&lgnD=u4HGm=^v|-S+NtvT%cOQmb4$*Bpq@_OO74Ef6_HRD!Icj0x!a!YNphJn7D-to5wkQ;^ zn%1C9e-t`Q>psP}m&}vbU?yo4Cse{7-@A)Hq8!yUn;}dgF05J)k9%atHkJZ?* z;Gl4nH-SFzAShBQjfX@E7V{V))-HUK0ADBF6fQdXTaoEm3kc{ty zQZA)6j9OZ2Ac>NmPf$-zscn~puamdh%03*a7)h*mV_?8hu-s>}VuyrWRRPpZr0h zB9ds5Jbm1<4~!13qD`ClT*2-by%-|10k}7LTI7*8nsS8ul>Ts%aSY*y)#J%f)VgK` zr_Tg6c_v{9Ms;1BT01AcvoQ1@68(AMBnSFkc4tY6KP2uav&Gqa@{rW@R{^oEA!EFl zAB7~f`&~I3;L;3>rH<(@w{N_^=e(}Ei&yO=Dz^stPup2HNHyCp&NCuz`^ao?bR67Y zRU*hWJGF({p5u=Z7FRe?0=FN(Q4LPr;%7_M?SF%6;4sDF8xl%w-rYH(hh?H8rghsh zCk!m~g-ppqQ{r#lDB?@9EYp}8ILW0Ye&qjjf;6@SX%`O)LahP1--B5*ov+3CrLf0; zz8EZSsSxmsZ&*J!ttRbYtR5YYRFY?MCcep#><6E{H)RyvWayHR28oFzjmhK1MWHa8 z_#IZs)bd44z5|s_)CzZB^tG`~6xe=CkIE@j>T4d6^W0J7pLkFx*ugr&gO}|f_>SMQ zRNt!+=w&A&E<^aW3BrxpvZ?O%%LYCn%dTvGjaWZXr4T)eT%3ZSNztz&+e9%q8j=yk zvK|eu^Ln@#KumjeKeOFQl2+ENE?qNr+OYmfp|h%;yl@;m4|fVlqwGTC%pwcb#5~6P zHDapnp5>_!dW_dGvbQ^!B!6gkOA=U!8LrhivU4Va;L1?H)N@g-TM&5YF@l)Qjc2l} zI>mEQfD85KfNn2NcxRMF<~2c-En$4|z1sj=-T+MIjG&DVZsa7nO_yG{fJ7LOQRB-34k9BgU zUIx3c^61C)ik&y*^Tc;@M%pi&&HEe3`2kqYR4khp-QJ&z`{b;w!SgGGq_MEVPno^( zn)Y=Da@Lv0m2H<#CyNoJTRlKofFw=cYhIl(&wnkE{W6K#wRva=oljrG_}t+SIlv!? zw#bkQ0184f?v2P^bT}gYCLVx4k~;7i{E=VanxQsgC*0kJ@LpJzCOX%VQO^Y%Vy~pA z#u-2q?Gmet*#;i%3+eQ89^ygqbuvQ826oTR1x~4@?h#aJhDO?*ZEn*<=IWI{_AAt` zf9)qNc8e$tNN|Xl-~Za~4P40{bB$o2sIcab-Bv}+8g2)+#V+|BTx<-j@kvuz%Y#lW zO+KPfm!Kp9|Bh5tOd_9M2>+@p*(|>dMFAa#i_y-+1$qoVCP==%JS2?nMP1;a*qBw5 z_Xocr1#uohhH z3ycM_NcnqeG1E;XK zYQVDFd&k9#-8G)=9qB#RR(-@09X5O3=6a0J;tcy|lcDX3$~P6&3@gEB7-E?^i+jaa z)n7p5JyFxdfPQwLSF;74PyL^k`=GB!MGZtTglp|xl-&WpK%9{VyFWg5UNGA+$j&7@M zrZBw~c&i`gqJ-qR1>(kcTm^cp!5*tRSEbhMmR}}RA2#BfV|UaekG^w>XN5VZFC{1K zEwrd0DJzS@K_Mf+RsX$`BxC7KaOKDq@#lmcpi8^OfaTl|kMUjdl7gV|Gi@fxYs7U1 zeK59u-AVC^ii?_KWV&PVxyk_vxgGgg0B zHGQPy^>F{s%wlw1n2#ed6joLNZ;cJhI9dA{jx1NtR= zqN6Sr-J{#pv_s!$%|8(%;5t&i*6(G-r$g7e0+l`4(+xvp!)=nNbc@KUC1md zN;R+fB63f3Oh*l1od5;*(TIrGt<(>y2*zi^ZtOQQ*X7Jk=Zg$z$8U?yTSw0NNv8hJ zZ4mr*lc@cq$}ak(6lwZNpHNwwzJ3ZYuI>%)YO=asAM)*UKjC%V$#N{l4uwjWygaI3 z(9iS7QM&b6N0xX%m^?yv+dvqFS*$Ab_^G#-#mrdjBj3H_X6X@fNu>i<>rs4?1KbS= z6|V0Prm5FH1RD`Ocjh}UZ#hG`A;^nh5SfQcv48P0Uvyd&4NHz3dy*l>f-Qepzy(9a;bt94vTzSHE4_|qHN@4lr zzDOtb$uhltz%jmUf@1l^?mT+-T)kq4M16Gz@$PR5Rpl5if$wkd^K^XR%2FTwJUCAd z%2EkIPY!ZjAig>vCkL1~s3!-1{5+oFghV^nB`4tu^JTYs%#Pyi^#FI!dVogAQB1Va z@YxwdTRi|kRLBr;H%i8<5{0z*^b_42Oi;)n_X6@bUc%Je^3m1Qj@l7jilMsy{{!Y^L~N>-ui?+A3gV? z#~4ud-~=|!EAF20VeBj0UG$&9SGxygwl9laW*`|~06sallylzYR-i_{b% z63g#9>7%!>0>@@Ky?n-Izo8~~EV4MnDE~ax1V;~(@%u!wyF;gr^osG&$vug&_f>)T zS%}(M19PVW%<7*3*`-)vIQ*H1Q^Br+d^`X~{;X8x!B-yWKySN6-E54fa+OF=jhGZ3 z#hWFyIs?8(Cp+kHxdi**%u_{#bKF0NB z?+h+7yByV!g$^0{x$UV~1YPs;U@!Qx3xX)Xhs3~pYigF21e0~MCQ942E=|(j(#atY z=usHUZ8+#s;~^p2x>Sqx<+{C08iT$0ose>^#|Y29E1 zagy>A;?L|nY-N3;H3GNgIXASsyX-+(_~SZn%TJHAW2V?~$li{vbDN2r`T(zU`^o}( zv9}lMhYQL+wA{^v68DICADT)wbnVUMSGz{K8S-h@2cdIDiMDj~hw0$IYL!s*v=1Qk zP3w3~l)(gXfs4p>b|9)0twz#yEZxH)@u_vF{Aj5>UT&s9(+{KNYgOx0w=|uW3`Z%9 z2M8eD@X>O7w3S_{_{4$DQryvllg+*T491)% zUI%ZE1lzegd#`Pu;)hsu<0N5X5NpDCKN^AxH(+tTw^F>fbTPgCeN-J8&Z9zVR&$qY zUFu`KTwW~x2gcmNx)9}+Znx^D9p#PV> z_EgQ*9XNwed?leEE=5-IdB@&q{M)9Bo01rd`qs#`d0;1|<3iVU`D^bc>uVbKT_jou zc12ppT1qvSl9?ViB%l_5PYg5@98k*%1aE~g(-Q*02B^*M`%|V@;C~J`({l(6sLl7c zMl{pQ)E_a^qs7Xo6;%o5W?$M%!{%HI0Q%`0L~h+y_b}~bxQYO~dF1f~v3bPBjLK@G>EHxExJs)?QkD?>VkWDv!sVcD+WnG(ri;^A(hR30>*zz z#-1Ph-PC|Za!GG#=EU!|E3AGTk-hef2K+WnP~p0xiT<7XZC8*Iigy1v;>pXyV0a}+ zX-9CVRovk5o_wL9Um-qMM#9qQUWUp1^8PlRqQkqDZKv_eCN~q2f8zQAQQ1Ac=em~hHr`d03X_<>Q_KW zLjuHt1iQ!+skZCyL`s0xUG{;zXY06Eh-Y7F?tZ&bM**ibh?|Hbef@A(fqKjToAnGM z{>gfZD0iLo_?RygQTR=rb*co)YyGtSgxijt%x~MmmqNyyG8c2aJNrt_jMMrN`x3XVF&H%2|B-yP`EPHvEP5xm?wN$;xB3q5nc}JO% zXLTaFXsiU=j_9lqxex!OH|h(S&?O`%G8yUMB{>?#t^)-61|3E4HISy|$n^M>=7o6822;0&fmY@}cHd-9o=;jxR4PX9ft4iQR8`h*^7T%iK7> zWbz>l+ZLXmjJC^7cpI@kAr7>QLpx_VDE2#etf`ggsFja)hnM!%{ohy*Uf4}%H6eAc z=uSC$qpurJ3(i=_ydPElIW2^wJpp)_{sc-6?uhLNe+VKtrh_hDx%m1=rYZTY1&?K< zzBNx{=p8kL=AJ=$oKEk|fAj>O^tiJbQNwrh(7}C^GJ{ick$!#t?X|o6>+*~r-WL6! zzZ*Z%@I77b?eSCVUM>H{kv;8Vm=a2t?jOPE)Sp4?3;o;_*s!w@@a2DdaS|L98Ef^Z$l~_AK7t-=kaq&gBjf!i8{!2-?{EOH#_FzxfQCdhlI0f2pdM zkd*hadY6@Y3R;VLW+L!ST8Drhm+gJLg?pHRdFfw%BI9o0V-K~aZtSwT{O9|{3jdRz zWKFw@#7B;qKU%Ez8XVIQgc;TpVtv#PTIi9i;7$D(p4`IEecO1j^45KpN1Ur8i z7LHJOhRuvxnWEVAdOxP~X8ionJt#V&$+Z5iOGmwokGfoZ78Cq_ygYiRIi~Kc*PjF* z#(w$n{3jCe0LP-8J8vkaGw{;O1t&Xep%k4$RF~^*^F#4jINv3E^iJh-pq#C0K|t9Z zgZB`X?RD;$lf>WbUm_C z&oQr3QIa!znt9#AYl2l#?sh;5Zc90HRXl@x<#Nz}p(^c!kroaF!m%X}WDa5lM^FhW zMzb{5hd4`qEPaf7h5w;c@=~-mQ8ZrGSp<0!QRF`6zr*&s>=CIDD|H>zwN~WxINxDB z=qu?h@cRD}jo3^vdyLki9}PJ1;yRtBFAn&*7J<71-Dqav!JdslAm?ml0`hu>Oie?h z4w=fw!)Yzer?fF`_u~$$w0;&iayW%Bd^e^26mkel^#(D;2AZd&^Y=s1qJYL8U@f%! z8ez7v7%R>ziR3d8%bY5AZy{FzOQ!)dtRmj(?FveTsmULtNR#YvolpLN%NArvS2)5W*5=hz?D07Gy7@_6$bBgFd`Ikh|DSv&*9B8@t-}n^RKC7sLHcC+& zfjDx<;Y^axJD@rG8`+{>h8&2%8i8^N>frnzek2EcLz<}ISvbw$b2K4zjgVxzM)~4_ zTNqy$i+pXy?)l|tIL}j3+{%MrP|O5|`PEuM?>6n~5i0fKuvfgX2hb?GI>kSvOs}d& zGVaik2!0Ing8?Bks8|MgVNFE@ROULraWpIhVoo?iR167>l_x^WK z#YH>7)0%~!14);+gnEBKcytZsi%ne?yY^M4S6!9sq_7#gA%%K4lK{g{M|=NG^ZS4y z2XGV5VI57zX8(VNRmx6NNMnb87c%XtMe%hS#PpjP)eY;NA!E6^Hhdms?(y74X!R~a zM`(x(L0&n}#XVkQ_d6705x0Do6tel(@5YPL;$Tj;i9Ya`P#OBS*=v+AoU{LOg8ju< z{yM=Z@l97}v^rMSMld)@_gvfDaN3PFPZc8z_MY2{8Qu(Bb9ADk?ToOkS4cId7?#T_ zqCvPSsU!dycBwIn&XglKMr z+aI-kx#cl$sQ$H-s}mSEwyXwisqzv*8S6sEJ8>oNwTpjx6#mPo{DZB0*Zb4fE&E2V15qWDaYO+!1U)ZojoHh4FQVeZ|GSso`?)G7N-zT{wK7ud7r)c z#jF@y0*JEf_jfz|H)Z9G25blmM(6HhGEHLz1jTUW;$=o5vZs`}$T~GieF-4X8z|<& zxoW}n0prL%2gH(R}M_W+WUAeCT#lopB$rV*h}5|zN}jbzACs^YYh zC_PqY$@D>D-Mp3BbUVm~sv4GwB1}f$XpA;wUUf`uh2(Gb0h>9Bb_aw018<~lf&4#| z%Ir}tn>pa6aF+0I=*v9^czK)?E|qiq{oP|Dp@PJ+TskHFXN9=$mX*)=j?c0as(|tV zw#Ki~!^{%LNOvbXCl1njxcFWxN|rfws;-2}2l>K69=fR22R!iXGhuyP~)A34rcBwt^JtC-hIDuccobGW>7Q}%0K*W$;j)PkM=#!OKnPbBY=> z=Dl63*RVE{UJ{^{JEni{;(Ub~_`3l!7cl5aXxfa#Q>J{~GiCp_vBHxiMbFP7U;aZ2 zgS0d~>?R7&-Adb=kUK1RG+bL0g-R_xkJCS3(OqWrM~YfM3k}qalNAC?U9t0F(0ZVW z@*g(-*gRVOnqIpwY6iy;=M`U|NYhO{8Qs5EmI8)nQ2$!v7Vw>dH?Sv z2iOx8rY#j0hVm8#)+LYR(sJ+FgQPiepXwBNA zlo~Z^Q6I3b5o6V(sAkIG4W6zB_j9ToZH z-g9T`bq}~P1R8BoP{@!CfjLTgqRxW8o&l!UDAlGA64$4A6TT`D$max0BEbWOHQ4I8 z=wao!6^}=P8k;>>;!pdQVN~DIjf$!vSRZ;71z@~Y1hk#l$c@n~+08L5sSVHSjW4zJ z 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 b5a8qEv&Hr0oDF->=DAhayE(ixV!ZzYn+GPK diff --git a/assets/rancher-logging/rancher-logging-crd-3.8.201.tgz b/assets/rancher-logging/rancher-logging-crd-3.8.201.tgz deleted file mode 100755 index 03fa848720a38e8fd53c7a6679a80bfad78f18da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24252 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 diff --git a/assets/rancher-logging/rancher-logging-crd-3.9.000.tgz b/assets/rancher-logging/rancher-logging-crd-3.9.000.tgz deleted file mode 100755 index cea0bf7ab2883cb11bd7fad22d79654215a76c17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26805 zcmb??b8uzd*Jf;VY$qMtPRBNGY<0T!u~Bm6O$gS(U*^iPc;~iIYuERh3Of z?WcvlwUMi`f(@^@@lPwDvvVIb(Jk`6K*t`^}BTYci_=5ezDS8XJgId^?o$vV8ZTGvN9xRFG8x_Rl)v{wC&r=BpD|8 z0!YbXzc_Vlq?L$@kDK<}a5DM_%X82U>rz1CRSV{a3nAC59^PCmJyui~t(G%AfvBx? zxmp`ir(d;T>0rpEB?l9683m!WCTB6r{-fzA9Rkhx`MJOFL+rOp6*VH47X`FC} zZlP?yf1W#UZg{x2eCmGepH_BezklMMpS--h7{OkPcC~}fzfX27z0W(fUOk+maeUm* z%NCtDUKiBME?#z>EW}-bmiZ&UZxnT3hj4G$#gK>PQ%IJlO)L5~Z~S(vwp6RK@GtAS zb8V^mR*Kus?68La^S#P6LrruXkfLp!)162rpKf)&e;8$GY^+&6NRgjax zrtasdzR_a8cl+mkV&j^XE(U$sZbd!4%W)s=T`%80IVkz@3r&FOhuG&7L(V0^Cic^S zq$RYLE0=kgjzrNp&N`Lz#v;8{JBZSeW3~5HQEB6#H#XPlLH%*_?Z8oktG3I6(eEX1 z)C;}b@TJdBx6cLE%fuFn0XaUJhe*ZEd++$3mQMcneN+8FSC$%9tqiZ64@l~{g7~$x zHwP8eaA4R2^p9dE$<1N{@S%|ox&^HjYhJ73R;-U2eu0t;oAZ${RE`Kwz`|nx=lf-8 zPSd`kGVePa{|Ut0qmB2=d+Ospx&_}`^(laT9k_AuXl2@( zMJi2JfS-aKSSbTWfJakc&a?1AyA|!}CFme`HFsT=Js8E4ZDrqh&HG zOp*`$8hb|}@9D3Vg_?TJ1)CX7Iz#zLVg7k1Ab86rJ71{=zd+2DU9a#Q8PB=BX5s); zk521+l=mLLk_5n;Sl5NJgOor?22&gApVuhpO$Lr6-U-@7+A+bJDcjz3wp;l$U>#-! zANwBOv5ZU<)}sZ+VYP4T+&}UbKr~?u@qPu~Ixk!t17WQ3#KPTGtH>Y!tWX6mtuurv z^Rw6}6DuMsBI7cI%zs_=gdUHcy07aer*B@V^FUdt&hY!LPZx=3XZYk7iF57V;AZ

kA^G>T24k3 zWhdlWJ-BcxkqERfo+VN6I}kB=&}3_~oFQAtbhDz>Ka>w`Idm9NbguxUGlds zhb6?NXm7tkNo5h@%qc_K7Np<08A<&HPjq9o^;(Y zVmLwpdAQkKk!LeY2xk(6EY4d|pILBFplH~G1PL~;g)UvV0cJT{mkY^~%jp{uW(?H@ z$0 z3OqY+p|#<-ulZ!NeR()g_L1$s-cd1y2?7rqF0%k45z?D0+}sJ zrdtbK6#X3?&7YOIb_|P=W@yu6T-8j^N`EFN&TS3MJaKvB0yt3U;#DUxd_+a?N4}2JgNb2Kqt(7 z(d|QB81I*2o16Yp3+_iE&@Yc zT`2_(JI8=%h!5sO6mV))cI0$5tnYdd=TdN7=DJ7^9mfUeGw@4&=hUFgX9Z=~_GvfP zkoOU0?l^GAkQo7X+Dh`Dl@@z*McKC52r7F(PQT6?sW>V})zhJ@Kq!jQ2>86B!01}C zNHDyZ2^0v=G_=&8_s7qT!n^Xmwu3vkf>xSD|U8i zn}8_n(t1lU!J>Z?f{+Np^p&Y~qJwToBSQZX24K=UgQ%OVuIhy7S(oz{GtG)_`_rqE z;_uy(oGQV(0*G4SOCIMn)Y4yd!n*B@#{PTVY`<8aJ8k zRk>mhY2Ey;<|AS)5U1FLs~PTjlAYhmO%6}It=#+P(E}jtS1TQ7WNF z-2o}FPu)as;!3dy-n~q@st7}myCxcqeMmh=Gf~|EAN*hGj z6k2NXf$Q(GFzckbR0@DgBfQ?P+7?6#2pSHPCO_i>m%;E8idK+ef`cCr#ow=T%DGSqAIy%&oTznB;r9t@6*(bafseA;}Z7jOdskjG)-ciU;pfh^~RUd#p69# zEfkusIqtQVOjusTZ(W1Qi2IR>ztnujSPdihaR-pMF4J~?QsO^5t&UpRtz2(pX_RlL zOEVADggC9+#=-o&X&P#y$+nY!zZu#JU^4f9QTojEe6RiJ%vS{^TlxY9AN*>dRLY%~ zkhAaCz4M=`N}qO1y4NsK-7k@q9q$+P-mcGeAG^989oa9Dlhb_9FOlxV9vd)GLY2Bk z@IyanPd~j>!R?>M)gbNPltC>$HJ}wQ^^4JsqUB*@HkUgktkWrIZGTlH1?=6cwCc#M zrWh!CHCxR`lxtEZuVPneo<9bJg#>^CY~T%|PdAz$a~mx0=~!KqYF zT5!eyDf9%gOCJVaNn0U_tqZBq!1tdKTw$@&SL2 zpkma1&SRe@U@ruz%LW$}$`h^dbf@q#d2+{18m|-WJ+g)D{9$4i)BSLUr43t^@m=Z5 z5*(d1Q~~wTyhBGI!nQr|>GsS;E8^?7Z?w5{8yBSX%8kX>TU_ZX=f`I3u!BfS*_3JSp!4*wN9Q^ZObrB&2nM#J!@*MkktGoi;=br?3(~E%{Tvs3Ggc7V zk_3L`v!tyO$P;O%jEF23lz#v7~FOvuU zJL5Pvfbm~!#Zc&+wWRT+Wf<%Yfiq2aEtk_RmjRI*DPSH6VkikZZ%c2O3_P6P1ipa% zgT}#3xT8-n7^0H~JB-gjkNL2{n@01^rBHax$xQgD@8^G=N%thq4@jb~9upw3CrglE zc^aP8yNh1fYhi@Q-qjiS;oxoXr|3~dg%R92I|kvpQp2y_14X)!b(9re`E-43(cfCz zCgp+eivCn)+*w=P)TW(3!DrK=)!e1|_M>Cp>GXXXrasy*W(+neR$fSubdbFx68WP< z(WY$I2}gVc86xN*4H;Df^(}Iti%;izSc(Ywk{R+LTU9K$YsPfeITHBFqhi}rK`r50 zv}*M>DHSY9-_ ztnuhXn2aqaJNLnLM*ixMIbc6jnb=w+PIS$p1qnX=;a+-e#Gd^$$nXqMFB~Q57 zQC(%|HML}%Krk|e0tlI8mN2w=Y=JQJ(y&4fm}J~<-0{P73ZhxP%iVFGL=XGJ``J;r z$;-n=&}&FU^^G?>pD)XJHFD1-t6k0Zb>-b1?&JgHecmw^CXOC%xyMzVYs&YBm zqoiur7y8!!nKAEeLgn!k%zAO>BVx8+>h^@@eFmq4>V>kTBb^OlE&nBGg%CRO;7my- z9cuulYJVtDP20E{wFz%OxLh+O9rG$K*=)uYp_Fy7tO7#J0WP??r2<9SLeoUzwF)-$Q%K^7-^>ubn zz=64_rG3$%FEjee?DxW1FzE&2GPQ+m(V5&ZX}POw90M8Tek6`9rS_tOc(X&6)X+ zPCKU8ch~Ioap{1U{C*VbQs)R`A8Y3hX*#A0uCQAk4=VM(A$PWoBMBHA91W{;CvkuSXh5!Qiv>E zhjA!+BDt0*!CQCVIm7IN;irTlPOZQ_*E$+k0C5hOf#A@0=jMcC6eSi${50`girpR9 zUyEFWZZw{-HRkq2go`~KF8M~W{-BQs87`bHTT$v9i>M|xPu~WydUf+g4GVeSR~Y%w zAHH1}W+^!Z4MDAnc6w)Lvg$Y$cS1Wk$I|VND%qULOa)^v?UO?|$YG@zMFP&5(Jdck zID<<$6zz*kj{mgehfDd)OV-J6?fPhgN!D#T;8m0_&y9Y;!I~)*7%<nb#m8NQGoUv$Q ziGgUP@IXAo8ha1WsjZ}rHRz&X2hq>w;v4cRaO*V~mnZ1~gQpIqE1Ym21empSw$^Qv z(TSGjWndPqkkv5D@!ryBsg1M(iUN*4frys|xbB!wn zOpVO*ThR_SjeTnB8?4J3L&gvFE&zSD;Z;-R)D#20kWlC|Jl-Sz9loR+!%?_X7^?Po zk?G1*kZA4iPAzN^p1sf!4hSg9>7?CM0IQXsCyDBN9#S}dJ$<4m65?0otB3JW7;|$- zQGB{Zsx0tiVA+|M!=64;c(pf2y`I7g8h1+2!_)CS-4JAcRx)zvojgQ1eYcsZ=@wnm zY%5!$C~8v=>CLR`J=ri)v=JUAtF2%cH}zjQtM+(oMCB9D*1Z;^@Q5-yirMyar`vC^ zYPSeWddTdyYgqsR-S1)%1z;wben&wcXCt@M`@AsBaNB9`5Pc1BsVw{l2{@{6a5Iz+ z1g$a>$Yi3mEMrH4;@Z*WaP4T#{)-6?54A|GWY}`pchocfO`9UF3G(ga#4f#nos{Dw zSJFL!Aduk^EM}*Vq-eW^6CD3m)A+!huIn#ld zT;qXW&Ig6bI0{>`Anb1z@0Z5PlDuVz`!hP6Aw`)^kw0s<+Vf5^4lx&dHQnq7shjY& zH57m}F0s!;Jh$c2kC*A@ttxLGbxD+@+{cVbBp#?uJQ0C4@goBqDER%@ut~;_>$Sk+2Bo#952IIvAR50{AfCUq@ z-mORgF6T#1cbb?1l2somXgE|{66y37xtw3LSkH3!gW|znr29om3Dm4M|N8xZjQ2|3 zaYg3E%fF`3>)~+K@!hx`l0OK(#KJ)~??j&ZT0Y4~(@9Z^alJrB&D}ST$u2%=;k5n&LMNn)I*_a}Zn(#Yyxbc+qo{%MQ<4^D#!Rpg7j6%}@y3z{Y~L=zS& zJSWj}h#T@7I4G}EgrbObO=f@VSbi-H zqTb_i@@VIVRSZ&znV=`Mx}y_2|1O4U|A*+WNve~GC4uAYiTcM#zn?k&!ODZqR`LGi zX+G&jp!%m~quW9J&}UiWh{gkSh}pFu9pC+Q}09;i+eP1Nw+0-2bb0W$O^?dcLT7zQp0y4K8>>JSlK+jAa zB$L~i5WWfo#O5cI{WL00xBhxuPwg?qRs!PPeL6pWO>45*M!lqZAEWM${F?l2*3#@X zd$KdqXbAp{dizUt30$X~=?g-HQ}cg+7}kq_U8IoLh`8|M_p)oVap2vNfdsBi4pKex z;O)O?j&AfiLaTd}79%dlxdbU6sqyAtcSg9TYX|%_RSxrx%HQ!CdQ2I>!J_rSQ|TGj&sDK>@$TkzdEV!)>ux_yYBnO?8$DJ!M#P7&Xh^+v~=G>N|%?WakzNa7BI`h4Y3FY zjAj>{YNf^guJ63?>W?Yl&Kzs~Da#FaGPG@)1Eo9#Xxs|5GxgM~x~%S%Y@oN-oBjm) zIx^idWhHZ|lKJ_nmcr;NHztZi&>hT0S!d#wQUO7)CS-Is9G|tFm)w$o=WzK{XsHNi zfTGQZ__K0ecPxY)HjnvLUU#8P3X99kmV_TUyw{0oqzN)r1*S^fodb}o&&u?Mrj_&} z_<<7+tg<}o3w=4Z=bma?SB1`RDfXC09&59&+Bdh`Kqvr98y0-JWl|C8-eKWl zx#f!NJyxufn^E``M}}`u+Ex7z#gRKDOfqrkZ-9a0#Kck>!h6{$34duSBSoTE82mtK zs^Zx1u`tQXLwSPVR#$>m6Th!6Ju#%Bblc|CgS z0?_JTn*IATOo1nGFLPy>_0rKzlDh5?7XHzP>qy~UF2y=BHF2DOjiz?uEgSf#9Q(?h zgYAEiBsT{iOKgH5@a>=wSaxxbQr7eU;lat@f2itFDz|aRa=XcehP=m37zy7#to@bc za^$rEdUBlt)hVQI^d8QJ$f)-hu?fO0y~g@-gWmAiIGNz$R&x<6894qYfDU47x-@NqO>eCZdhR~ zW-mjIwHIo7)MRiLZ3-JdMY;BUzgM()_*p&+fr%&_@bq?=vfOqOfisWs=TfDr4+*RW zKU3Q?jo<#KJMF>Vg$F)^WO?)tEY~nTE(!)j*hA7Y6?tJ*~=q7Knu%J}jRcdC+j{ zvEkF6zb`6j(Z6y-V64b^Ass5lQow=kn;h4Au`~KZDk+M5GXC&Lxs|1!s8o`sSfvI0 zrR6g`lUD}^>?1Hf|4QHWG^guU@#H_6X*!`vtS$hvx_CCFdErV@(C{ zGaYC+{o0nl*L|ziLydgm%N<)TjEI}3MVrp|mcs*~A%X~j0ow0mkVa~O6^l!yS+Bxy2?g}`7I&G4|O+h6+& z79x~gTEP4qY0Zx=UwJ1d%_sS;#Fkt$94AxolgaoiIZ7`Zjr{BS0yG%kFYj`2)kE7- z6ubE3B2jNFh_PFW)RcykUL9&JR*>ibK{%q)6fyVtm&1f5$0HWX@Ln zvFM%%&3_Ht&>1~RJ=xlY^3Rjbio1e={RsE)Lj6yEVEY%HNVRxOzP?o`k#WYZ=ue_& z0{lkWI2!6@xkm#Xwy+DCLT3h76|o)QYA0mGg1==G1@Q(mr$Hy5{3+)v3zLss@Mg`v zp1l{;ik8yEl>?htb*Ze2L2&;rIAz;9KX9*yFcn^QS2lt7@aWupV+Nwp#L;GM@{jsT zdB~EbI(tSC*uzpq+%m35^sYR&Gb8Mx+}b98aK^?iD>Rh~LdSb8T@ec2OVxW`c1x2h z%46blmVG50FYerhFZSz)3EYZLEJ_k7)rK1uz9tAUrACEdcNMG=i#{%hk`P~0#hW^5 zA7Z&t4y%|#GFOd^?x;fJ8QkI77#`ZMsp1hYE$ED}OZKA;lYD-KJxeT6MyN^-gt5Qs zakUJI@1_PFuJj>@Km|5?K&B?<&G`%3U0oCsuhX~Mx()E#L>VRbEb-zA}ogyA!k1+<&8{9xN(-3C*+4F zM4cLnA%`X&Q1@;dYR7Ghey04;xG2|JMmYt02iJ2WvqJCLXjD>W_QB2_eWozc_Ige1 z^csBV4N;Oa69bs8%+y1aC={o$Hhg1@fi1l}%(qlYD2Fa;=Cc_3<#s+h8K8TA+)z+o z5t~85vb;JZD5k3OpW36k@q2KkxiJOO^k#CwZZRXuCz6B9>iOXeh|%D4n~8|jm6EgC*Rc0UlGY}<_o7bqJ!6+Wh3=Ct#V~+ ztO-Zv;GcwDUHncUdMPtp<<2WVsuq-zFTu>Q+`BjSGB(}dr_+l*!IY6M#^>v&R(LR7 z>E@%~@yFA=*fN~jKKfYwTbv~YRBtDYih%@wo8|X=Yg?4udS`EnTqwUfNJH1Ya%ltVd==*6W zo|Y}_yre5@hEBi0pIKD5`Rgz*R571`cF&XW1gmya#LxSWMcoZ2dy{K}r6+obj+Mwp z5KU~xydYYynlEY4=HZb0=Rbm&xGzDB+lX%=7pH#wq38R|0yTrb4uQ*wf|^a_=UrU6 zb(nSPqQ9vOM9}*pX2lu;$V(!=yld=ZTE*I9Gps# z40SWshtqsI+|;ji?|-oM$zbm&LueL35K6+2n`Xoj}!r1vde5ndjr?IXaue9q2PM9MkRy zCskJf3l-T_O9lheMt%SPDQgBVq3d~y2x`3KxL4dWgA@`{hxZ4 zj-mP%LZ9rF%CpUPRc$HGY4mwBb z{?ydKK(_u_;un9TdBEthmcz*srv1x|@$|s%@&}ITj2}{SaaX0uoEINU&NR)|zXVNu z+nQ6!$;$70H@j^kUla1rVoQ7K^_7K6I~=5u<@UXgRd^#&^lXV07AB)a9@9pnV>>E_~La-=4j08}x&s)8YU2P~-dq5uA(cH!T!d{YL%AU4&VkcoBuc8a=21) z!=Y>|b7vuKuWUBydc}z8>O@j~&}Gyy6+NSA8=rXYt&X^Ieo@r*|5uF)EtbviylVd!w*Czx~!SVM17T`!^sR1yL%`Im=jTneP90G!j&L!?hddDy`} zCwOOKBH^6lT}e&uhD$Eh`|o5eKS{b@#gzc;ud=T?J=7I`(5n`98-ql>Al9*9%$DEb z55dB-8(@*q%1~IHyZ%|!nb5`Gp>$XSgMajFD9K6`>5+ebreey5s63WeuOgk|JL-b= zMs6+)x<)%o?_I8OAaxuz=ASSgaIuYp@69GfzYF%^R&obLn+tb`Ql@f+!OpZpvUZMz0} z1A1raogJC_p{?}0chQeIN{F)f#)qD1B@m*}>3cRrj94xq(J1uY)@!1iU8z*(8TyFLlG)EGegTB&Hz>j@=&{{<-$;#;)AxM8125G z^va1mn66?fnVNN6`seRL^@ zV9y6OlrujX{yO01#Wvn#dy}^4*kFpX$di~hK%&xD2!^1cmX{GH*V0zg%+!cR-3RWQ zZpkBch%}M|E4sKh#J&4`0=Mnxc_$2wJ!no`&;F9dnGz!H`Z}liH|WBZ90>;uqa_ZT zfCxBWL}_I!F3&8SiTvbWU`BWHMUG?(#G9vI%nC{wkQ+}@6~=F$02}}z;JnPg?^J4kx87@hrn}WTJ!`hvGW1sgBze*MXGWscg2HupRe>?QOUL2;$nn3nXq(7 zjNt}DZGZQg;uR`}%rS6Lj3F%Yc89WHTCh+6nUaP(OfCwQ>8ZvGLX>l=kk46jfL6aw zjH)(>w)SaHPFdm_)=K@JV36NXN&w=Nzr*eMgkHDPL-F%^esNRrebCfA)B1f76iHN4 zKqrf0XR=rKwUcK-1ozWT72A$~%0~jfgk%I1szP7~XIW#h_MX0pi#SnnGn~4bT;Mf# z`u8vU&S)QEE7H45K&IpamqL8-6%Kwx9f|L4Vb~h zSHdXyNr|qaTJQ7HQij3(^5BdZv&Pe9=Gp7z1gz?qPO}vqcLxBuFH$8|3!qdZY00 z+%hk+1A$;w3TdZw*(xQiqV-&Q)Jka;$Fhz}>Y^$f z0&V+;-ClH12+7f$)LcGrV*8;85_N`jG#GaIi>6jjKn$Tcx%DfYFVdVLy3 z`&&{W$N>c?r-j}^yHpB#)VxRnS5l+dF_pd!|FXq)*hP(UZy91jHvYlmuj9~uBUZ-N zL{t^V%Gl6JViDu96QUnhW6M++ZGm!YsOAf6M$OdVm{M%RLjYg7#-F+%4z46TF-b~8 zF4vlGc^1QzxiXb0X#o+%8EJl)7zpUMLlG*Y{ro9%3TGy5dc$CQrwW7}8<|L0zr+s1Ov0kt4}|$f z&)@njNr}plAAvTbmZRFhnTsXI-Z{D|6$z~kmWQ@b`Gzj0FrwlpJTO90YtJVN1iSP` z`_KLPP)wlP!(w&2a^{9Hb{O$x7QHdlr&MbCT-%GvyYgcBsn?0rd;7Azqs~yjT(4#E z<%Zc8FU_t=;mi-U`XilD4z8=RQ7?=`4trZWr2glR=6TLuC`SB_3u5q0fBp=RhbjdX8)3SK`XBn3eTt8&5P`xhLi_LCd6%Mu9#|XG2HO=OKM4< ztKA17Z81_;u4C73($X(c`-pRDZNhPV8dPS{FGY9m%MfNcU7`p3LpgKDwhu%g#ORTm-J*M!Lvb&3jLLs>wt9(*;lt7Le{8uV z1?zI&HVJjwHZ`>W!A;`Xt)oA7$j#s2dBYnGLS9d*cHet(A=S-0-o5L3mp&&59ia#o z1Y72d3RmV)ye6i7zRLV{Ws2`Js@5;fdBpFqv6$zF#|v?09>6<>!JQ}n(qixH@IZ6) zWrRr5-^-#Wyxw?@&ro_v(|KP&j?WB9($gItl(&2xoMx6KOc7aTmJO@&YQ3eo+^-G? zp$3N$1IV?NNrO$ll{&RU+-{inPWlPL^qK1is_B-wG{?H#<^*uz?xMXPx%b(_?oTx6 zkN{y9ZBO8wheA{%j-*29S0i4vCY(EPSe!B6C3|>(+vr94b+jlC{b^6~or{I~<9DW^ zf)`ZY(f9M*JRt%MV`$j6NZg~RDV`|I&{HWI>qDA(O%2Mh==+7%amG-VzWzXyAhb@Y zVUc%O;&Qzn%8^pt_%Qsj5BZKl7tG3rUY;CXUVHpi2;XL!YS__HV%cuxF3CO6w)~!)!Y6i$Z7}dA`RRuI3E6wh!;RZ``y*$vwrg6U%N5unl{Q7UeT( zs6tLVg>gb~LylakJKV`G&TzT5vQgVP+KjBK2Bv+t!UUo})Q6Tu?k2a+#YQOq_dwj% z9%$W_xG$0z|HiN_aHcD71y?J?LVWo8(Ft7C2lO>JDg(w?f7(l&@Mdy=3)Exg+c($G z4Xlq>ai;PVz6Q`Y2Cp1ty>xjVkIh7){@*(8P*MQL&^i#GiX zFV8lY4Dx_z*^i(V!Pzv|_1N7<=U83Vhw;zp>g%7Uc=V$Y-#~{ub_k*t4K`lA_c~$s zrM`c$=1Z{V8I`1Af8SY*0kdD0AK?d0)~h?ObpCi_-mzHXx>T{FLwh)p)hzN&hDFq}y;!~gUy&H2D@(l)Yj=>8kEAF*Z4 zQ3(n#qsXun*|7`c&my^X3pUXWpZHEyst)pm%UNLZIbC6zf&LjZKQKr#_D02=pSA7y zkjt}XEr8=#6b|VNAHIJNqScM(N02Po8O2o-<|6kMSc@F_`(N}<%Z;<>4A*|4?E-vK_s-+m~Yi|I|_;Er}}14FuJ5e=17$z zqN#-HcK27OTz6fpzHf4wVO}w>r|aEMp0shT3kPm4$Bx_5dOlXo{tVUG))zUlIV(n{ z6DX1#-TR1y&%N#x^*4u;S^@WP^D-Iv)T<94(UW~j+RJU1b18_ED*U;;4(dD3IS}hD zri24kL;39dy|mJjhu!<|%1@CiO$QcWwSo$Qs4d@88CxJ4{TFg7@rAxC!yc%{T_KhW zcTv-$nO?;w_tN7#`Zjq3T6CA}t)=ixl~(#7gRcdbQ9ihj;>ogmjLXsE@m;Y(r}#1; zCB4cV=SR@DbDZm#J3Reyfxq{37}icBXNj!j4ZOs$QV5^?2GfFt7jqjZ$a>fi1YnFJ z;wO)cLum1@fUD{Mkm;Hl2#fg5_T6gCbR!Ai`h;vUuF*Jx(})G8x^+>PT=!$3NvJs9 zcjg^EV}S|e5Fu+@ac$xXlSAN5S;A%G$EV+Br{7KXox6m#7A#i<*46gdX87X)RnW@O z$vL2a7qjIXaP>Q!di@AfveMR@Yp(5;XKvRsiU&+uB&gyR5BP-Amd6tjOq$$#0W_?l z{6Cj;JqzS^xx%FJv%sY3>J6cCc*~DT(DS?gxx2}Z*6FaxOUz`O84VP5<2>H~d(3|Z zCr;0AotLOB;9W}i=nU!tK`@O2;cw6O) zivDB(wZ4qN>sYq0_px;<1{rmcF75EXaJ}>V$eHIZM@nNh$-12Wz!HzHeFLL;qfvGz z5RYuM0br@U7^qG{1|o^oZ$9#1(KyA&gDr@5D1l&JFoBOKE{<#FF8Y+^i;N`BeC_1o zHN<7sXA7-hz8EM0O>OV6njPW;3K`7^9aDk1-qr=ULgqp)Lu$5E0f(cm+&)}W);SBR zyiCvyC9~J>+rTMjapj+S?%6kptMC0fGQRA7gxnP~{=*a913`2U4t!zK=jJ%L?)}B{ zKepd21v`n3HWxW@N<>S2p*n0kYSN!uHVu1Bie(_wZ*gtg)I=g-5!14uDt9G&pj@z+ zceCbZp8D52ve2#}|&alqz4)w;g;+Ch)I z_?nod&-&rSjRb&XFp_9tIM`|ZT7T5?xDdvdN1E*iT1% z-6rMhHn@+JY!|zM|-;n z@4o+R4ktlog`*Abi8W1oAWOHdn@bJsB3lf*-g+FmzZUNhpB+5*c}-s7M~_!P_J^wR zB*ZCp$=eapxY_1E+?wP8iH?gm+!E1OM0n`;!>bB>HV8zO)K!y>n#cgxj+*c? z%d5>~omq~|Bv1D=NXn}f(Gm(@*|TIi|6f%-My=#dE!g#&hw6Q#sy!edO~aFlkgyo-mo_ zmGUEMzs`XC^$O)m;=#ftQ#qo3$%?97YyIsX-v{*=Fb8fCzCc1!rbWjv6K2pwe`9&v zq7t^}ZxJ?3oA7i$$Y^vWT)4}7 z0_IzYCI=_oZb1R$aqRjAwjQ8El~#d~l_H{?e9K@Zmb1kFO7;u)EY zuA{4~Gl^cIXCa5-XCZ}8Mrvm`%V@k`$DSmu#LH;I6;E}ZVQ#F;Xp`8>XrNzyBQ+kD z8frQQqZ(>-ORI~fVlPFR(~Uc}b{b6y6~;mKGR7+O$K`-f6@iJ64lQfVdc$^Z(qOe#GawJGSQ7AKm0FqPdDQzduIY5)}S zW_qxz4bh!l=N;j`&k?|RBEOw&`&-d}`F|HC^R%2B{aP7EN6jK|RLzfX$bCW+^)!O7 z+4aP9>2EKz=Nr4|y(zN~hIcxUOK->e|5YVKl~H3tk@|7cw%#|G>`08ZNWVfI9M%-4 zNpdU1Kny#rXF=3XB%FWqtCdlA@3B69vC+l2Akqly#x$mlegWopFNC51gdc0^pW>}r zcr&BxXskB^`fy~SdwpO!YRRW|?!QXt^w(D7kG-Q1oN2W%j%cpx`(!LY_=Yk|n=g^AZXOzC$v|uYfA{~? za}%8k`p|K-;{XQjxd+MNXLrzD;uCKkt(Pg*)@a7U1s61}LYBzEh=8MjTpwwUC{xBy z10QB@mApVIr8(lhc9u2CYL(otz9-Ef6q~$w+qKHZ5#K#BK`o+aaXZt8VZeru$got}nH_bAK3 zw%GQx-Kp0_?+1J^(2oL~eFq(a&_^X3K4w6aerVDAsu4)^IHiJszD>9|Ksy}uEqOJ? zc#k}NQ+929IREy_vCecsV1cQAY228Qbn%j`fhqpuq&ZywX(=9R&PE&Jj3xEE0Y-o3 z02*Y}(}DN+`ZBj69N}6$dMG}l<3!_Y1>b?oTr$!%A^4n$0qzHJOza-`+NLueZ7jKqW99r9hVz*LqPxG5uy;5ux4qDOnj%hw)|3o@X!iHk?&UKc6& zIEbH(Sdq~a!3f2d{n5wlF0sAYseSN^=~Y0ewA+@&%}22Uu>yoi>W#ekltnpJZMVU%kFe!$0Z82dCx7RhkE;*o06MWCO0>_pFnJo(v5Z1*S ze?!-wEkXZiIS5bTRlrOzFm7I@f@pAi5}K2qvCdXyUggKN5~eP_{$>rZx6#S0^i#@+ zjgWJ?^_-dGa3| z5cA$su)}ZAIpxzwKH+%X2hAx*dhQABFG@J(iV5M`w8sU8Vy9{}i(U^3D;mnNF;kwb zU~}qNx%-4MYU)|Od9Jtr+w0GBSoW-HMy9kX|KUy)f{4&8t0bJ`M*jgWoc!<|uBbH@ zIjuUC#ffiHB}=YW^WYxKpMHOc!A%6BGvcH=vc*|?vIv8t^aKn6x1wkTC!;simtDI? zdV*`ej{iS@BFY^DEA9Wf)6a?K({zLN(7eCO0mbdf&;9Nmg}|_$ryC3BSTsPHH$g!Y z>t})jdA!3$mWxWhtKRbP{mmJ)8zJs-~dbWz#FZ+q945vqWOscvJBMz$j z0P-?``&~-wnxv9@?e7{3dBEKdV3ev)d|Vu@0&S`88Y7!u$$4@Yc^VW#C`kah7-CP+ zXWkS@&0nYy#6Wr+MwfRByXteg@77O>dkgTS%?Q6u&_A|8sRFA~4N5+YGBC?{VB#y? zRc9TC-K!h$-ijyz4?K!Iy7C7xgw_074@5O(o^%?v8DkSpoJOg)7a3Eyog^D^K~tjA zuC8*pV!froaHsdEhZ3Rk71!5)-ZVMLEW^(3?5JPmwMBW z&@J>Gi9R;q=n@6djn8E_SmDa_*zs%wA@wDBD|b_hkB-P)D}K$8Ww+FRFQvG(tERXw`_(Dkvmu}T~F-IH|nKHn<9QV z;K^eDmYu@bUVeJmmgyM=*jsF>4t$e>a*FZD-zM`MR!QmxNQEn640f=od3TI-EdjE` z{BFqqU!DGtL-peI|E1G!Us!*5*~oD2cUuyp!(|==L!@0w zz8=eNSnZlL^K6*G;k{tVjxhfq*F^|Uu5ysCLASqQFt55vxa(3$bS+)%qduWgti@Zw zheWbcF1$R>_wJeP<<0}zEl^xp zl{d__&x^EtfoV+I1$t+C;E{sQBGT_J69l8?6LheebgR10tB78vV)Uv}h+Y7Rll}+J z>!a!{vjFQm=>9G~M#R4Zkx%K!m-BF{9gNRc#m|CKR!AwEKGK!J;?-3VFHb(-pjAq| zS5b;Un`${mY+6a0%(I)(&5W|wrZCQAE$=|P=T%Jq1%M%?*LaQc3^_fk+XaTt+=K6ZrZonBs&UnUJOC~7U$wP$b#>2ykDaR) z?PzwVLf3&$2DfS;kv+jv*STuZmHL_e2Li;mmnhXA%2x5!28_7~gI4TaqxfY0Hz4fc z6$tzC>kkkXazWgoHaYFKuX+?_mkz8tQqMR`^}3!$T``-V`2u~Rd+PJF&EUE?`y;}S zqkXOLebc+clI~>SmHUYfmf(D^wf<29cJ>3&li_!}P9M)x8m7#HBJhlAUZbs3`I5VB zSN%1-Oy2B|=bnOZD}*om`|I;L9aRWpWr(OCCf2=B7;o zBlxg6*4z5tg~vO|?;5_roPrC~rE~47%pdYxyg=hs?2SQ82WtH@5ZUl&AkvY0_mu(r z${FowwDDH~6BsEdiHXIL#onfM0inzkx z4~K&{#8rlRW*aUzi}wNW4DvCmNRT$;n%seA-Dxn;w^5%&ht|AT_pZ}}Cg^}v{N3Lg z{4{;YKYDH=GIMn0$Rorkcoo*S(3v!sIT2_-+-+Iu&L{mh;eqAyhw$LS{~@cjWIG+! zMQ;I{>R5eRH}e+3t%bCmRwCD3n#DixF?^GF!M>%hR4{o90C_m4RGbtCx$SjxD>e4Reu&!9S{E~tE&$o)@ zA;Zn`>>t@vFJb@X!R&qb@Xm*Y$N&^NuW$x>RegY|({Jg(RFhn^9`s3a+{Z0*<}mY> zp71dE#P=s}6g@NUOmoqW(O+IKJ-{a34AQi)D z@_Y8kpgA3FKm+k{F|Ja5Rw2MZxzXf*S7zp^lq^E;(MP~uh?+s#UoQkm1UJQ=vnhmm z%Zi*23Q#IoQB(bau@p36KG0=>G;<-#oHRr~%dSxA%BG9e>fB+z0P60l;9{6?Cdul! zepZL}E-~I&xB`;RqO3+OKqv3`bh2%t#hN$sZ?*ydo%B4DLq8F`+i3Jc*k9knh z04y}m5|(;IgLhknsA0FCGak6h3drgA>-O6QAlw9I&pJ!!M!5T7~q z-6hWV3vpVsCQ>Ofo7a4U2c?a13&EplsIDw~KF5aIzl_`+=3lfUk=hTPLLon}UQ#(9 z@@VU?m>AY3y@0Gi;ccJ zB@I#!+EvC0#uVJvQBH&b>=1@O&-m(>m(rz^4y*Gf@+VwKSD{5pP^QSK%O0vX;cu$k z09J_g-43aO_n+V>;YYYyB`|=MY6Q^?}F`lD;xlDL?m0wIS;2fFo5=S|8#D4x)ZlTF3FUxsN63I@?;ro z%bKrIxh>l#$cV^iqpMrd*l|ImkjQ6nVy{5(kLDo{d@0T80KN#P?_pTLHN|FYl$OnX z(o8WnDW~O3wEpGeSfP+*^R}dnPt=lY-gDB)rZX=(DB4sknS}Kq{McR1+@#V-UfQe} zv16Rls|Os@i4(?J)~f@IjtsC@hjrd~HWD0|A?&2(HU2Wjt$sFk1l4nP(b{bWZbE#3K=75`2rU5Du<(p4iJmy1B- z=l6yazLoC{JH94&YUsw4;1!~in5|oh3B|9(`CerjXLCaFY{SW@!3g!lzgezpMEYDX#9b~wBWM^NEDvUCA_TToq-jz5ZRF%~7G4}z@-yI3T z>=%5fHHk_l#o#3Hnoc-C1vPd;Ihu-@(Scx%Pt(a&pl)TTcS_enM2B4L0LUxHPv#E9 ztvD*nE0%zbv5#)-LPqz&h*g|_;&k`h0>0z5YFu2S5Mvj^JStxgKM=D;9UPUp!1z8o zb9?(hFD~$Q@K+->+gLlw7fa+8;|t)FDNCNz=Y1_wjuMknlK$uUlv3cB*GJ@|A>GAS z2kIg|?0alJAyxD+KQWo~z%u?I;(?MzO4OjC)~0F=V99&mA49@Xg{|8bX+^R*vPs?R zZ)yagQ6mRuE*pHs1-v<3>v7?>R^G<9N}x_lg9gf@bj>Plc`f2jdd)74O?=@!uXB62 z%g`8>LnMOSk7UYQ)M*|3%%N#RB5KqiRngX=B4uNpJ!M&W)UoGKSpMvlXVT#VmKoVp zqR*Gxy%&pIT}+Y~=d;#v4u;?4f1$5^82J=;vci_7&bLR;2Jw(*+R@b%AFGyJ97ivD zQT>|qV{yOhF0B34|9z3I!tqO_Q=JhXg3i{DrH%V15Licq?g2=r;|d`rk{-GN@k={H z`KC*uoAe%dgY4g;$o9jSSqDGPx3a4F;v2I2MWw7Mj`t%>jVMcS)(IR9*>5_WNSp*N zvYIy6W_7{@4_z9m!Y0~)s-pvd`3h9C(``e=Ut{zj^;K)+BuyH%VU9Ca(j{fzw=d=L z-SHIU4}Qm>4(E%Uq!cGq+FHj!6epzo8Apmjb78mP7sG!M%Q~S9eArBOr3qF<_iWq_ z(SUC-T#r^xsBkhf10PrMdY=@dPDKtAu<7Ad()ZcgdhX)>2jxI60gstDYsLKeFo1v8g z>YsyoyoA9=N4OS5t(;$u4`JW&m0Aj+I07csnVYf|_}6o9ehV)d_F-i>^A+WqO3VpE zzCndI@BWqF-RxNCiwS4LQ`!vmOWf4VY&AVkf62Mlx8@t~z?wZwHu#lW@CU~oo)iAP ziG(Y?-{MEuG_C21t~GgRQ6_JEz`m&4AQr7XBC1k8xFJzvu>cJMRy_O%86_pGjV`wU zpOmLw@39x2?UL!pg7nP#%5%UOk%F7;3Gnd|cw+0Az6a0_IolCra#1|E7o5|=^5{9A zS#MR1cJqOWjuW2N_F(Od>bSa>KtS>> z@@N^$hKmgPWU+-!WB(?EL}o-uH23VQcXZE#C8?PZwHM`<{Et=0rcgNzgI!@xZZ-iF zy$i#-kMT94aKPd9kxAhG&ND-V$MvwQEvqj}e^SJ^2(|vZ+1Iefbfw)nJqfxszyv&! zKUjU-zjEmWRyi;NB>pX64-A_RTvGf|J7Np&M-9)QBSa(sgn6{>Tm!dtn@V7gt@|wl zD5dxSHjVWo5`}XA>-`xNAu1HQV;|ISf2}V}luMl0Z?<0dPBeLUAbGd9)Dytu>}6;4 zJ#=SFjS%f`YE`~NkgkM%@D^2ub^|98_3L-WBmtn4_T7+iaMO0=*0Our_sA1q+GDo! zf|E=U(@xwqXLaO8hL_2%l9~vGsq@XEAfZtVCHSm9`9Q)q{ttXsj74~I->Bf!v261a=d&3|xqOxw`7w8D`icu~ ziMU@Z^tW+(1FO%Y7vhIv=G(P`Epw3-sn;6OI6#~xXTY6|l;5InFTMsI?1bH*F$1Kw zgtuH4uxcv6An#s@mlJ)&R{0Px5IFiTK1*GP%cd82=?a-R)IN&my?XSd+K1^t$lJM+ z1x3?GE4hmm%juC);PO9Jj#x68g|9YJb|fY&p-CSx_H#3y%GQ+hPPAf3 zN%|9K?UWqX9~O<#q;wf2?%W}zCx@XaejglCUJ$C)TUDB$I7^>auxUYeiT@ZtG^WvV zTS1P@J8tHR8gl(A0`%+0xJ^+{EW#WTcOSJc)rxvJ)sRPXjfZN4ZMy%pvQoC)B)+X} zCnHFW^G=6OglfLNJ=R~zw;Jq*IgWE)_KMbsyH7vXnw%r3jU6<7n0wxFt3x2ng>INH0`2-_bo2o}~>oJX}-<4y_Y%xH!^)zZEBn}=@mkKY{atz$0mqJ6a! z7=2=X5+p<+Q59KpO@`Ci{i5Xr!RvPBDFH|hE1am|`It`n4c$!78*XhX|bKlzePTs zJ*du*O5%^&5e+s434Y1-OoCChC6nM`Ty6gb$5S$i)CjHisJYTZ1HFXo;EFFl{dw_E z41QW^J`{aeVc1k9oD9z@`Mkf7bX=9*p_buye|Op&!(3IgM)?VxJuaM3D(4`Lpmk>} zjfGsrQBiRD+CU-N=T(P}<(~O6zj{kRQSk^K=^ zjs$4I>pBTGI83!jS`80?Z@bX3*=Z$b(cxRiwkRmt65OYhPf-F6bUJ!!Odh;Cs7UBY zCIS=bT0L~I9rvP;^tdaL!M`|URM0OjCl6;htcxEaC3*R4fo}Nn!eVlF3&b?W4>XbJ zUm;=XH?KxUR6oReQ2p^ZFj-4uC81(ODU+ro6aIsC3{Q=9;=d%yOf3%1OzCteo6OE10$rQJh}* zwv`_g6K%pU(S}9lE5D7nXZUXy<5_zExc`-m1o%YhlG1s;_nRdCzg5<0ew!JhI{teC z)YnUAnmQ2q@5ciJJdmZg`_C@tc@+4Z1W(^wyU7Nw=F!(a12aOf|CMGW&__>_Jy~zu zv$=TLkfYTJ;%I7GU%x<5my)0LDtRt#=nW1j#o>lM7&`ivLYc!_WdA;-+1k;Tg_&ng zmjYE|UP%F@M5mL$E1r3n15#+7@zCZlVUO46ZN&X?u(ZUZ&xj13jB)#)RU+LWS2qFS z+WpD8CF4U$@B8QuEE$HR?>IEEOvplho|2bfpQA5MkysZa?(Kb%9d&HX+k5KR)3kT@ zjS45V+imN|ZvaonCvGXNyqz*bLe5HJfREHI%69tHRczbN0ydh>L}Mww-KYX3fn{p~ zv%-y=9BEZx%sw)aV}@1pICTo|QPt>@W;hT}`)jQP7r7*bKs zXUCsbI?iCt7oqo-R(%8Z?dO=WZvwxFcsO~op8(Y_b%Mn^hb#(V_28^~DV*x!M@5Ge zoG!8cxBmm?_?W@|$LbLJ^A=b@Qj9CZRJQI&H^ExBmR#U8UmUP57Y%afOBMOd{B70% z_noDEPNa}xi64+_XUlp0^@AEc>{YWRHko2Ql!F}NAO>KCQe~Y?@gjg^yFPl8sMYCY>F;=Cw)VfYlR zC6vjR&2v);b%c=3a#_pI6 zwzt}>>>*$XYBVG0Y<(DMSfMnD4e-=y?7O$si&Mp_11%K>t$Ug^Qnw<1wtw4-KWev+H4OOH`efxK zk?d$&{_s%GV*0XIg8Y$1!UH4T47;lAbE{c ze%fVB(L`$!+I%%UYU3M6w@uGng?KGE2n*15WsO@hBU^I0IO_in`A#erqT<_g{JYw6 z(b?9xCgY|^gQsp>Sa2VoTy) zUU0N)<5)#WBO&=0+du2R>FuhL;9*)|+8Dz_PUd8x4hSZ};6MB?~IqtATIE0V1j> zK|RR1jW%RfO|cemK+I7V+63s8{k9Mv-#4;4iS%$sB)~ExZ7~YE6bE#uhFnCcHYJ;< zYr?VW#*2n{U~Qm7fZx-yae?|veT%9zSt?-qtI?AzN8AD}EZqS^N$1utX0nUeDtGzj z3X6lwjRGmoLJSAxt9+>iao>U&Yz^Q6e>INha7nEB`~U_kgY5t%D?^;QyD@ZHa>qBc zwB*71E6=rMHU_eJu}2^gJDiHlMPibq=9svfqDUda=j$r#1Ny-6i(cO@tZtunOBEWA zDCV!55BOU2siu&7+!%W*!g2Z&-!a-3$0~FBZndMAab?tIRlO zFz_bQ-S=AM`@pc-#BmPx`YnDw^9#11n75-l2&(jcdI-V~cINdkkPqZ6(=Sr&ZWG_m zt@+`PMpKbDdF!o4VX0!2h8G^pK2dHdh^K~BX{}li^)tJgorgN~H_0#_YGj_HE?HhX zTK@uvCWGF<7j-;~^g3o(s1R+2)2hziGlFkPS_or|26~n(7t0}y7$}6Dpx;5iPlI+D zweSJ;kE1u29M}LK-mPGMOVRtS3a_&%!n=Sc7IPo}w(O+kxTXvloPY(0mjFVwjJEs@ zl=))$lN=59@bDAeHb^H9=?4-JD93zuB>u%2JCdJU7>6?alNEvm<(7%EN(PSd6qH3__J~RSV|ZDrv&=0gqITb1qF^F z7*K0_Gm)70FdrK8Q!;;(1Y2X_u#t(h?BZ`N*sL@LqtzTD=NYrL`G@O?K2uM6MFj;x%^LqNbn{6Dog$6^2g diff --git a/assets/rancher-logging/rancher-logging-crd-3.9.401+up3.10.0.tgz b/assets/rancher-logging/rancher-logging-crd-3.9.401+up3.10.0.tgz deleted file mode 100644 index d0446fe6c1d07a3cf9e6340f49498aba5b2e7c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38763 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 diff --git a/assets/rancher-logging/rancher-logging-crd-3.9.401+up3.9.4.tgz b/assets/rancher-logging/rancher-logging-crd-3.9.401+up3.9.4.tgz deleted file mode 100644 index 94d9297c22e3a3587a3c9b04c6cf2c58c892648b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36676 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 L5PS^a3k3WNWBAp` diff --git a/assets/rancher-monitoring/rancher-monitoring-14.5.101+up14.5.0.tgz b/assets/rancher-monitoring/rancher-monitoring-14.5.101+up14.5.0.tgz deleted file mode 100644 index 7816763f9dca6dee5ef174f473fe64eac528e113..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 350004 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 P0Dwy4nkkS0FVO!0Gut1> diff --git a/assets/rancher-monitoring/rancher-monitoring-9.4.200.tgz b/assets/rancher-monitoring/rancher-monitoring-9.4.200.tgz deleted file mode 100755 index 7cc909dbace4c85512a2f2c2bf95bd37bb9ed2c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220129 zcmV(yKgQj4{|Cu5nGBLi zKTV3=l^_U%Njy$=gR@yL31QA<5{{EHPx}SD41)6{FVbwX8+4-QQTr)9%adtVAo5)9 z2B&2?Ep}Ti{5+o|Wm1Iw(>Mo2Dxg6;Orl|y4M#~lO^c|Xja$@1Kbs8FlKRCDk8s#G zJZh9o;@&73IG|1Q3_v0#mb+%P}GVE&_ z>jv=NJNCI_I7DuF2=5jDwEt_b9FVxZ!T8hd_MGu<2>1Q(dS#p&!g;@Y?~HLn`0kSi zIYZolI(9zgHCP|)CJ=v$i?DN>o3L}=S7GO-cVXwAFT;+Dg>(4-2KjIQ?|W~*e)Y|_ zUq|D4UtRBKvHaKB+5ws0m;W}~+s_{4zfbYA7VMwKlVLK-hAVrc5lA;BqD#=Hr$ulA z%zXgNeK4CAWuC<2;J~o^!MD>Sj{$1}Lc!o7g${a25Dx~)ASg5VE-eUoqm`Alwc!0h z+&=?46MWC;9&B#@2xp}O`yFmR3)?TC(OR&FU$2DxFMMN%+hghC$Hzu+Vu1;T5|o(a zB(wm|q&1EUXxl1iIEpZUD7%EI_AYtBXbf0@!(^PDCqdVNJrg)ueUQf{vuW7R z2dty%2JvJtr>$*c0BV|>nK(}}odhTGIXur!f}dbsFj=4u^!5JX%V3b^Ngv4*PM;d1!vD; z0kiQmo1pp%P!g7O5*+^HRnQ;J5F?6a(3%)?1jS{96&z(hZw?Ria1}grSVw}X!lpUT zyk&EEkz0Vuom>HKBRe5m*{SYrr@FbF+kuEZxbVHA!|0uc$o_gXP5MzfoMd_O7H;Wc z8uycM|oI_7Xi6Em6x|1q=aDvlhG|-91lgpqFN4A8nj-czbpSiFlbQ#3CLlo1=UxM@m2sM)0V3H&QqPM3pP)5Ll>a<(#tm{L| zx)m_zJRaH6i{NoF>!0G4fKb^F2r2|N#=D(OX?cL4!pvb$E~u3#-to&Zj>TJhOw2{$!&iGR-@F2T&=U5pDk5<&`*9u(;^MTI#dz5iNu2jj z&FSjW(Q!^yml5AC9UmXKXuAElEJsObJL@8%x`+ZN`8*{8#A^!}SH`#zaR2NR_PvRx zg&wUW7{$G0WWYT(J@bvJJPU)Yw{Q}C&CP?C29Q7|N;HYrsi?wM0BuQOQDFfKUQj)r z@hF2cW6wJyINDgE0QoLm2?L%x7sB>lk^rd#My*dBI=qGUG_-Xm`(+A})?`Ri?!oW4 z+|bBOGY*bsy`O;4+BMN*jn~O+iWC~xGU!$)Zx>E?*P*=pw^^RU8Lc#K3x953b+OOx z9$d8LSZ-jV{Bb|e3Z`swOTy$&u3EWxILwnFEFS&&RhHutbrG>;7dB+hE(-8@GN0lm zXG&551IzT>5*6<|bE;u$|6wcDj%Byn7ZJE+%Cnxw^Q5Y60%Ln}AG#O2eIKbTgMGV|Mc32QkoulR@2aqyE z5#W)LLCKLHayU_!4K)BS5}@(~KuRWt57uuGX<0J`2O{|p!((DO0h2~?|4cwNS`O&a zeu|nRbQ3@(OL5KRXPfmM(>y)L&*3fvY{^r=-19WXJ2B4&vp$Xk(}wfSLLH%k97RUt zh{@$kp8g?sbJ?YdZJ=0$qm5F$iuvB1mDw2N4>)O~OFZ---I00=ml$aZh&`7sq z(iJaSG_YLRvc|+~PiHx4+6<8~Fr`En#_<_RRM4nMg_IHv6(AoK!FR9W(>$9EQ3Bza z5vH8dHW#zrG=@n%PNHF?$o{C{hU-RZ_SZuu3uBF7i-1oDj3zYbKHq%42_#hHoi08^ zxu{FR4o?!bnO%||lX$=rvnby!m^kN$4b{OBaX$j@cq$mr$QMDgCFP;q|YUT@sJh`pS&CTx3@x~#0H$WYWD^|C2_h@5b z{M}*BMbcY@H5IkgZ4k%lYH8egvH1dV2Q~h0@cL!Z^gD;@GeyVyn}yvbPD=t zL+%NQ(kzlzQ6DZK8qXN$ur(S!RA<%QCxS@$13)Q!{_^_QE6K2kmg&E|#!*7DeT||`KR_m8v0%iH! zv4dZK4INc!r4=zxPSdD3?*k7Ako01_Lx2TP)MGUc-7JV^q`4c*)Hl4j3!ntv7>x^r zoN!}}EiTMoG!G|CS+l2EpN<6t`^d+92MAYcSF3(d4!Z`1o z=Z;1do1bLJa3c+1Ggqf+Om0BmCO1?3TgApM+0sKmDrg!G zCPjBwd2GfheIHNLkX8EFLe{{%r7!x%C=#kpW=?1LY?PGv+QA@sYB32g2r0_Tv|xG8 zUuL_2g=3@$9#@1wz$;NU57y0WJptpYNtgxqyl?e`gzPyBn-s<tHs8GXe*fj1ULk(?wdA zG3kn-8yR#ix%zA2A^yjyQS5!pVfKGh1bmy0zAKXA@5yM)J5N9w!N-`MKsrKR1H?#p z4wpL!l38{}hnW=MhobpL(-3LCNhrft&e3!*1J>u1CA$e*c@g?-g6B6L4y}Y`^yoPN z40Ovnx43uJyk#Jfqwr*o#!K4>ams)gX>*+BInoWGl+YeHpm?M`)6S^@y9P!tIgQU# zHf3AR!fF8U*?g@L32n&lC8656PjSs1zRQ}%fx3(VEZj%nfKHPBWuLi8?wZ;ZqKtY+ zpiPpK)GAHlDIk2z3>zDtU^sQg5O&LlZh-b7lAuSZT@}rP@Ny{e1w&|+@dY$s4igRu zI!q{Xcf}HAfrCaMK@L#?rxpz7Gg*c%sgY5Q?+y@D+Kg-kd67A#3hq5a=pA0CZkzqU?y<%tgm(_eW*(=^=lfx`4S9gO| zRKTrn1pFKbMvf1G-P~OLwQFqE=2j<#-n5uP!@cQrFCS<57h=J7H8oAb50gb#wL)`- z-vEVRh8E4r(`*I|iS)0ykqo>AF{;M-H?xr(nDmtd6po3i6WFypflV!vNy&N>qnx2r zBDTPuqf`Qfpi}r5k8ih}j*#iHM>f_gQ%uW*G-QJa{(bMwH{#zix}3YOjB#F{(!5zQ&=A(#ct| z8+;UwoV}U}KY}ANW6+BrnB^lUoXvV=HbvRhg4?v;?;OWVwCpV3w{dk;i9ue}C!{U) zDuots@Z(W7RFyk4LISR=UK5{-UYB2t6AU!_fgVBCpvZ00$Ay)pzE9wXQSadWM$=nyZb0&k;h;!ov17` z$oexB_n1Tz&qQMvE(-u_LyoPCFDN(ijvHFw#gw-b9F0z+-;w^T|(^p%_9qta;x^)v}RyaO;R!uZkYg|j+vNHA8mBqTd zwR$OI`}iYV{7rC1l$?Smjq@A0etGvbF=Nsshjz3{xblGwRw8Ac`b;{{)pzy1=TLCV zQ{?r<4x8`mUV=9nq~6Oqtz|VVxv_6)T`=8?G80H|Co)H$1DO6GtZ|O=sUwv5CuUOvrGG%50Rd?vKwssshl1 zRK>*da!O9^@9!_H^+ySRD=NXL8`kyIJYg%pV69qME8aQ|q*s%fU=+_L8b)&$$7^Nf z-_c7L4U=w+X>+v5OAI#7y-3vtDr4f=|hbrZ-DR=zgKFjekM$_{7H!VR@k|*c3TuQ@nM5nm%cJ8Xz|RD_ z*w4m*t-<&EM`)xgR#1=CqW?4aD^c&~yhZ=l2dBdp{!jlb&L=I~Q4i(^cM9eyC{~_C z#l;l<-;2-S|K%8d|9_$B_i>)0b?f!ZS1{mI6x0zge{qZ3!6Rtr(Cd|Ne|Y=q@Mz@} zx^J!Y)7DBw{Sv}=!=FF1&ZXh}->K|}Ka0=*c6<9-CI1J=|6A>c^ZzM+)~cFXy?nruugo z4$}P3V^{`R-}4$L7mTvy8E;#80(=P)z+>tQ#=BEH!ZKEbrFbvP>@3Z2HSJLo_XRA_ zkuWP&47l;$3)@5N@gM>27*H(kp$m!Stv700%i<}(bNn_dlik2kP+Y{sYmbv0ZVyzk zH>W`nmT!an+w+7Ql8}(Ij}m?kSJH@Lb|qIr>K=k_WhxZjKp|*!8a7nfzz+9KEGkC+ z>m6ri8y!<}oP#_emxLn4xL1%79Q>_MUXwL6SX^k4j#W&Cp3Ea zSA6^w4iNI1y#$?SPnbm}*N`~RW|P5>kJqqqc!GO?SjnDVAu`hI>jc!-Nf{g_(=2!m z3@q`(a7GFca+oE?9987u&}5>xNvc)9S7xPekf79d!%<|+jUOW}zc=qJ2IHfsIAyXx zH#q+97#qR)A~_D=CIy3g=4IoAP_kLvTcb7JjIEVF1)c=){_xc|ul9~!9lzas^XkXO z#j740rOMJ}r`lymhTL29?5vPS1_4RDztSRbM)JiC0#>be#Jf z)uf(IK$eshfg2{FQz@3>T|7(g=PEDmPz7>@7Un97*=XC-;nT@{?GBEu0d&I!`ZR6R z+`S)(2gm6G@5it|DMnR_a{(;wnm!BlnIe#fKQ;^3l_+GJ zE`deHb##f-X*@tHr^q>U%-;jFBcMWX=BBfJSUq%nlIVWQDS=lJsMexcFBlg^)=$a7 z!T4IcD$NmnP@bA)^_R|oedWrTmRBttX;Ref*UL&q{(I~_hg0*sZixdjZkW*XjG|Dj z`|qx|{OV#Ti-{@}i{T(_HafN}{)+gtl@AKB5EU@i|0ZMc(L!|m~EROEJ7pI~=Z6tL=68|7@6=q`hcLmh(4^WX!64sYE3&eZcT<_;A1n_ zuD#xlD9IN4{}-=BbKBKaeKQJhnAe=c1uF4yBT}f7%PwaKx^x}*iKk$%a{Bu$xzscb zxNq3f4%VCj3;=Qj79KmLAx~!PoGi&NIF9x_2^x6!K;vsIU8Hz7YF~8)XTnu11D(4? z&v=WT;}*T-*fPW`)3+KM3keXSSQd$jV>dJSLlF&nf$rRBlMMNkwM=2DY;6&JjV;#BmZ>mbGsBgQiaF=7)=I?;Lz z20J$byCjGNEN+sodBH^ZZ(oqm1~kVRWt&IYnKO!GB$lWy*wH#4x*_IOUS2b-7pVek z2lMY&VnFgFbb_JW>}0P`Ot1~!{1k44q!{C|Bne2rKg*SRvND3nrwewUJdNEb8lN9X zC+G1f9qbYviV88R?Sgnk&p9v^{YRs3Z~@fn_RAYoFw>)AcN|aObF|2h{Le3|@pKwl z!BPEgS9e$Ii?{mgMnJv2`hbxp1^Gn3|FJsap)HT|c#@9Rf8CY*9k@n-wT}HqmyXwp zvILA^kq4KY%ng`Wki$!iR@pG|M9?0ys&>t-D50C0du9Oh$j9j<5j}$D~8_hlZi3?*(8Rg^YkTK)m|H`+8lm> z5}~w6ZE;Mz!CK$;7eaq5rG#vy3$2w7lPP2*b5L}g0)}@pXI7LTNY*c5v=ZlTDR%2R z3}9I=H0t@foDbP1DW?rwM)^#a)9F%TXOz@DDuVZ}Fa-jV`zNzQ&ZQ-@5kgV-)TwUD zJI_Cc)h7r|p)=H&Zs6PNy*;v$w23t&uwmIg1_yBtCkNG(A3-`d{@U~xO8_6CRfs=< z{2TgzQG-g>gOBP&gM1va8-3eDWvoK`vb*j=rgJXX5~ zvPx=!kAaEYuh26akPTn1&hy}3?ee4-XW04}>@)3ES&G86y!?3el+$zbC+;7@Jz#TL zu>w`oseP0rUW>po>HFSgntF&+nSBiQOlH6Npi<61eT{Kl-di7lx&wpetH;rPIK_9l zn_>EW{foQG2ks;iQ-%DMz&gC`EFaMdQBDSmU#2ry%aG#WP=j|`&@xrOT)nt3@S zu$b1v3*?q?_l9_G=ZM2BkUhlXlBYwA!H<=MR@Oq=}W#SFWj7UCw_?b z#0IQeO>#pF`7Hy-mskW!R}f8SqtQV&O8b|D29%Etp8=BML*fEp@{fTb(AX!U|MR8} z7q`td03*LXd7G6794&n%Ft*SL0&{5oawYxS0Hcmkde-5KC7>!}A{6i9;a$OTj^*#3 zX*NmJhBHa`j(C({#3Bv>MT08;j5%ow5H-}Ss5(ZjLfDw^x>2<)wzU8}ExuJO+3 zN^*SPy$rGPLi0w*%tV6d+k8N(z0r*Om&WDo?)bb#h4vhlC$?$-U6VpB^MA9$rtw;= z6nUtg#inX{Hw41?kzQl$1GhrZ4aemG`sK%Ti~n4INOX5ycCbZ7?e1l#-SQa?z})Lj zUorN*?DWDhuc$G1KO0af3Ni<%``w7;V7Q+RS#IpRJ%S4dWevfbss)zsx&lRIX7VfA zBve`$vu%TrP^gNVyAZL+Ngqa~1eF9i{L8>5$ z{WnaH>DuPhsZIj%ON>-w5IVGIjsqWZqBzV&(xW6`2FJ9d32sVdc_r031~J$*1q^l+ zeIC?a#zWp^ZwD*zD<}Yb#5zel>?~Ng$1oosOYx_z#J~6Wfva&ZK`zHF5k1jV%HXuE+ zWIBa;7hXzxOHfRT1$nLhzc3O46}wsr%j2;Lje4 z#OGN$P~j2|a1{JqvzAG&BE)A-FethD0(3u2;q$+5zN~kVtzLg{sbv{)fVJYrEa;(bobxFzXI0u}#i=rZ^paTp~WfjR(A5?UQ9EwDK4Hje5oHPt6PL-&s zlYo79Wu+Y{kHCnB`EMM91^%f%BCzkU7vagZvVSae_cb|TFeyt*GUPWk#CWGxqc6&_ z@8yCyq<#lLyZ$`C7m!_7sox#U?5OoS0lVrZ_B#RFa~v};li9Kp1wX`TsV?DKc}A`P z%@{8?53%i(j4=*Qk_%L>Wx%DbY(>HQ*Xnt=Cd8A~T1^SnSO|ZwSYnHwT#lsSq0~xrM=H zB$;aQhNFuD&2mFxca1k^mpmBAH9~kbPjKnF9OwzmmiTt7iXO)!if!95jlx8zfeYPC`twiS~W_CFk+R z8Vzhpqhdo&-3MjY&0HuqI!A$Ic+NfmyU;&HS%D`_%mK$%koN-jS|-!NW1RR5r32uC zh+*OU4u+ARxp6r{ zAu{?VxhXkD3L(QZw!!|MI4ME%Xyqy45}YO;{N=RaruFWPt0zL7@0a8PZxy=9R|}mK zk-|5E;&Rf5wUClRh_t->>vXgvcoit$`%@0?h5w^R+Gs!pLme?%E0`r*fm*WDqpYlA zG7G=&QOQ(F)sE6l+wTY9T`z>R)f;6!HKLMQX<&BKb<`sQ9Kt$;qJMSj0!HJ(x@KUS z(835h+m&EM`D&KaBEGgtG%v452$)<81_souxC)3@A}STpv122cvWllj5{gf|>&RWd z&xLW&x|tO8jIJP9_o_ubEXvMwooKQ(-2mH|<4b*T*hQaB7EMfox!%+P-X<>&**QwR zSuSx4G}G3Gn-9h>$I&Hm1W+DJF-}LwAOV@fRQQ_N>m<&V+BR%x6nsS~@0%2?GumEH zc67I$-LrhOk%DJSZgRKsIpXhb@LmlCYKvGtRJ-Y!d)8jM!?lnn42LsZrIzrmCMJ>2 zmm9XZ;rU$2F4c?9i&h_Z!?3IyR!K>&?{1tNu}!KjE#skctr`Jh0ExxR;L7 z5`%!X3=eR*HZT-%EItQzj+8y>I+$FjDkz=63Cn_Y8O-ddr_n@_h(6zpML zJMSu*rnC~C%Q&_N%*89@A}vm>udHJ?1GXOvKh0P!E7Sg2QWjps5QgNu#|^p_VI|8$ z(b|5|k@S3Xdvsly$*{5WY-f92)jYr(ha=>F0=>I&&ilOc)Mm|;Aa+CQ-?_IB$Ie3Ht}7pJMDxxBkcw;9czRZel)oeuuPQPKxzYz#PX*H z!1f1F2xmfL+2R|Tu#_%rkpjY;Ra3DWhr!~q=o4738G!U56^@adip)mJ1)}U~%c65= z*?yr*$Qz8YaJ26hYlVIF?rus6SHZdW{@b8Ll^b&sI@2iLvRJIfbPr6``MTgvrU zk^%LnAU^u_eEa)zQF=) znPr$5&XgpVDm79k6^rtiUUR>7E4FTHQC62$ zhMB{<$jDKtHF1_s2D{D{@D8lNNHMPRuF26qJ@1E2Ah-`VS1>k_%A}A7#vAmCz(2#_ zFo_30&+s^Ek zVgRY62pl=!5O@hC*UxUy{yK#R)5?|}CjC*Ij@hezH+V@=04wIR{ZU*LvepJPc+Dq+ z_vI^00LXP$$V_%El-kG9J-p<?QU_>B_)?^QZf&aSbh&+ICkh`=A$IqxGf?Aq8pN z+7!#8JkFbo0__G9U{kRCN@6No@D_9Y%&t`Ssch-Zwn|@I=OAI&@2psARtu0&gWZvy zG8;-}((D53nw+LnCE*9(a~17V_L@`onAng&y=!YUJ|LX7IS5j*G3q^NNGwzIg1z`C z<)()1$OR>I+^fLp&~fpXL@%zuoO)!ufS1pWi;<mp`LrsOPS7p9dJ&QX=x3g@09BJS=vemEtrNNUpK zKV9C%9&sBcP}Ac%T6Vd*flXmueJ7RfyWVZwoM$JT1Wq48GC&4+>}<jA;r9%n*_p*;-C02;)3rxJR-Fx?)&AVcKmX8N|L@zk?+#yo`Q5wMZ@<2iEU;JP ze{Od=o7Mc!+dB{WUq8tY<#mwgHY}Qn`dm!8OsWHRBH@DT)Fd&PAw=KSCdzXrHainL zh-vu9B*QiqbO<3=WiBm=Uwt_nPaVySo0%mc1wJcUsO_r>iEjsoL7A2#7WY`oiy5SY zZZ$V4r)c=Gi{Fx0{Mb#`RItVg&2wl|a1xEy6SEhZq1I^i$y8)jy{3|dnL8?1(2bKs zdJ-im0W@61DT3J*gBnf3Nf;|;d~HVS=4ep74DpV)kyy+r3x;XTJ_oFp9`N;u_qMUE z`lbxxOB_EScB$v3itJQQGV>InIs9^OpI32C8@$>MUs5&~ZUWm!F7VS>>KuqeNG|+!jl=`kpfL*)(S7&ppv-wc}>r?zR>_0~h-(dmZh4+7_^Q=>^ z|FGS8sQ>Uue%4G>w*-qL4R5?pP5B2@k5i5GkTuw-G{oWw*x)6qVc@PlkMk6j&w3dl z(O0E7T`-2opcuJCW}|8XDhXq&X8*u;z!fwWRK0de80c)J{uEh%aVy%TY#S?{E=R-& zHo!=b2}_ZEedPFKn(RWD|H8?eGAA~2#Vd$>s{|^ngUa%9H^4+D@Fyi+P)&_;a;9Es zi;a&T#_^=x2|=t2>q`^HYAUJMDI}z*uY|4w>z)eqKUP^+Z-QbsBX}2-p z+=R(GwdodYa8q@ut8y*i9yetw@OD`>k|JXs(5it@x!oa=*i=NG6FH5IMk(hXv#Z_) z$%o}(V9dVB`tj&AD@ub>fmd8gRc4g=8G27DN$q4%iq>;#TL*4Ms$HqJolw*jw0fJp z`jGU2t6!Dgo$A=H$cJ~e{)xtPFZgD~&9<=ILbe+g(nNjFU%$?O+4UpM$Wm)ZnvLq( zsq$gYx@|35x6d_YjF!K8#+|KaO%ujo`T6r@n#3eSfT)si{6SCKmnp#2g6^Cc)>cuB zoF=G!c7_d~L{m~klWr@yti2B5q0^)v@B5wfWApYpIE$Tseq055jOi&p5vguUHS#G* z^>y}#=kxh@$jylI38?Y!bcz1e2(DOe_FlgEWM_9yrkdq&^4Wc|T36l-@SS*~?Dfg< zV?R#@9Q06l4bw>h+m$CrXX*6&Bu`H+Z^)6DqwzV9MJ0{Tay!*@JZ{U&J#5gT4fi#KoX_Fb`obH$_1?@Xlr zEiU0_Bb1*@rtbV6Xyny`?3Ei1687#DnAnIM|D44mq>#-O#cL|)13y=NI+36;$G^$b znUj{fi*6!aaU8*3-hTV;6>33!t#B$y`kicHT)nUw(bSxK94W7>L5A5iB)X?rT$$4T z-huRV-vH^{^!b%l$87TIDu8~@GmPL+3x1G}DJqby>c$(2cII8250g^dlI zsBki;(P|Y6u2X>VF}(uAdrF&D3uE$m9T6vt|09louPPhF9dq##nh#}?;iM7%$9*bQ zEoDwnMZN~p9G}9}cZ0asZ+Euf$@r2Qz?1mwY&>A2iCfV#Xvb{pU<=TbC^uvK#iOyu#N6t$jwbt^uYJJ@t*H-ToHu~&1>@t%dE_M zc{IwZgN~B2^2Absuj@d2?=cK!Px68q)ge$F>Jni)gBDYPirqe3G{Nm7f)i%97 zQWw>xcXX&KuPj?pdG6%7bO}4>cC3(k=TFzKx#8irhWc6=A{}c7@HgkW>|wG6pcv}p z!{ve9$nT#CorU{Jfd8Vd&CZ4&uy^VLab}}VP60vHkR-;AHB(8UJk<=rU zOxz(Hew&lBl2d6nc>g2N7`TYp$8mf~0rnwUe(^b+bBZe1ertVxl#)kzJWgXbCR7 zuS(!x87{mc-_k!GVN_;_%bY0NQm4T8R@y~ItWawK;?{Lrq^milVca#C7SmTX1r0ph zt01p|?MMm_Vh$h&!)=2@S3vbyJIY`H5@J7@Vss=KnBkv6NJ<{KD?)j;2FEnc$60>I z-NFOpn(w;T%c5V7OsD!wAfrY4K}25F6?T`9DH#CT;MpYFv>QBn^5}ZK2qHMWKqoMR zGb(66?`)5{xVFn)QZChFjzM(e#CEB4mufF?#2qG$*09M!>KHLCqi_atU_=)J%AAEx z32h$JqE62DdH0Q+Ll zSLgV$xV%(NE7Op+Luq@<{jfzO+~vw-JzsK3Aa4+vgRf1Mi)fnGqA+aaNftSAaIl3iMsJvaR~2Ny-endRsI_*sWz4AjLA_p%luLl6+$F`346szpRwsk-TRlHx781g)Ex; ztAxfs-QIffTz3P2e`$dKl7QzesVO!BbfVtVGz7pn@U!^CcazvYT~+qXLok04*yD+^ zdeygN(UJ7JX{~vGGQ&ju(NA-K7fG+ovXRp#uuvtHMFe&=#OR$YH>e7Iy^^FPM-aq;&>pl9h`syN1fuY^nEUGVvOF2gwX?twn<;fHf z#d*1P>b~qJDM@*c3IsHS1H&2n@X$OmFiNw+z^U|f;b(AW@$Ipc!*V7WVlv9XF*13h zbB8g}O$f^515EPKFTdDeyH)Be5+zE6Emngl`1RLE?uS6gj>#eKuMC;wi3{Obh#4LJ zrj3omqcbORGx6v*gWh@)mC$-6a5fKC-Eh0Slr)!Pyggw{WfPqJowvEoJ3Dt<8~3!` zIW@1$j$+WKvIGQ$qr9V-ME#T24QI`J`UAcjWJB||u}=>t9E7kfycJ$%d3hraG#+6o zN&qc$O3jEF4;~ddD4J5JH_mo%(qk^@(`29UuQ;8=2KR>%osXOhCq2@#febym43eUc z5gtL21zK^JYqMd36WS~go;hbDcZM)GkTS0*tIef$EQX&oich6_tmSkRY9Z_^Y1l%V z_-|YLxCh5vr}y8sUR|?0j{>xA@$s?f38@p9ACpeKP8#kATM;}J=}mH}Quo)rD(+_< zbSo&J6f7-%y-duGh1)LZ9GKuo{Q2dV5M@BDFWg7~!(V@O+B($IZFa25e3)Q*odX@F zP8vs?(}_FillNaAe*4`49PgJ@-M9GhiFx;}BPhfpkVqtN1#mM&+axb47Z^ldCU93U z@?lC(f?*jv9)WNXQNjdPPZ}2f?pFH7^=w$;$|IOe^y&kpDIH;bQWx}Z(#aX3 zF=4ryYoFlm&ilj}#Cs<5q>hSUDNNy$@9UvFZ zzM-XqYy=U|h=%X0t(x~kx-T%^5ffp#{T#_d-Tivo?lp$cj9KmoqTGQ2+_^TiT+qFv z(us=Mc#Ij%yjk!wL8dEOFFDQ_Gp7yxRe!_J8pdg8z2rCpr}UvamQxb3VZ1qCEjgyB zpOK;T##DVc977oMuhl{Q&pz%J(=?Aq$Iu`-p2maSzg-0fiSU8~&F>DAaR#LGF<;k5 zBNWqD&B0iOyFxG%eia;AU2mAKp{P~*xo2x3EheI$m~bxlh!@FK-!H$4aui_U1Xp5Snl2YQ5+GQ@YZaNGSzC_~_&tzgTAPHpy>!fGZZ#Eyet4XXL~*Hb*sjRjH*N$1YO2Xn8U>dXe6% z(F2_xQIDj<%_e)r+iY@}Wu<42qZi*530pNc=Mt|*9H(Q*H5LrHviTs!@f3F@!SsLL z!ou89Nvv9J?!8ieo8BBG`JuE`5+I~dkCG5D+iy3J(161L+0NDawEz^;9e=D!?H^^)~qgj!CF$XV(ewR%ba|^ zY)DLaec}V? zSn>Km6X>B0wREa%IW8gW-DdOG7B&U9_IH&_g3aXL(wYgawM0}uVLJ85fj)nIV2J`| zN&Ye(VU9lC&+22&40%Yofh;kxHeXyQZzCvM=)U5}64#+kRjhrQqlEb$latv9S+u5G zv4X-kxY?FNU-w8afyy_<Fi#?$PGOGKyvjm$$-$RsH@ss~!-hQj{_=gw(29q6q^ zPL3QF#nZtZpDY03kL>VIiPf>5gBVFYw_{ESTxen66c>>-7#RM*P}l_GQBYZsW0^V z<752p`1nT^QvP`BDduw~R~s1 z*%d!->^%hPeWxjwazk8$%+WIQnyy!X_1(CnxZqUR~A@@ zT?uO7*aK67^oKtESr2Q(Q&oA*!Wji`G=csVe!ng8Qz|b#5KTJ6EEjuct4N1oocB-D z5=NWl2?8EE`Ok3@I=;gAM*db0UzAr}6(BkHps_X{YK6#}m`nxdeeyrhe!Yw3HA&sT z6jVHgEGf83(#4GnF^tmQsE)`lF1dp9sBCeU!6!jvtn#c(T4l6dfD_7GZ_(~5I zMQL6B*q@{O{H~|jFh9fZU{MM?^b#|*1vvc4_DwGh^A#yGEsQWpdO5cmuQs{i zY5@xg4I1%iysvDC=ly|EWNaHj@Spnhe<$2D!2!cd;v9I_%&u;F2{>9-cj0 zYfTtl4|3@18~k>cE&zK*)1MRFN?>nc6Hwg8haz741W3!Vykj~e0me)sNLR}W2U8l! z=}AY_TD@vAO)!?wD05s8B4H|sk;U}Yma|U*qXvo>zI1)cL12hLl5jT54N?#f-tKIk zKH8AN%|+>04uH3qVdi!Wok*wy*I?u{;# z=)e`60>^`ee>~=>fd%zOTNLT=b1cz*2QC@dQjIG;OJ4TchGXWO_{2!i*kUJZiPADxDk zf(q({=oeP7p)&^b?M?v(EV(7hSYMY+atN|<~<>#pB#DvRvmX%DVU%oveVjTUE&8dHMbpO7p0t3YSd6FSb zL(3`}0d(=lIGn$~dv_3=!r>a>Uv&5sVn7;@OEwT*uHE4J$&lG1FqIDSL)_lbuvAiQ36w{55qbSz!_3^P`R8dO;}xySe#MqLFHC1f*bSWScgz)YH{%wjzmg_`q0 zLMl>Kf*g5A%!kQFnwkB={U2d9W)23BI(HsVbPd@0T%yNR^C?=$#fAGRAmbS&Z&=T)X5h^2T%TvB#&*G6j6RPdQcnYL2e zQZG}*GG@(SRuh%{X{Ez-w2?lF;|&_-g#cY}YUqGP00hf3AkL1!dP#y^Li0*rrb29MX1$}5gIt1?1iz@4?{ zJnwiH8U;R6sv}o04Q{nmlKtkfSfDF1hX0+buW!iK~93HCl!LubOGpbD8KH zS_pVd|JuimSyUWFhwI1yT>A*93StzCYwGBL1qQhuNTG!)#x|mX7!uYz`p0zO2(%Mu zPrRI{l7RVu%ZqLp>T(Ewbl{KZk5A6q5nLG+*gS6Uma%{){I<`1dz-Pyxq}?KcL`4S z@iIOi{Pe`@!pO&D7ow~>B!M>Q8HDjO79Iv3*_qAsFTMksiF zV7BLNR%)(tyhT9rRks3f)bCzzPHPqH; z(d>{TEZ|jH+K_o{&Au@447HP`KqCA%wwu&6u2mJ04C1MX4)Qc3RPUqU7BF$ON?hd4 zy!%3$J7S)5?O8v}gQR)V#6_b};CO7hI&)I2CVEmN<^)S=ro&U%Eh~qaTn-L!u|K>& z&nzd03HPR@k)=3eUb)+Ib+5QcdN4tZRQ`@cph2aK05Wb361xH1KrP49mIcOm z`N>BieiWhZ5>dojA&*K_Qw)V4V$<+p!Zu((kiG_V5$T4?tC!}@t7?FKJQ$}F3_HA_ zq$gyUF%=$GDvr*sHCmTJ{r(JsvR{;^`)KfwUaM!Asr2YkjplqE6(&t!jfhO{1{nSL zVNTO>RD^MVZ1d}z`_3f5LY30M@ri2yYmPrR5dd?ay;;V$yP^=UxgYDvbey{JrF8-~ zG!(tJaW&-&&z(&W@(PFSVdFmBn=iHux11Zcu0zEGTS}(y&N=u^gk{8LZRyaST6tY0 zXo5A#ly)VnPiQ;W(60rUY{`f<3Yo8zsy3iDs@N--xeuKO4K?poz3t(Cu+9pDu%z=Yvtt{@ZlF0(@fooLd&q&9gbMCc z=ZcGorg?8!7#hU=Ox|Ep3r^0VJC0BBmVPO430eJa}nL%L-zTm?d}tJ$Zng# zuHnr$)s(+WxX6ssUJmj>=yEaS9@CE6FQQHukESW<33Jir4U5_f=DEZJy$Kg&e48o!Lm3{Nz8aerkecd;|w&+9tKNU`v zH@vdJs-HiF^6+V{fn!ac#j)Ndez1tx*hF1Kc31GM&1nQ%0&g|>FCwTjHM0d36eVnG zI!n|?o|RcY1FGt~PD|L|y zIJtc%#T9?aERS7oIRf>%EpCn;&QzWUdk3#Elx~{AnbGhWbtK7=C80a}aZFmiy?-37 zbAodqiL$7uIA<-Z%t?F!E8$Lc+^J!X;aJ0>%S5uUQ7)}2@5{*dx)wf;5qtx0}xU(Lm@_-%Wzj4kP+UDpiv9Fa_)p6Nr`+26Uh$#{yAKk*iQBr2U=`0bRU7MImXz*;~35>Hfe7b>(`skU2Y>I|HCGJrcJz+JYjC>f-I2i_{*+ToFxT4 z^Jmkd1Qv8GzF_1zLk91r!|Y;!(IYeoCT37wc>M90H@DI6PsVZ1#>1MpYoeFR!>YKe zvY1(Zpr8NM>1Y0M8ss!wp{a4g-fY?dWOL>C~QV)t)@HkaDO_;{+o!5PLte->;bM zti_8$M*;;4InEIA7`*f|Mc3{);l_gJqqf+l2a9s&lKRx90TuAV=f95nBn#9H`gmZv{U3iZ>Zf99Qjk$AnNb*M3{rK5t0r33DTqRw?jGWEKy z5%bJzk8dSb*a^WB_ettY`-b(Y3`^g;N=~QOe+`Av?XQaeBC7j2o|0BchH)-WdVx9>>K$m0L6gj<=u66aOOD=f&COz}6?WUv1C%YWv}^Jsh^* z?qPFI!eSNVe~ImqnJ%p+_^s~R91=-|+l2((@U!8U ze*6IWk9tWRHq@iDu=#lh1Vh*#r2u+}GKsDV4pO^q)(D+Jz(Og-xCN{QiySfZD@VQ= zVfY`Kef4EO#ynl(Wo_qca#dA~%G6sv-aGR<^ZyQ@p{;Dg-|Nb|0`FPijna>@o2-~$w z$39&~MQ9iPH$a8vDF*HC{)Y5{_n;7b&lxHi+m zr*#J0KD}CB!YlKcso+8~$b0acB7qNt<@SW-vrcXyQ--~%_1Z9I_>eU_i_8WO3di3$ zR{nmjyS1iz9?Uo5s)mBVCWclq*?*0g+MN9bKyb9q$eMXyw72k!6`NgzQVC)pZI0?9x~vUCO57;5p~H>8ypp!{gUu`fT1rZj z0nkaWoKD<;Z^~+^<3_MZj7G`@*fuHWn((P zUon~T{^3i?5De&>mopB3{8qCY)(3ae3;Y!;qHMjOiYN^GKIS$uAeE!yz$TWcCknbU z)kN{nS)3=cX*fjd$ZRr6M$($=v9zP@s3T9b91H(7w-zZ6Wzy!D8lrmxK;VKDTS@N} z>xdV#=~UB)ILUYDEZg+doQVq#c|(ey09I#HwFR2N*Qs=yP9)bmFE*ElU~rgZP{`Ie zJ`RR6%6lcc7=S1>hy1Pj8MZANX%ygkAvN8Fmyu(D&O^NhsY2x{DEmLzn9q@|LI1>XvTUzw9 zDYN**A2So83hAcvYf27iOmpypHMkCX>2WDyfDS&t!O4qOD>f^g4<)XCG zyuKSYCD%saj%$Z)$lS&A`aRXcRBuG-h6^Xe zCik|vPl;*40vCkG`4JkE17|(Kc5zro_ zTp7KorkwH?sVd1}+F2_9WinE6c^FsOKT67?f&AREMiyr0Zftb;YVYNnS6m^Bc2i(D za*2MO9h{%a!=^MflN>u~x7_uqTri*0+d;+>72$P;YSb#$)rs`+1`h<;Vg`41Tm*YR90jj1^%hAH zQYmNu?Q7ejAA>ZPt#8mcy`+ytzBIrzgmsxDW+b@$u)jXBnod0mkx}s8c!cc3{_B^A zT%4_{53!ZVgd5W(Mb*q(=F$A?^19{4mf#K-78hf=sG+bJ<#9FQpR8+>QipJq6(cV!@_DP-7!Ze)ufNY;IYh20Uc&;MsqEcz4csF zQLY+lt_sSPq{s0zg!>2tAO^)Py28&n1k_0j&kVdiIiyCf7f<7-bUaQ6m&n!jE5rKp zkb2)vwQqkB`D^(!$?Gsng>EFOcmnMl46koG;{`aBuCACteIqKMEZz?lN6RWX5O~dm zu!KR_kMm&v;5)uB{S{Ym_uU$X*X)|_%|*SxQOAL8xmbCCIQS|}MuR}lKUMunM`$Fx zz;jO}^C()uGRF8PeP!TEuJW5t}uM&RW+saM#zt-Aw%^ zBV8jYKB6hH4Am-~jmS>NL!;G5`bo@Sruv8@;WZR$t(=a7B$rYj6^(&YuBxd7$`vPL zN(G#`AnGSNC0<82L^!(|*FwE^GwO+)2q!fs6uIWeSK#CwAfFd4iPdKZX_3#S9LqQx z43o0)ep&Kn0NxOt!$;~K?c5ZDUTe*UQ-(3#9d>LUT4XA!D(f8tw1k0ZNfk;06cmj1 z71mN?N3 zm!YDi1OdE|x&~`pPks3 zmNY$jf-ODG(p9y-JR9IAD){BkcyYb2g{za^Zj;^Zyg|t}e`_0RwmIc{mMYsee~+QF zY?9FSYGv@T@$Im~VC9zx#8#|gm7Js>ZigDqopw)%QAZ6&%Bq%wt09P0Jva+psS9@n z3o$XfO0`IcaAL7dyf&$dS&et_t*mZ=rs^eTmPfEfNu_M;4Y-au==)WQreUhVD&7KG z2HY}4E;EuEMAjaD`K1n3gq<)N1;73pLX$s92XAL%xC`K6H21rggznJ9J0U2~Q-5kq zX@bgb#A$q<1l`adwyRyiwVF(v>Ws-`V2&0KzQCaXq-Ru1GmaBq4zv51*-3|HMU+{|RFfZvQ$a*U#2-zn!)X2XOMBC%#2W@9o4 z`UHW8uAYd-GcgC_7r|D+cg6UIaii%%d^exVFH=P`O9rZPi&tqcn_7K^TH=u9G^sSE zq_evbziHIP+(!#F5vG*5JX@I?YeL>u$zVU8#=Ud|@LFGr&u!qGZ+O&n6MujA?m+%< zPo!F=eVimz?3zk1T}BzcH1L+^VEYtJcflAAq1r@wDCb<*VlfTZryFkVB|FvFRWC!z z{BcoIIuWtuj;!e~v;GXtd}2(`W}IyM z?znsn=&S1S#|2cX-Al@gB%w-u1z8EtCB)pyPeL>C+3ThVxrKctXy9Y6*Xz$dZ|w6M z(yx7kDW1@kUya~3MX=Gs1*0sR_Tv881{^@<4AT;JRXlQgDO%@;G1?{6o*ukD@IV^b zF{?4{9D9$^4ihc{hJSkDDCF?$6wHOG(@loWrO5H5KboOA|714lGY^4Wg1RM;E{84_ z^o@t4R9BwDNkxT4G>fwJ&smbAx(acrwT5RWq$z}mIo@V@ z)2}WLS={{c&^{AzRlo{WsrM@B(!E7CxK7l5UW-;S%d(t*!u43Lf`LA#y7{L>iPdEZ zDGMD9wP*$GDA{Q3`lhayaI+949ylr;Vzfe5CPq-RJc;s4^!$}OMom8TyjM+Z#6>oF zRPvPXeE5ApoxDoYmY;2d&AT?VJxBLF`CCHMxE2QazB~NJ+GU-Ql+2hCm{Ai>eV13b z2J%p{ku$~@p-_gD0`KIm*05nTh#dKm#KOSW7SVoHG<;T2=o+P4gG;qf8Fbjk&Nk(U zx~hf+|GFesJVTE#w$QurXl}Ks)l%hL*Vk{Ui)^8{p8>JSg#P5uO9{kk_KX z<6##hu5o7^l(iuzTpp`q%V!f(=n zC&`7`4;jwq(D|8XhuGJO*p>ZspMSzFb%woiSFNjB%bTVt^6k&`|3Y3CWklqQ;ZQOB z#NpB{h-*8-!*()?hjKe=P;Ud{djEV9fhMA^nH)W=-McmxlbAWd%BBcwC1sb9Lk=hD zXhS~3kX*aV(G|T{2yMOdqa?Z4HL~HFdO0wc&wiKoYKOVkh^;T~>ZK6lY9N>N%de8L z#*f#Js^&N7+T2XcpvD~UY$SijQ_oZl6@$F!=;;XS6pEl17evv;_f=0I2F3(d*|lK^ z03A3Q8!nH`F%|l|?}XR;B*d(dPULMm`mRWdzr%pvv-@r3UaF#118%Sisu|&a`PJYX zQi;mNI}a+$BqPtks#GC1wlBNbxt~(NBbUq@xr%&#E(?xKGZ4X5QP_sm)hc3z|0wJz zXYRpixb;Oo(jxy=q+0c4p6d`j*B#o0Yw_Dqib36cExkp|LB3rLBs)}P$*x`YFuwvj^6XLTfyy%`>_3#8#Qxdpohs@LhFwiyDCQ&Z#0=0gvdlBH5gQ zuR=G+`8Y6rE_u8DUhY4CY3}JJoEmZJH+#GQ#6?G|K7*?-LPv(Y-H~#7S`5?GN67{1 z+Q+D2!23Kxj_CfIJwA3x79Smx2@vK9k`{WPNTNtz&qO(eP=nXr9GH*a#2?b}Y#bEn z&!kye^yLw>X-fTz8LouaQ03G`o|Z|-d37*goXuB9lXyD4^u(r%c(iXnuc`1CXr3^i z7&=@a*W?IyzV22eZf{wUFbry%HFm%7tOcr@LnBCm(QFNRy8?YnwG)iKA7SWw)sd!G z$w29LWW(jt$w}t*#S!|~?5rNWFT683ov30iPlhQ~W+6vDkpDAIsz;@CtZIy3o09=l z>0~xiiu@r>#FHvdXv0wz=L`Rio8YeNlBCJ?SbG28|M|ZP#Jrf&LIrQwxP6i}O1h4Z zu&9yCOYh84%xv15At7oFaA{jbIt=5ye+n@6OIS8Mi5Nn2&WK&$snqe!$&kM_Q3NG+ zbK-%>X&Y8y8gq{7dMM`9(KDD6ExkIb_fdtiQJ(Jx2HoTUciuS{0svU1p@|PgHKL{_ zBOcEbCLsMKn%aF8gT?mDRlQ_`#M70in+@O1K*&$ZRoJ_DBBV2`>MUT)J*c z-iN+9S2Em**FJo-;d(D^XhOMAoQ->c(2=k1{W+UdFEV!$?<`2wP+fH?wT8s&1wWhc zKKcCa!k?`H?;!;G>JVsiJaP~!%j6h+S*Y&9LI?0qr{rX?5GteT4Eqj^6};*V-#5c}n`?b?U%XxyNo z1RjTczex8_i-87o^yDc6m(938B(MgzqNR>#V_&IbL3CXK&a=@BjjnMzewP5z$3S6w z+6(LO#;YK`I9aKN9Q)=r;@W_3(3S{jw~FVC_WWBQz^gyHEi1cdD2%@;mhkBKnAzp) z)Pb`}R{*tK|Hye!Ezxo|5FIv&-odlx$w`w31X^;7mA>zHU#s>TsiGNjtXsJ+X1 znHZzse`LMthh(aw5C;4TL^UmQ`YT5Aio3FPdTsb4@9OW=3vzL4i*1Ddm)+LQ_%j7Rd{-SS)Lj1C9_H z_~ue0R9PVdHz&EEU+U1PBLKR7W^>T`j$^@V8Y~_Fg;NRYJWVcq2AbS`kfCJmB$*JL z%J^Z1;PDjJ#fb{9FGeuTQWoYJAZGx!8`Ih_lzwa&Uq)3FO-l^Q6^#uQ&SY-$B&B?7 zBm`1rg$)~sMy><~ttfINdNMA`=*foh!FE+^5(JDzL^s9G-RX^~|MAE=s!RF>x7I^*F=u|`d7(RB*TH)H{y%pA^5dV^cOU=HfdfO; zRsEOtue(lt+-4vfC+K_92h9Nn1{^tJcQ?!xYvbX$U6km_!lkfkSyB}qFF*|K(SbM3 zj#bF}D3atcOOnUE%G97KYN@ix$A&jq(exB`JWbD4EUrr8^lPnyKj`O3Q9cZbtDrv2*OlYW_lj)GU~j&(|7qm>9X*HDSoaqcrx@t>Sc@ zYhUl3NWgJ>EIzDJ(r)N)uouD9MoOZO+-rRqiFbsv7}$&nLsn$b5$k zk+jDJctk7ksIq>G<~WBjCEsZ-ERk2(QxqdO(y}68qUV_Fkqp)rC?h#@`HPyECtzAW}`;tER?{SU1<~zlJf}hZTC6I@(!hL^n(vb;_fFH(X$J5;M}_rhsREc z+oO#~Zg1jnTUD`%mCQ}o=3@4|Q!R0a^My`#QSpOHz@rs7_ZGaJb57ERNV_PSdI#KtDq3w12ynZL?xHY{J2xQ z>BlzPmbO?NWm;$9j{JO`!D%)cknt{LTdoP5k4v^IO8GA-3}!3xXoP@oPZ5Jz!KS7O z$e3Bl*h75SEFF;Ukt>S9A07C^^l*>bVNVg*l(N*%P>Nu=kLxK)y(Fb=+x*1qLTC2J z1HS?d+g$9Gj!xPxh;x(Q%SuzuCZ8)3`l=6!^NXPyL{cP1Wl?jvm+(zu&ZW;}a-Qbd z1eed>SYgb`>;^n}p3(}BHt^)*krp?6oEGKRm|$fn+;dEZ4$NqtaK0`)k(4xWLcR=g zPHQoi?ii9Q|B5ksasTW>O4!lCW@0jDoO`!MaFV5}YdJr)yztc47+b2M(kSiaaef(2 zhUw&kX-Pqv?Wp}C>cGtmEW5QOnCy1u0!}ACNrbs0%9&&B1ZAU5S*wv|7u1^b`}p;# zC6^wy^RlUA)?95vx~ENf_q3v$O}i(Vy{U1(o}bS`yBmC5Q8r~#&2~iJn?;IE2|{V^ zEnyghL+1}pe1MnrU)&~r=Z_Y3!2gf%)R}j@kHIP?L=lTZu*!jc$3h>E*&`*tTn(b& z*I%J!#J+Ei!(Yw!52qs~>@04;*SpvL94p}c`m0l4i;B%SlQS#qqzVnp53e-MJT$DQ z^pt01*3U+}!Mptf^PFugZ>S)tI}F91VBViyS5YaLiS@gB6GSCShI0r zUd_1$@W-R|VLHd|*N+hk@WTMyR@w%VX@MuThG0xQ`#u!llt0y z?_kNb7f_JPjYfJ6t(K&Jsn>Ka4IB_3i0+paU%TKjTntimpx6ioDe#1OlC0x2G{8zx zL-LuJxTlKqlMhNQ->sI*QQww1;r>%;3S`KhQ{o^Tb(ilAuIc^#z}t%ZHI^tMr`{DA z$_wPKOM*_YG8UrV})oqsa}5E>gdHM;BiBNj?Z<&pB5W0XCNbNpKZZpd_rm(Q2*P z4()g+6ZGmyEu&D7t@tbZy-jMaz^Z0NUtaV$N8Zj)yJkKoOqg7H-W94-1|bUgRt?0o z5tsBEBP$MA?~vS)Xg=P_GzkuD@-*?kcD9BBHEHdt^Gs^_5o+g9n>@0+ZTKNxk2y6Q zEmvhG5lT)4#R6xrJeU~Y;L5P#XTRL2Q-3@+qp~+DCSP##^l@GWSgo^U;?}ONr2V4q ziu(36Cw8#InJhUbgkF?e>bu!flk%XcbDK$RYqM~=r6e6^-%M63lbHIQ`n(kR*?fbJhbH157~xPz zAbBL>p!QA?;%bundD&ypZEjlDma(v->;{`xa1~RNw&TAlN1@o#z)sw6Zoq6Hx0QEW zxQOzG-}~vF{_ybg8Gl4`7z(OjqB-%^#|2EISn zq-mY#dDMQo(xjWhTu5mB%h_YPX-KEJ33-czpkdTZG8zjk?wIYU-HtkD%pp7M&ly7A zUft_1n_7&e+oBTwWrah8B5PCMkSzLt}+riI<{I-g#T6Bw(1kvjM@*KKXm@k z`9tRqomV;^q?lQJ7t^VAws&@)w|C-ay`5(}n=hWV=e?ay?`iwl^LTsk{6+gk zzxM*(Z$I1V5BhPZ1KbQSH!nIbdhKMexz%1V-bEny!Q0KSy%}zH-gUNipKkAN??lfw zH{07g+yBq%r(lg6_&+sD7Ol76zI$~Pl^@F6jd2D4x4FHwQ{(@hZ9edSpW+9LZbbWt z`4K69e*HB#jnN2|OgMmegjJV<{nMm>7GSg?a)p?8;ZlQEP(ntAreBVNFtn1bXWk}; z(&3Mwm;PB~8nc-@VEr+OuOa5NVwa3B2*N}0&kz__S604H;Z!dx&{l?*@-ao3&-(1H zhmO73g;jI~|IJ39`vtqu*~IZ7w*4GV#O^s{|`6X|E=w4;QY5c+YkHy zDSj62KgDaH5?CaGu%8d2%XmDx-WXTNf9;*krxp2c8#sUm`R`Nwto`y!i2m2ZGI%@! zneXu^%g$y~5WjkHKSEb-K#HHq&=;LOr%0po_G+*y6}=BB@$f4Cx4s^12H~&2u3)Lh zF!<9+HUm*<_lsbV_DkmldIZSJRf}~Xy5&j6TJQ6A%N4m+*`9jcF06_CrX4t`I&awl zX6U|QC%#wR4LjlJ4TPeh2PzXEL~bR@Xz$>))VL{}mVhUxae>*>WW>j1c2rUpXRb9DdsoacWb{XafUMwqE7 zDyP>Z`QFcB`rmGEKW$g&e`ja=*#rIm6hCXhA!EP_VkA51EQm%ybd__bAtl36){93` zKQ7Br67iQ(JM2)tGoMWX!OD|h_1}ut>WwhDZHFg1<{}R?>!Ao9)g-cY$nA=)Yls!(l^&~h?$GgN-pal=p)_j3c^%&5#8$4-I zN6-pRKWgVqmM-y(<7?T(>=d(;lk|gTe(_QjY#66+OqW~CdSxC1@7msC4?@fm-(g+yDyqI*tNXq;$h2gIsbGLd_DP38M9>GT;c5eN zw4SW&v-u)6L!8Xe{T}OBN*09alvXEN`61!XsXfgKR|;)ETrPm(m>geFT2ts_Bp#IH zzNsQ-k(p&2XFbc=KQ=DqB z^^AZ3M1gyU3)}LlqDQ?A8`#+jx3<6N>_jU|VhqmR#~SC-)t3fQw9VWGib9Q z0SRz4eU#spMOFt+v%}nrZ@)9JdQYznpk*e)e*+QC?~TV@s?P?N!ecLpwtOY)Ss@>) z7GIVOX#0lUb*7`OR)fbjF$o9_*LFTvB26L7y- zJcZcPKHPp1LX;h9hvY-tOpwwM#S`+$t;i!kT6SvmO`e?C*+}M(VD--+j~=h;;T54C zPDAzdIETA&4quDc3RZ$i`x-H@Bz)X@6?-F4cbD-Fu#-aPfEBqx=+i${Nyk5Dm{SH? zfh3cb6kqQ()2L3TWrd=00uv5mpto?Z{d+tfH8u$R6`Hro_J-;%zKYV<@E`#Y}K%+6{eNv;TsL zI4Vf{CiE_SXN?d(U8tp)Nix)zGm?>vV+C7D!U7d@gaLj|+J}RRjc$2?afndxG$X#^ zm7GWgxhjCPjbaBaS{BjHdB=&tG`!NBUnBvhzRaxt9(EEPMe`5aGJbYdc%mpN-xwl> zNwL^xJaCe<&u5C`oa%YN4_+|}0HW_Vr@C~GECmJ&2g0iHa36(0P^(r2K*RvyHKU*) zM)D+Gq@B-(!xq5Ns=&oUzVP~qNHB%wE2Xg*Y&3cciSQ>W9S^jpqZlnpNg|;&9ss75 ze?;UE(i$w5EGo4*P>ByGM9Z<9qm4#E1SK06jOu8Ya?F@sq!7$r5?U_~XHgJ6EpX`? zo4ekD@Aj!C|M{f^z&!iE&3 zu~S64L?)t@Fc~itQYJn^(iHlS=zS&O@ln*qT#?Yq%4m-&3z3f^_V;}RO|)^wgC-fO z+B@+%y)|j)ixT1~0-4mVc&llUgT^BxMIA-4k`PJp?!7?TzCuu6T( z!nxFvpWOgLDTiK+T2lft$}K9zGr=md-<9P5OUq+1=1c4Vx#$1mevJPgcl(Y1??#?g z&;RF^_nr|1FU;)+s9yf$w208lvuz_i2ayQ^>x9-%X(|B-RyQ)XAgzX>@EvcAAMYg= z#>y&(#1{F;Mk8n(K1`@R=QFF>40YRH_I_7++^8I|H?vU|Pzlt(PqKxflHk6adrK6R zUdo(0qiR}*DI2LCmJxNqcy%7NAzo4CO>X(b9;WYU?waGD%sKkGdl$s4>OF~WEuk)@ zgggR9%p-g35nKMUeK2hiZ6JFH%8NwwdO`e;%BzNyX+qBfbrfiuXtdtCV+(`Xw$xe< zd#ytb|Ca1W84Dkeu8C!$x*S$FSzgMgppjveMVQbL8q%wk_=srFXCd5uE7(`_wUf;A z@c>&jvM$6KRo3W`iNPiwu;QSo{1;1Av``Y4<;a40=l{cA%>Sd`?GFwc`EL_XW%)10 zCo>b|*SeD=%*Nm4OgSrSXvU#5;evSHWc@gyuKMOvt>6ZPgu*+FW%%8I7A z`kfX>cr+}drW}Dyx_I!e-9J> z-$#Rn|8M3g$N!nD9`OxlCU3e=KrAmJWdLRMlEb*N7i9UF*S#?STw8LX?}c-Vo$()G zO&UU-TW2dy7qVM6dgHJ{`+v1XdD$sTX-OEgMVpy#Ev}InE|%!S)A|u3;|}&ad!3dJ z5~xQs3?!))#_N8(bm#Wy_VKTg$zigL^(n9%;yljF@f}FG<ibwROo5RsHc$&)g%bb;-DKrQ$|=eK zLxc=T_NXjek-rU+q}f01p7b!OkU#v*b*$6HE&15VRYS( zv2W<^JEUo+d$CW1ROoNa&Upar0h9VH$qfw2O7d^>+Vn@By$qDspZ25=r0NLsEz2cf z`H~M(L6R2r;NMGY%Kn@Jd!TuM5$_oO|DrE8BvHQLT@SXcKAK{W^GfzR zUHD&aF-(;+SfrJ@x?N(bYlALJ`ffx6LdaEMP4jsW&;Rb7lTGK04D%64odGP&1#5(I zg}gRM-8~k8!e}kSE1-auTq^-Lh1Z}w?d0Hq@F7IY$g++BWnHJsRUIPoxA zB_uTq7RunHQm!+y)P%zF=jh#IATQ(m+2zl}^Y<@azWQI|)M&N-@>u&G$m+2I6^2XV z3=vzlh_%Zf#{QFk?(h7+lYjf4VKsdI_j39fY5g-$`DdW-&-Tdu408JC>2II?>nZ;4 zx6g~^;b(U`h5ucDzOk+ryN`AiLNw6l-uCz^WzSQUYNE>u{?`|_cigpH^tC)i<$w49 zxGZP)$Dcg=kN$By{?nk-#DCw+Q(6Dd2_kOw!LHEWvfvRhH}g`y^sVS~E8af2w#+mL zq4%M}lti|xhI%9uTUl#t+7gOlX~rmgR%n^eLXD$zFZ-6JMcv!~+4PN;V+AN@qK6qtT8;v-+-grsXC<2EC@#+PYM ze0sQtP(Dv{o!Mq?@zfdR7AH(MndM=@n?&Jf98R%e0m1kj~VGOUr1f)gPv$Cb5#QL{KX`;v!U5LRw2!Y-F}O zdrHcG>+t_N>?QI)9(NBL{oh8OHTZv}AJ8`9ES9esl)zARgbd6~ceBJ$5@Oprz0DHK za1~|OBgNaSkh7U8f8y@KJ%(1&WKyZFh&GdUscgbIA~UZcwzS3@uDUmzvO*+5mzNU0 zZ`y(d+}_f%KZYd+Q(qJ?R&Mm`)@gw2nk|%`6kp#-Ne;Y^hH4K9gyVnvKAJS5IO8k4OS4Z32)j z|M!j#yNUb%qi&=B-N=)EzL!``iD-_IYg!Y@al1^5xm-h>>;Qdi9we7LKTD4s_pxKG zyb#fR^3dQm}ekTGm*p z&m!Fw3!t0XMD{G?Cid2}Tw5D=9Dl|VCtyh~IPM9COxk}~mf(4#kmLYI# zXFr05O5%z>=XN zFRFk=TUs419)k&e;o(>;wr%-k>Frx-v4*(|=gAW%n?>EHlJlu;J%eWTeO9JcXe~LW z>O;|tAmu`(SUX7`r~xvC`IWzCtIjnQfGY3SP}!VX_%~Y#^hL=PAhohO^&^X9m#GoY zlzczR@o3)C>TvxhwD>gx`Li4>w04e89jLg_sGh;u?%8Bw!$xvj|6h-F!0vQ^v1%XGWIo+NB$Gqo;7|R;w}EgXl9K=OqcbF==Ip^7oUKK zlS96^T@Bo&J9nqIf46Q6=hagHxQrT*uMWvoxynfBqhTi!Q;GUg&E~}G73~dVepw9} zzB>u>kg+83s48IN#i3C(JIAc@ zkxhp5q8zi6TPn(USx8lKMS2cHypZ)O@wYl~(i&Ku^GhkZh-Os^^esnpRz6Y^s3D9i zRpyEq-v)*{JCWl^O9glY={iSAr%^RPDK_R+yOfiYeJs3^v)lY=-L6grDM8=mdC?T9 zjUuFo?@4M%jVfNpm{}^!tTC%a>Krpmb(uGIrQAw`$M|ff?O0xH%?Ju*ktB@YL(zT&8alMf>78(O7ccK1U;hWX8hO2;i?aspm zKisn)L-ol|gS(H5?=)3I%v9osfL zwr$(CZ6}?iW7|fD9ox3|%{f<9x9-ELnh)z?t*WWTD6DXYhsea!*{zJAf zq_Tan3^dL+V)oc{H>A(Wz6UzRqPqpNCFhI5ONvtC7maS|o$GbU^F4JY(3AewKi>QH z#XfjOX&=~{Sl$H8Pw9*=!_?!|;Sd;^ru1Y;-T!;41$ z;~>9JU%gXPVNEh>%|w`|;bhE)>@@FHY8K#))Wsdo#n~4f#6rYT5Bl?9aoh)V(cQB# z!KRQIWPD>{s)&!XFh#581!wm2*P-ONmH(JA2cZrsF7k~4rU)d`1 zklxXBeHpxIpOVoTFKBdoV(Ka|dct4T*?%vY6zCey{hvSHFQ)if7teEgBb57^&G5*` zoMFj?ZgSgo#5Llrt59-MmTg#R(%PoV<1zt$yZIB+RY)J;=DjERfPTq*MeAuC#N)D- zzZ@xy98NvOmLAgEoUsK(@(QJZV!?sTMgXFJTK`-OB5aK>JXmD;Qwvg#N+rZg_?a9W zT!}w5KwBi7oZ2&=uO9Fk92yzHgVkB=04OefZKzfdmDnL9I(zn^g-U;KjrOFYwD|pK zJ+V`2sbQ2wewXdY@ixDgMREt*7#0;76lR#EWm_ED7y=|u2FoQk6M%u2NKA}iD(^?Q z=WmX3J!zZqRs#;cuawY@(qVW19r&|e$ow6iLCamcK6i#gmc9%22w;`m`42Dz0txZm z<9TwwKwf}`f7~DRM-1Ti<#_eEfDDen`;Dh=he+$MatAmv9SwxBbs%K$%jfK^Ve9yJ zP*;BU86QWatRl{8>OvRx>DlllqDHQoPVsUnJ+j#jfqr7+YrE#0WSbNt=9lcXN56=& z-BzSezQZiw>oA37GSR7AXQ}n8@E(?nYG@|$oJp|zytLLg>JBKI-I9|_6b~dMcvAV= zz8(OwefXm)xPIyXrDHxs0LUp?AH8!=jxDhV!Hg6h&qG?dd{%c1bZJpy+nqJrT8~%O z_RKnhQkisn8L4D5;XC@V*Tx~xo2Q_l?bWKEc;zQO_fo{lD9VFpi~_xLv4Ge3{eZe% zV73R%y+50xSQI;>pXQXby75b8u8a~hLD*Qn_h+BE@1wScu1qD51U(++pPY@l&ilN+fHW%LI=q@V-a@`llLx6 z9pKZ8?@yhLbkM9bT&7`3wO-p6QqQnPPX^g)%RWwvL&DNE3Xx@;oTJUXvZuUxaG)0z1d}+`q9ujd1H4U7wei0lZv=k# zlrugS;QV4c?v3T8UH3oX2h?{_xud)ElZfXgU$5I@6h+VXh3l$KrYrFc61gn>E-5wF zUw5{SLQbHhxG=l9QW){Zz=SXusv}#`n7)%Z$^n4=;ah=!k}`DWcekJMn(PNA5X>Hxb@%qXFgBYd0*1Ry-2-3eeHTabd8+c&|W=sknQ7m7Fv-4Ic1 zbI1}>c=K;l!WT@BM&7>gvA<8X`^wfX=&j4YM7j&oCyr%>R`EN24bMbyA=b;l_^v9) zm`@(E*aJB4WnV6k-JSRMz%6OJ|2VYgXb;U<5MbX$6xjzjC-1rN^BMk<74kmyQh&;@ zNCtp_Ma86EEWKAR66i(cVJU&+hQ6K-apJ(e{qXp%PW+R7iI#EplFQQTi}CLx4GiZfgPjMpFr`vw`(9Opr762o-i72dE@QR@v?sAk(T`jTjF|^ z-s5kV7ghZ`b6)fh|5}jniYB^hgo$pTK+L;8;d5u~mpSR|<{R)sRLZjRkuP;Kz#!nd z271?F3Z2~8uVNX`I>_&ST%tzeS+;xDJ`<k8wm4Wx*0!5V%keuKsSsgl7HDw^OrhmI9N zZDZnjgZ$~x%h8G3fJ^_0`+YMw^mG+<648WaBbw?W`}pUrC*gDiAnx)4FdbKIAFCd> z>t*aUJ-iWeoQ3@pLk{VDfu}ik`3VwJ{bgW=nhBTuoF=t`+fa zyM80Eoe%(c1}Rc-jH^qYo@S!g3rv}=RO?TVwasg{|4MZbIh&%dgmd>i-JFo&v4J>Y zBVb^MxME~2XqJtPk~1vgMvm>oOKQ^Al%=VdX^K16--j2xfjQM8Pf12T2P9L#LXe*{*_{wNCSm#oeTdNDbtqyYpjT3#< z(eSE3u7=U;8F7fV72rxvk6VDZzEGXfEWXg9!=LhpfQa7)lg~^mDYqNKfzUVa3@<VczFu9UaJ5qI=ubIq7M~Pv(!)PKejcQOXt4OB-v~;D7K?%hy$xhT6PQ4W8}q01h|VBq$T69v6;{tsjM#!rh=b zhnQ#hnPVb|aBapKq!R#?Y27tgF1v1cS32v)F0qs{Uqh+GR32lqv7;pUZG+r)ex3e2 zGZiBdD!j-{@n)LO`C!Uz_zQ>|{5^*%{ax2=k|-VykX3W74Nz&a#yfBUCxUEt36Xe` zZ!IigQ&a}s`4gD(mb%1#%7Y_Gh;SR+;bNMDMo9xdouZlrT@`p4mV?73D=A*)Y<)ts zU}svYB^g0Nb9F%1^yOglPKtT7grlA=<;Qqt29b_A>t95Y5nn{gpb2Ilzb}IlMvi0% z5s7ZiL-fQm{|4FbgooZCu7m@2q#2PFxLu^IQbNjXaH820=q&kAKy}m48$$3alz(Q3 zR=U3BI=F2{OH@9HH(03GLLpO(V%O$1@3D!PfIIQqNW zqP-fVUvX2#depvBN?Wry@4Xsep0yHN#FYt5f>DV~d!JtXRv@pN-AKSbhWq&=yP*s#Q0Rd=&ns zaG)|P^(p>wyz3N~-Ky&QnW7w)u+%8H8zhH$A-h<*f%PLFtlxNwm>Coo2caNCVPk*v z$po}01Qjc!{Oy%jX0Ofzt7VMXX z)d9OBf7$|V;RUsmT*?oH+eDMA9K{jb%H-4{ntTpuRxYLEG2#@9qaM-zvJ$w*>ksEW zaL}NpQO^ubnG0U75#7I!6A$}tS7qE*ZM=6lxaw7wj`fkb&qTqCI|IF=%{(8Q|Mix4 z_a%^L+~3NVNX-BQNiYVka9vS;2*kg~e)J|%4gx9TPL4q4@Ib5_UJ6ZyQB5gGz-)sR z@ykEN8~h5Ani2k07O~Y%HQpn(?IiH53K2)fy;`9*|E8@XDGzNC?a}O zM@2>Jql@x9$sKGHVf@2zbN4SkqL{-xG2vVSq6Jj!{xF;@Wm6q(7E8>JX3Jfdy%5-H zG={I@7w_=4#PY?}^CEmPHE2yZd=<3kM2szs=rs#NLwcQSH<>X&pe8QYTq43ByI>Nu z{^&s+{XOE4<=^5MYjNyCRN00&dtJxd;O0ba#{q^RY{_|;<7QwyiUybT8Z;N|kxf2p zpwL!u0v@Fc7%t0i4KU%19q+;3tsN^ttphS`2wn5LhlTRJDVFw8ttD%UHIkq9cstPw zq?0)2>%*`mJ*nul?cA80ZgT-EMRf^cLQi=CbaFL%9-#uozp2DeqH|UghVGI1x(~L_jgflAeB)TRH_C)pPIl^gwYc_ zN0w^pi~a0zecCQ9mKQuVA$V!fXdhmR=W$iYH=RZh(f5EaiiU6k-9`L;T+hJKaEaTG z+1&p~s_SFP=s?P_6LH|m3D9Z|sOwObL=>muq64K8eJ2=FQM4}XYv@zT`ZfSr%@9M% zQ^`;=0C!W+m+N(8^pZd40=gs4llxh&ur3-w)LK_mSh&;}c7cg>hm?2{V;2tVebCOo z1sbgAh#tqU6-Wnre@6e)(m)4`1C9)Udk~|$817ng%`HJq0tSgFss@%I-YByOr%3*{^L&)8dQ2InUhj-KJO` zbAGwD5T2p1KkfV3q$B=pvROx=Vc}|KApS(N?f)Lqf~O_0hi~fUub%tTto!#D78|^@ z;(aRo@pf^+ngu$!uv$C_WP99Q_9D&4o|P+orYLQD+`Uhf+wHq>>3Z3kO%c>^n zVU71D!j3eYFXa6jkBjv~h!COb7QjSzN9jMgra`oCZP^5kfq~ zGHjbXrcVpLW{#B|6nw_gr(%{cCqB-5zp00e@2|Sht+O?kyFF7o7iu?1v%QVKAw;p! z5xCNi5tXKbkSAI(==};VAtd9KqT6^V68#6q1SC9|Q9AQWZQ*y(8ZfT-BA2Uc?vNpeE%Loc7)Wu6R9^RxD< zTLDyVPpf1OWG_wXvUplf1r!=qGOQ$$qO7qg=PoF_epB%+Ru}G$4suG@!e2C~9YoK= zSft!lRLgwU9s!tB*Q6~PyrdjL!GNB+s>D2%UYyIli{4ww`WKR%-KikogsVqwp!AgS{ zN+7<8bEox~SYQ}}5VOnx0)}sS$vC!Lp)jWz^b?YQZz7>;GD1-l}o z1fe=_=zttj93Q%Tz+>)5OD`S^1i5>vKU^oEquQf^xEA$CAGTB0)f}$CIZ8J-E;6S; z5zbX+y~~|PT#Vk zbFfSf%7~q_lMFkwyZGY3;ziYj5()iWMm3>WPqwy2eVgT7dCm47zRN}%;Q6f#Urt)_ zVXvjxb_jkXF?2jYelisN60?ERi8aVtv6PwjbVXfUx;p5cn5#Qg8)snx9-c9vRIQC7 z>gsx67&MZUm7($gAecE}1vJ1I{$V~EbEzP(!dYyO6JzzT7A68=ii%g)@`WN*S`iCX zL-*toODH={qL7N7V{u+8qutOlQ4;o(u5?ud{8Fuk-_FWWb_|&#agT_7)F?=81U3ZC zw-wB%KO77Jxv%itjGy#_2aAhGzN}FdqCPQ6I!fj-)&4c=-fe%&W@hP-vztm0t?(fd zcx{v2mKO2!$|VXcMGl02M<&j{G(9b2+K?K>YxTEbO-R?z|Aq%!#559AIAV}I70WJr{5Q0;!XD9NWKckxlBb^+4<%T;1blUQIjV;Y~#~(x5mafN| zoP)%m_vj&p(^xJ5IeUBv>-c3MM~IV%mL$)gs*;|GCWE<*R#B;YJ7LO`7$|1z!bX); zYma!G1sfkvN-UoJM##C7Re>#SnvkO4x-l z+T5$exO833IcP17(RHqQ8R}!jRW0?=PX&~^DCcjBipsQV@H}XgcwP@*=kNE8&vbsP z6qU!bi`8N*tBK*lU(*Nf1$#g)&yEL5B9N(TW!68XH;ZN1+EX}LU%#-I9 z*(K)_c}5BZufKlk%=*0vbfjV@UT0b?V)UNO{U!a8`onCg$G@8T(^$j|KGQTw^WTa0 z>3V^z3Z{daKBS>sVSGdYXe-fY0p|?bv}MWZij3|nG64#wxVvhsh;7n?1|0wBP+g2N zRznfk9E7H!I&#Z%XK=#?MJ_@`g0DCmBdgF=$5uT;f@(|7Qsr4-89@Ki4kKq}Yr%V172#ADQnk;Oy*!?rymw;0g;BQi z1+}B`3Mmj`3|t}4^!aVe82MD^ToI8fYr%@(LhrRa*6_!<5@Pa_4ccf_+t zW(J&>Og_)oe4bIq_xOFk=el~}>QJ%~u#l)D@@ru=wAuo5;ADK2Sq3q53O6|(((10z zAakmF<|!D(%ds(jsu6@Hhgsnif(QFdOO9py_35?~uzKOw~ zAWGYk&xj?CYjm&sBVA$`@w`8DbLnTZ3JlxuZ+;uA9ZVRNGUiOPR3pB_^_`E$k`BgX zf%TP95P-lf7?k7L6M_h0B8j3h;#g0pQi+E9*m||#qV%eH4>V0Wy~DzCP^{}Sa@Y`B zE~!KnM@Ncq{A7~exT3mwACcjd)ykJ`@*3HlsA`f3?2iwms-C@FADJTrPKwQVX;g#Ehz4rKi< zE(HGBUWzA3)mpGB8{sKtiKM3Y$EnU4-$+NDk8$S60&WlqvJ)S8w8E+iIdg+eshXCR z52iI{6qL@Pw<5`c_)y>wj+a9y&NpM-li2W-*aKN?r8P}&ba~Nq6;8<|Z+Dw8Z|<8+ z=6Z=k931=Tmj)-G5y4qnsC3{9a{A_5;g8Q1_~RrSOcXG2P| zgySuCCNpyOlzdBdZfLxNf_NlOa5A_NW05@W(~caJkam%DW5^6qQ2lT(OUS2mzK)aD znvF3FLYrfMmt-X{tkBKWP1!rbAas>r_S1<_%}f~Cdsq%&%qcpaF&TiUV^~CR=+cQg zGG&KYyLAvIUTTz9(dMG2bu>Or>ZLVcqkjxB_H|_*Q8&@G0@k@#QZal}P4hQ6v8usF zs5~s2Pw6AC=y7@f?KML5B&#Er?t!9aPY1IYOkfG`(mUq{&s}}I={1A~Gz6b%`5qY( zF+52ob?WUP8?@#8EN>|;6;pKz4y~@a2ov(UEb%T)i+|-faF*K2XCGA9$jIl zn^>I9W@iM6jY*~D+`*=>O{6|w|R!~1;mLm)qP&bxd!&9TT@m8m5*jAk2a!uAG3k1UB&#U>CF4I zaj11#s|8tULg{$Grld9ieBmCTu|zx)BOQ8xPA6LF9kkAZ>R z-bZ*Y?M5DNhXvKnH5wa&m`{Vph-5IKS6EGt5Af2j9hb%OiTnRBZ4J4AY5A8 zPZ}So8~zn`Xe5P37mBZR{tCv(DLDwI+=tBfaW#6lAzaYq$@h~nVc1|dm&={T|o zU2)*|7N1oca|KkC3Hf3eqJ}%RVqwmgK36(s+>ZoQptZw>z<0*xJ$MA@PpT00B@lUX z1X|DzqHzl=mwSNb!oE}F; zrL(|E#i?dqqQ_^9!2k035}seazc~i(1ul8$u%-0}g{!?|LN6bN0a}9Ux0g7($in&) zhHUQLwa^fzz}T&uQ$4Yy^VQ~t7hY`OMBz4`u52I9|6FhTauW9V-QGEwbC_X=vK zB5+w3SC-c!NhbNR-8SP>-^;7UjZB5txvUe73zKDcRbXhL*E5N#iJ72BIiQWSmRtE1 zO+*@-;1oD^Zfl=(>P9SDC~Z6)ni0G+y$vSAz>d|xZ|Ra*KmNs!hT1$c6cJI$hyksO z=#x^)Q}4Q~qS^jq?51&;dZ+zeoXq}-!IWj0>4Xh|5$%$kt8tAi#KQ!b2 zxo`KKLHm{gzi1KXrz7jQke3ZmFmjC*`M&ZNR$FqzqN*c~d>#a6CBzc)d6~p+O&W}x z4e@I2HHm83fxBB7ZbZyR`_RG}4~?<;+I#oUBqPY;Ig%qnLR1YOEXH3z`hr$ z2vFk-{oA%j0;OD};99|Yqz?`gJ1nZ{TTm~biAL}^UW^I1h#i;y>z%KVO|ID74~$|3x?&9z66d!?XkcO(kCgg^)L)-ec?Zvw@@F#Fe%wH|SaRL$8o@ zGqf4<-Ismfk)wZG?QRHO#%zf%kM~Qyu(BeQdkcggCK~WaT@tu9QF8AGN+Xr=WQ&=d zMHI+FD*I~@-XSCSETL3Bi2de8352{y<|IBJR!0I$d8DFA%ITRYYuIbN*Mf$PPF3a` zt+Fg4aeL}N!H-I)y?Te3TT0BL2-dM+5Go-w2+IucuveNWi{igJiIAppJ6-UpPDyc) z#&9n2HS=LzUHk(%~}41n_}#3@bfq4l8T($SHf7B5`5V|a*1*7 zT;9JG5<3sYy;yIgvpQNL%Cd1=MJx^q!>n@L+PF@~Y7VCz_Oi!M8~B(K3^=uzl1J9C zKl6Gx40;^`@;iG%M`60MbJjBi@Y%zDM$A7NLI)t|U_Rxqo3buj7>CV@K+s3(3O@z4 zp?}0fq0%+Xd@ZawfJ7g#5p82{8h!Kf?D&7zgpo&O4+`@a#2ra~nde)oK0M#dHKhnM z++x3=LCHH+UA#GfQ=&tB(Pg2Eg_9+5p9qd?KXvK77BI2 z{COGc;j^9IwEP{53iz&IYP|=_>-BcDeSE~5r<)5b_>W)TKVN@61Nrm2z2Bd{{jIM^ zr74>;AXy)76;Jo;=zLEuU9ke^F54M>C7S|y*IT9Ih#)p%b!JAX$!No!--kqTH=T>B|+7qHJrphKBwgk+T%ikItTXMtiC zi`MdBiOFFV+Q;5@S%f(liN=!jm>f$mnU&EXMOFe%`Ip`ZuH9qmJ++VRBmz?mn)U`w zASOU{Wk*R>vBh17LR$$kDj5PQq2LE9-qn&@z;Q2QFjj&vK z>E}Gd^V>eQiy22akmcj;87EBat{yUD(CsmI`GL_% zE{pi1Yg7l}kB?P(6zYxTi97{A1y8|UBL6*p`^Y&J%%I*a>9Pn$BEiG2exO3cq8Mr4 z!7I=;;Bn-_Ki(@m_MT-@F35YSdP-2kz78We138yM0!>04^{r7FjB6G9KA=pvCUlPUx5Hh-KE4T~# zQzVlANaXwEjksG|Qt}1#?)6x8zdaZOj{3%aN*q@teuG9Or$DYE+}&Q}FZI~>+wNZ5 zpkAVD@iYGd<=#GrtTnv~%S7M)J@NCurjo{ghlAp&30iFj^#l{`6}0JbP_mbY^=@-* z7Jga~6F||CRBp_OZ8U)0C@qCHJ9KNSWs9HCf;)j*B?+z8(@dZ&5X-eOn*~Fd79wnS(O#h-hw2+(MHKQ}H8V87hk&() zg^GZ3w7?HX>q9>v=(fTWY-$C@R5$K!WP$NaVqffnw1cF9ClFuzQvy+XlblbGUp|hX z7ZY<|vL^l|Hz*1obw1dn6b(r`$489%{?2@{pm8$O%`;{5h-IFMQ9!ZVzy+b;6HFB9 zK~zfXLlPrX9RP=ru^7d%x#fikv905UXlh8B7OZTMLFzzNO;v28C8e>lNDm@V9mf`e zo5LVbU{V!SA|gi{ef?=4rAJ+sqv=^_=+GI`?E>e}*&0ptB0!lD`Z?|fCGHWsL|uTA zl%HMqg%2Nh?Q;fY5O8ao%a!Dh9GVX7QADerl!g`0_^)M>HSj4v3FWKzR?u z=lBx9^@JJnFO9H66N)9N=mDuqDdSv>x1d;Ub;9B6RyJry3-y6nT&_$*p)H?h;#0x@ z1-exEJlR$|n}wO+limu599St~q^1=c zbdIr@MsG9vK8sf}W$>i{2;LoS85yia;^B`k9uZHbCGv*CK_e%~3ZjC1T8VgBpM{>^ zz+RKg%J1o-3myN22OURt^hrVtv4J@^c2IGFAimPH9>0iTH!X5BnVb?mP!aFLu8`y} z=lhmbxetXhh0mS2B9P*(Z(_861_zdy(%5>JrkU9$9&evI^vI>kH*_G7NM9e^N}*k&^(w z^Fk)=h9P(?;oYL5nb4p7;RR+}K*yVbSVJGc_suJ%MxgzH)IT5_r=8oU*~*`;a|zVP zIOO2E&z;3vj%S!-vr^ye)+Ll03Ctkr^;h`G?7OS9Ny=E!J3(?3cvLwyCN2fK`jr;_ zk?cGSHaoL1{=&$}bNU2JBNm9uyqH0^7)gB6pD?d{h7VFb4e{wHU=%Qs99CrO_*eDF z&Fg8o91-D)ta2j!a)Vrgd@%(C@?*mV7mOk5UCj5dcctiTasoVOoA&Ncw2=dyQPk29dsYM3EUkmo z;PC5Bupzpal4Z`OoH;cHHqg!e`h-0$R+8uFxvsHR_M6ZB;L=@XyIi>H%1+7aIj3${ ze`tg`gTAE6K8W<7R#X8o=SiPG+Ots+$gV%OFGnr~I&!xh|2vVWzBu~7NA@$oY^V=k zKvPTVv8^i?tN9hA*U|D0_d-oDCG#gW-k|U+^+Oc4nNAh-e4wpvy-!)-IZiYZf~@FU z;L56NUW!Q-s@bMn58Z&lscz`^=1;W!;z+ zHBZ;thHDwo^fc?9_7uZV-F%w z`g_9ci2h(>77#KXGNlG&j34OUx#`CXRBzq3+!L@l7=H#LaoVAQ#DW%tts-7?@!9SZ z3&`J3Qv(6{cl%>Ayhr)D{(X;OQ~d}q(52t74T@ungP7_;{ajkVH=73)U&>63v-?G| z7%z$KAlwwRK1G;6#FjvqUT)q|vFXW(L@By1DNXrIo9O`P*OwTAnMXmBj25Z7z*O!E zm>OS@YpmW{5qkSq{N6Rb(X~cXWcN?K&a^6$=xJ33(L}ecgp-u!L_~PEc5*b)KuuWW z;b1SdGSc?KvyzgghLxp3<(AwINjQxO|8PM$+#Mw)ure>~d4HrYqY%-fbPfAS#L|QWBLEqZ;XF z!jqzOFMKh!6p}o6QUB56s$3YK>)5U_B}P6rttizW*+R0N2x0E>Fsnr602fB61Zj@G zG6wTJTri8$`$oQ8bdv1RLntC7J|g;^83UfMUr`SU!x7zj_9Nu{(6m3(`Y8E+&wlND zS-`(|vW{r7Mr#p(kJ2OVtBrsz#8Z4Fuo=ZNX~kYffjkzG#Y!_!LL=q3g)8vF`6v0B zf)u!EcjObs;umxD@iykhDXleUDVi4}^{6YTzB7a_9D)I6>VY^e5Rosviaql{yS?!S zpt8e;g+K14z2iLtirN?aJ_0y>-vRe}1#X;_d#u^Zu2q<-iuqZnX%+pcL+V8&B<-Wk zBsTG=QM=SMNEUN-yQ`cB>-=$`53f33<5R56f&UHA`MsE}mrb04@9JL#1exr^1hWJE zo&xXO+xKi@|FgkJL|SC!IN1Hx$`)iySj~a>6>uaNA|ZHmkE7sW@&X5e7f10{Oy+kT zQLTG`B~F8=X?v!NE(3)wkl5c3-^Xp6Xy?&Tt0Lqbny0a#v@U>R9MeGJ>XoCIc{TB7 zStIMg!4zKmF7Ii=OPfI8I~V}f2ASjh^}Tfu@B6de z3b210-U3zdI4Jv$z}k{NXTi%Up?6ZCGK)^qAVXsRBp#`}6ext!G$bDj)3AZU!faHU z{|x&^{3$`qnil@~zct~HyZ#3Z`2mRk0u?5R6QNOxj%iTeJt;;XOCtC~qYQ5?5_(xi z{%@Zs7b_l_$}f;aIAVU?81O1(sHl)MSj$VR%yHxcW6hgE-{NHl1JF5!)BQ)*->;@1 zjT5tUWQdzStNSPKQkQqV-mS&zbYp1(+h%tHd*gOues-L_I)|C1u_v`SKc7d7%e1Uy zYT`9&uqWD_4amUhf1vvXRL}b=cVE05dKAdj^PfBMXTLpo_a~0ST~a81)4VkU9g88gA2o z?1-rlH~2v}63E1e(Si!m%#GTICC+K+Y&uX<5rk7tVzxaCv3IOHk0Aq)CV}B+ienrY zAj*?ya5|6`N44MF;j__c#Vvt+Kx=QHgS3B=TeZvO+u*jBqEU?2urs!R+ORe(4h7Ug zwlc~q;Iz#=WMMH!@6Mx!B;B|f`UNp(ie+?yBt<3(x{zlD_-TA8rFlHuLmn6JZ*fM& z15jem$qGnqOgLL9`VkgEiiYJZF;^GwjK2&zY(ERu!#32KSjX14i|x1bTE33-D&^_t zw>z7apZ|-6VD>3zwn3|Wjyz#n%qvE06hp*RS_C3ll!`INWuaOdUVs9HBa;P}%7n@D zs3kl|2GEfbQkGGu+I%cb4EAYC1SB+D@xJ-6^lx4=asq5npUs9*Cfks59$Ya^wK0Qi>Kz4L7`=g;!!D*vAGX`OX8n= zqjeq}gN>wup1q!|ShI4qbEGk5W4KlEVCW>Wy5L>gR3aX_NEd&dGr>UlYTkG}3qmHD z2*%El)KXqKQ;&;L0b1*C#G?Y7Kpl-Gj0Bb5HJCfiA3e>NGLk_}cQ{FFl5- zM3GncU}8jT)e)2_r1z!`Z7^yehR*ZfvdVBf4K4;i-X_y_lCZe(p0Am~tR0N2iX;`! z-7ALdJf0oAgduY?di5d^xm;KWh#dAPl<0G@G$BMXx4>hphM)fnQ;s{)-@SU-Xu_xs z2Bpxu4(S&|isQ%FW4X?GwSB$8YzvL0-yYF9CF?`!LS+9l z&Xr)_s+2gMPCud-Gw!o?*efh@+DtkWlK*3K=Xq_ErWVro(%&c9-aLPZtd}A)BDjv_Gd;=0WSmBG>Yo+)V1r_VJsI_7&P z)E>SsfYaPZ7)I?#YfQOXX65q;-F)>-}S8apc&ebF0rN;tF)O%Vt!P#coW9m`7J z>_S7BeTYXm0nK0huHP|)arn@rN8@YkM^oGWJD$7JD-If9Cg@^>TRsXN$0uUhY8I6M zwWlHx))oqgU~^Z`vg* z%xT99iW46oXA|c;^fDVU;H#mg{b3zc{FL3g^Lf+K(qoUcPdXDR`8YT^SS3I_SeThX}!ppg!A0tJFZ* z6=A$b#TE=a)xd2EvE0NoaAevbwGh~#G)U~;Aavj&>|(f~kuB`KoSTp}JP%aO79+@BO4kc@jTUW{MJ4_bnwX|1y8JFOtC_*` zXQctq6uj8cZ%+Mmyajkh;ErH?tM4t5JGlS9si?iSlF0u_Md{m3K5pQLVr_(-{6pM0 z++uAS#i0I6h_bG2$Fz#&w#hU2GxijNL@kJgynPndglIi`1rl;z!;X)0l3p4wLWlXV zqptepHa4`D@xN5m3Z7vqFG=_OUr#Y;hHwld4%<9V_P9bsF09{YHtn=Ic&P4mtb4`v zKWwi@F6l}TcaxxY{hOZh6Zqbx&S5*EblR^r5~`ulM1DBkPpn%Ey8P7DkiHcpQx+(a zeg7M3M21BB#O_kPGxErfkdEOsRum1^VG^20E@7Bz_+F}j0#4OVb33nVJF?O6rpi)j z^#7%!_TlaR4;|$OMc~R-;tciQp;4!ucf@Pb!hl%Gemw4+x13kl(&@IexcB5n;FG+>^oDugIB`# zuW-UcD$Yl+e0c*$Nw1U9UJ5~fu(ce)3x?)lYC7wqg(;quRV|JXW-!2iUg;66|1zbPrDMLQqwHLqv) z#O$MTV6k>4GI=?2?AjhCzLxyR(Li7I+H-tZ)@-{~MMT&X4)Y{gqmYzYS`Yk$s4H?N z)Uve3uM<*|f+kSpc9n%vOM!i8A*7bTSa$m%NIWO{c?Uh_ zO&F*D08`-q^6+iY6iEM;hE&oIqKJF9;K7}QJJbeMZET;$Jya)}>K{v%gOas#i6O4;H1>IQB0|+D#iZP- zYxvRetV28{`4-IOlF$9H@(1scEXxv2zWBfQ(+yC(n$TtwW- z(9N%3wIjq{7uE}nn+YLL&6Ki(^sT*h4#7>I;FBYV`$bHtdsq&eg}4=1@*gS#%F8kuy!QeFW`& zjjB1^d|G#>g*``69E_-}DsJHJeb>m)i>Pvwxoof6srwtH5F^ENY{HH@xKv2T^VrgF5;ueSE~f6qFrGoVh6(q%T=Zip{j zhO@3uWoDe<#8B=<5qaL;_)hyQVd(a=r6yo7F+57K#Q66}@F-y}LrG=%9n(f_eyK`+ z-_>LifKREwh}lTG7^%j?2@X2sq%CQQP#{9hoR`8c)-E`)zA>LY(ow?4#alufSj6#W zWC|z%uP+$00zA01Zl)y?J)gBra?=j$KQv2NM3xMQREqo)cMP$LMYonbY13W=_8Ve? za5)7EP0zFs;>@z$4X3hx8*(pOT#1UP6PXz*fe8t9&#${a>_AyIP%k}OK;+i>xGGNK zI&2KU1E3A^Ke#&Q;7X#d-N&|V+nLzTL=)S|#I|kQ*2K1L+qSK9^S<}i{i?pd`c$7? zt9IAv?z7k0zvo#=#Fl+MPK>*Sl^CO)!K$i>a^OqZ=E@3ek3@L4iX6{>U(kNMRUVtF z_|$3d)lsU_=SK!rntg)z`Hi?lAB+uBNT^fOur#b>fr9_;B1Ass10}WV9-#{|=>LI^ zcA*aCR8OBofN_=MEjz#De!qaO04tU`yoN9bq&xmIAG9d-(kFN((YA5{Pn)iic3J~t z2-`?C@5mL~xO-j*^DyAy&3^q+Qn=tc$j5p1(6wPAr3tdR(j^i5&C}Yya+{D8i0uKL zjgHQwBuTU1DHOXT^B%Du6`~(N(cXClCJ((3S~#4C$GN)SeU`o)#_b)P(Na=Ay-!Cn z%_X^r_PL!qD`w$S1tW7#R~q;8O;D&_PCk48%4`UU3)G$3nv)p5nLAV_SKX7R%ICQq zQM+_HzQ9YR-D?&2V2@XQuQfE3M;{W6mf&N*fz6NrImA(z!bNRm2-|~#ik|z%*u!d0 zQacTbAnhdLw0CVuUd2NiD2+o~=Towjnnts~oTOWfp4}I5Yy)#QcLq}w*AkLX2rM`u z9vj6{Ppx%)1s3$?q{8vMb|`OU_&bG05(v!E2YD&%ZY58FQPRjJDYVlHGw13DkHF!} z->KaQE2)lH>AkJIs6;>?*AYgHiiRZwC&nW(Cr4kTsD|)t&afTa*D=P^S>JwAgiJii z#5dDDT%u6xNckwvkV#VOs#gqN)_EfLyz0CyeF*d$erqg_t*O}Qc3ZR6-x;};AS{}3 zEvLm@I86Cv5ToeSKSP7n{_~7(kB>z#0W52UM+yz5tIeD}Q5Q*0&yV^^ri0mwJ3bkW z2To}jZ0G$=wV|4{21oSdT0f%naLixSxJeI{$#PEW2!H;}@DozJ=W{G$jpXea0+XcB zC}U;j8Ma!qkyga*$w$06Ri9%fCQ!1&hsey^ovS40!^jf2a3fB=O!&Aq_>bIgSi>1R z{3R9NR9y^2zEj>ZAhs^zy}Un58Gb#wyC!BuHZ@MF?&JVR zfCX?*13hC>V^hyE>U~ASvOl_89jV*ll@m3D1ju379Kzv;lv5 z13W`Qe*g}2OX~nT|G|oDc3bU%&9#9d+JNlp4f?hkv_aJsjV2~9(fe)bt_aJDy8=vD zULxxFlC|zh+3HP0CfeA=jDUIg{xzZnGsE=$YH^9CEV~M){VBtft=db{5N$(#7nJ&v zVAZWuH3OeMU&ae)XY^hE@O(ZcrC)o2T+9RqcCEoUGhZU_$R-g{w`5$3;Kz3czYp-I z_IHJ*_VxK1URA~(OmZXcdrs69^k;g&nQiJ$L{N>WcF*KNx$b>?e4Q%C0bkpSr8}cP zJ`^m605m+#QvYK%g*9R>Sh&Z3KA2o;DH!=7li0l^Nn>JR%Lm7%Z(HEkx^`>sJ8Bgiws z^gKa~qU^*kknHgWx*eDa1<`Ou&0l1|@-2@h(F$i5Mj9Lm`upWXfP7_L?Y9rTxA&ca zLS1dZ#)Zp&?Jy%gG51=LUvTVe(pp2=9s+Fbz}b4$eKr<*kheJNH$aoONYF~DeH4qE zYw-&daT&JmW?d+*ZxG;9rdg@#t>CQZbxGX6exPF(l{93tox~Aoy#x)#T?PT+1s)~s zA@bqhKY)bF1opf@bJ?JNkqLT-Za_i48S*eTZVZ`opRuN=w#o{|ffX)2)m8w2_q@4) zkmp0*MJqw*x8bQUmn6^t!P1yyu0PdV8Fxo-rFy?2_xT))a;S8vD>e*Ysj;x%&U5ST zR)p-d;>uq#3ZClws2>)&`jM-zg0j)4RZvh~U+`~(-y!CW%YQYKufv+W9UNC&_se@r z^rPnM%oWr+Dj9K^AJn31gaZGHZMrC*mIHXtXuX2s$ z7zX?c^>8X90!(zz1WyBV-2)U$J<%2bE-{|b->yG&-)HWiy(5D8G;s1#Hw%}&8{rt^ zMHo1B%gbz`5XFj_qpo}2NitbQ;t56xT?%OZ>~35Qp8k0E6{#LW5tok_SA*ftcIN>l zC+zJTEcqs;yxdDoki0aDsJGALhi|<8$z&7O!wdD^fS7YElXrLAVfelfhFOWg2OkUO zH)UnBZ}WO3&+~(f45%d@%XJP3uNt}AbkbQrLpbH|d@@|~iyrL2^{5;!$G?=}BF}ll zATsIZ#sRbK4rsT<+w)Haa(rh|ZQl$q{Zag{Clk$i?S5b;=ZxS!m#n&z46B=KoSmEs zhMeT97n6#jJMq7-nZkWOA1ZI@z(~# zx_yU!8{E9Mash1j$7%uN1NMc;=4>Fe*a2gEQ^U)iaylC>%MA4x84E9q;mra%SOditoGg`x93}hP~5HxQ*ceZFvH$n{8{ow&>}MXR%nE$XS`pXkZaVjwN0nlWi77r_HRFxv2-Mz+EJ)5p)WD2i?9-ZL`H zwR6;{6Ef)Ue~G*xGda;2fss5rIUohGL(zvu$#PTG5;$%anVdXhCms92Tc$FyDiG1T zT%;EVmq{#tW1n{k%i12sY59r;F4<%&Lu~K~`dJT)KnJ+-X`fP-Jui63@QQce)$TJE zDt+LzA49}g?ofNcjZKZ`>VMwR^^X8%JWdI}V<-h)xW$HIZ=vu~eWo(Ato7zQCnP=C zDd0U|LZtmsxrLk3pOw`Y{WsX`yn6b$CGk#JcdJt(+`7o1odp(&bj$kf4Em^Qjowd9 z@B1QB2C26FK+n}RS@$_fk4ArN=P0irKggla;)7Hla0>y(#R+!ysB}mR2z-g{2-`7*NJ3h$>oUW2MT98^Mv0hMUcN8{Zg{3>IIb% zKxwqwov>+L%Un<}U+NyAkr54BV8XBEs)c8SB-;!uMz9{!w;0}#C6MjwcwUsX6HRo7xK*n9S3E&N6w_;oG}5i|?`OFE=g`p>7C6g$7) zWkByw6+rJBRUlZK0@(lk+U@NE!YOq^0D8uS4$w#O3=rzt0O)tP0t!D$K_mmBX83f! z+kv-^?&bR%@FxJ~s5E|s9x6Z*T4f-=d?5?@{#VUZahIi*A7@cS5K6&yC{^4+WiEUE zE5s%f=9$A#o`o3*;>}5zGW)O*;bvW=<8D0PSPm{ zbf5KtQ3a;_ol7i)HJ%wPe~p8=7L*je5-}!%6rJSqE^mC?hRhx|7M3@&=egce;->{h zz2bbwY`Iy@ZghKm>|Nf@w>D-@Zg#$I0N(tbFVFOyNCf{lU6>pP1RYq0WQmW`EXPe< zA%R8$PtXKc`&qJ4;Ph2kwhxPn?k2Oy&TtRV5uJo@EchW29r;ni7c4VoYWje`X?uw^_lzglwAX&KL9JqP;AXWIJp4G^M{%~_CCSp z2?6++p&||x1l1`i><>B8AqxlQ6j`luWA>5TCl)^sj7*|<*q=bv?SQp^q zD~fK#SOX4bT|)i4Y9kcRS4qnAzRkH-U@ZY1Guum8-%oeBmY*l6Z?2uI1HQk#a^WB2 zINTCoWT9_u={&hX^Q}6Dkwap${J3ujxm_71o%^ z^kLo{pl#i0U@2ZFCtW*pRqS4)rsAw>-ecBelme&fBuiqW`oNKH;7RnEU&J8*2>yt_ z@}xieFZldLZ)oZH5d; zwzsHmV~+zYGQaS&zDFBUMI~%R;q&xUDRFU3 zl_e|RoXg6Qw!R)8@w=|PW!}BeHT$u9%JXblySF zLHtj446WgUsNYm&qLFT#qwm~`s+U3e)!%Q>i%6&%bA}ZtVClDU-IUnu)a){0KI(R5 zyxHSxytzZe!q6WxruU-vSZ9y$^*e`oRF5{25AIqM5&LjvZ?K^fMpXV=`{SRx?B9hgX@oq}y+@ z%^o!}FFgdbNs1#r_B8K3lM^mAbI$Z>Ua5%qav26|(q{V5*M9X{p7XGlL^9pL^!IwI zK?qcoW1=N2CKe+D9%4MOi*ffDC__`GN~4JfHsvg~Ct&Q62BbPFS9;kK4v04C+2+8P zVxNdFw&yXHOjguPn^K07VWJ-6;o+A!lGg0UW2t}_?Q9CeT1;XX1B`CDir2NA>Ftn6 z+D2eIyisBZc6ZbG)_`D>$7^Zq|?COd; zYj;N&7(}(lkPfn@E-y|dW~W=lOm%IUh8mEe*Pby{QY}5W!DYk~2;#J5oT+0%+8@jb z84ZxAhRjp|sxQ7!5UEJl`uD9LbZ~3%Xyp8e!hNPt7u5%go(eI?c(s63B)0 ztrj3g%Zhl2_WC=P$CIQzZX4&<2;idC7wZ9V{u1-UlYiY%@pcH>m6_S) z4PrzoE`o7^k`l6t^k$;Yre2Ox_X@j@^-qUErjwTciGAT2UhRCcM9H+Xpo&9@QuRtx zCW{b;o5v9;A7`pa#J~Q4mA(q{ZktB%+E^N~zjP|ZYFDU$XN`l))q;cbj*>v8e}OzG zbA0utq&K#S3G1pdo)7dE?6S0mGBFW;`#!A&%05kgo+{}k38d%j2uU^qA!ReeSE%kP{t#l$VhrM-Q5}*oB~E&&=FW|ib0W`M@Z+_ z$`nqS9a~ro5_+qVcrz<&UXTo9r2<0xklZc49BV~v`UK4wi(r5As>ElE|r?^c6Iajza(act6K&O$;p}h$*r^y=! zOa8}_uGoG)m(nI8#)aU)uMC2cv>`z)*oQ=n#N#Jr?(vg?#2Qy0@>gZ9EyQvBYjS%i zuG9almuKcSU9Trn4?~nffYjXs8tSeB75=6Z2poycHzFgQ5kyAWG1ypcVmLuD*Ldx= z@@yVyn_iTesyu0dA1gC0rM0fTrl0VsJPPc5h!uQ`%Qt_QZrr?hG6QZ34=BEGOmo=2 z5J&6_ul_djEj97&d}x*K?ged?ITBQGhyLV@oya77e840J0ZqS2n-D~j(wyQs?5|H$ z{S>X~i4y;(#zPP_dDnE+frT)uD@ba-zQiGVar^MOP566J<9Cw&qFh)d{pIVd>N3$^MRE4ByiAh?B55?!zTj8Pd1x{ksSfIUG4GjKzS$ z7)5?kChZmu0=#g>$bAtWz_ZoNwlUvl8OWN&ArNf#<3-mdJ1M!hhMR6zX@1PeMHy^1 z+rykX1x8UqR+mgEt=Qd8!@6jtg#LU@CaJOa`WA!lj4Xo{N0qm>Y0Nt$Q*!+_N2-7Y zA3)i$-&W|wU%84`sEniTX{DN+1rGNSgwY^r&k263ZC*Y$Wyi(pec^h~Xetb5fSd+6 zdC3o?;am!n2f4ugs&N8K%_)NPcSh5^opnj2+A$4^d>iZMAgq+T7c~H1kT4&Xmou70 zR}3gaO}vxJV0?k_lM~b4AleCagAuUq3T?iOcL(Nukl|U@pC}~s?pM%?ZGUB~lAW%; zwKM~a*~nxYN`ot^Xn-=JiYzKL5*IH<#41BQg>*v@l34RfX&ILkWN@Kkls;lfl{YN! zhy5sqr4phpy4@p19?7|xhk;r=JNyzIaG(*z;PXOIlj-DmBO80TGO9#VW`6IM#e~ps zGW8T$5=BDtc459+qfFlz2Y4^PRs7l9d{6SUr~{aQxU73COn=F{#x(-2;Bh{7qIrX_ ze6eFPKk|>ref4F^Ua%-QCGFc9CK&INcDfj+*1J<>rHN(DiTm;Cw-9AFWH?KEd|Ak$S zE*9sevRY2G_!9~B>h}lS>eV6#`>KWsL4N|OkOCU@NB;#av;@iZg;5LE5spZ*fOXu$ zVQUf-!^BKs+DnlSX6_zF6GnuOO<1LM-a})*>Ak@hmtosfH8zL?URu?14UUVTPwf;I zU(4qVg}d#avOZXCyF!K7Pgo`MLV3Z(Kxz58aD~mc%?k^|t2Gb2D&=IV1$(vl#bs%|DQP{oJSBw^Rl&@4S;XebvUp zU>Z14afG~Tgo5QqQ?eMx2%dd>)yoM)Wdye04<)Wx7){_u*vc?Wqb^=3H|7?(?#r1& z#4-O#>(Qosp9k|p@0J>Al3WX{i!Yftp_!H*L}f;HM(}L8II&Q0qLr^_AHJzf*N!s^ zp)AB5X2GegnuM$`zN)JJnO6srhis~sIUH{WWz(W*L)P^6>@-a(8r@CGZYfvv_sSxA zrm76>s$JA4m^W2pbVNT$D`O?nA+PI{#Kz65|3~iH#n|ISPKzi^SSKq*ON_F7_O_Y9 zk63OClCgj(PHOgNR9JUF%F>A^!1{WK9Y*%@6;c?IWQy&ld#CAeLOn6Bc(g`n*t@c_ zgRN^y7fmSd`H`+n8al!uT?RV!Jg6%SmjQc-y2+`A;|5|#XNBb7Oec!BY=HfGK+_u< zzJi=lzPjpAB~LfhuJW6~8%|mvYdd|EE_PGdG}Nvify7=`b9m;giy;yg8F;o(hG5}x z-^tm6i}5VE0_-RL5XXd!zN-DfSO=D>RrBC=0KaHmm2?BOz4{=$>l}l>0iH@qlF>=! zDbj1qU%h8+Ak4)~;)OY&h-3#gL6lAr3D8sinYp~)OJ9?3NZNDXe3(3e5o99D?}53w zy&t931{c92&VT-;LEiNu4#e*^sC+IIK9wx?1qBK|`n2{;pcV>O9_UjG;^h6;O|O{o zO$s@_VHStcmeSw%9my04-46h*4|a-lEy)gUkuCaB#}rvvBUI@WMUTZ)UcX@y>m4fP zNHuN6@O-Y^cK3vFXyHb+3Y{hW@BmD50PKWoUN_OdeO-<+wp#^} z{3aiKTUbvCTn~O)SIPaT3`R+_@!k?LJdOvQCPlw(zH{Px9p!+(BPBzraz_ToE~0{5 zyp0%8L#s~@QEvuA6R$=epTV==KKPmT=VXs_oA9;>`sS>U86xnO9ptdEYfE!EmF0S8 z@5%%di*Qyp_P>=1ro-pXn?*w}TSb2PmXjWmmNk#G)7mF_p=E-|A!lvb5d^BQ0a{`k z2aD2nusf`z9@e;#YxY2OPkJ-;1~c{6^!f|hz;QhVWr^gX!nt1P?+jol+trNRu7K=C zZTTFzI-IuL^%?iHB)n=-#T0vjZa?q;xizuj<2Ar3g3)`8)cp}iP&Ycf7;HW^YWGSq zn6Gfk_#DK14#=8Q5Tg%ci+Qn0BzV;1u z(uIE8O>RljfGI@iqwj2%VHm)YCwW~nUR*X?ULW_lpGtHH=fyv)S(;Knn8%bcM>dpleXtvQga^5w>7Iq@lt20|v%ZzLSN5aO46a0( zF6KLu1v6_Etpd;~l&|hx7(Ur62h+6$?DW~|m+YfbRfji%@){;F7`!xRnd#>p&GxtX zTjhHXq2Iq4&gO4Qyk!{rz>?#u;D!a|@3BM{-q8jzGWz(9)HI6H)>|cNDDQD@%A-rG zjfloiYLjMk(v$?G(&@8w@9&~{D87uAkqh?B$;S=0k?_S+stNrb6OCIg2V_>D87_Au z9|EUyjZAoD^in%#Dy2(cf`&lK20Ey$Kn>*OECeB!Jv?t^ALh`}VW+vEvbQCaA<0s) zEOe*i4p5az<*!}+on3oEeY<@lWZOQx16&KiGU}h}Fx&XnwGmsQOTR=#q88#plvZf= zHq6`#oY`=x=48>*?06}SoKY0!I&-d9f8K7Zzw%!G;Siew*T@5)v-EAgSYeW+K`1GZ zQS8mwpaWBwIOXco21PWtEU&H$9$zQl!YpgtZ>X~oWXeR z7UZlP+GZVGzWa#$fugeeK+J5_7>D(n!`p&Az@B&vQ10j7_`97X!wqFdh7_CS7Sy64 z#Ij_PH93mrwT2-ilmpi#&1t30qlun-!RuZ-RKV**o>WM~*aOr_!|tSCbdW?o)JOvA z!dPu9hZUOU+At31&>+bTL; zHb*U^JC{c-5#@DJg|Rft7vexg2${x%m@??THUz%c?zK77UUPjpy6#q=1(ayBziz(Q z-s?Z)L)mDceUyyMT{KGSbPfbJbA;#J!_3=f?i|&Q@NRSTi)=G%0l(7G3>HDnYW`t@)gkVa(!jJG2U$l zcrNYTmv+t0QgEH9%S~>|9h6(hS!(=y;KIj8>)rJiIbl_@NLtB$bMd302lSRi7YHed zTq6PU_dyz-Un`vHF((#~xyNc;I^50MM{4~Lz~mi-1EO0Cwbw$oHjVIuGIb%I?~N(ju=hGvRflFfbl@h>ZEzOmO; z%+>OBl8x7`JI-Tpfpejv2;{5?63OpLV#UyG;Yk= zY#7PF>KH5XhnJiD#-sfu6O}*XUea0bmH*DViafug=!zB-JzoLiDPgkaRGF!gMq13E zQ&yg=PJ@sNe>Fd_(rv<1c>s$Ms`-W4#q1noWbInigvZnTd&_k$2WQUBjx=w9d%T5o zokOR({K=jyJ`}nod?$bmSB&Jn!WSsi! zE}=wbTCz^u5RWBuQbNC2-0ZLcB?k9uSWz*5029k-N&`J+{AREaR-~VS>lnu1*By*7 z!@9+jNX$;;yOW?vViw^p!zT^uKC6W*7NjEY+$*VJxxKu0@qBF4h7jXm!w@ zn99`z;OXrzQHi^3(156$;b{f)_6tJbOkGxmxS_tZtrFUlIRBH>M|l!FM%0ZFd+U=z zqnWBKZ^c?EBTb(Jp>D(6O8FSUbg@)w$N&!3zl0N#%j{yfT*C$d+77?tq&X*eBFN65L;D1S?u85@&&Vt44Tm?hZ!R+e=Lub7d7C=W)+;XJ%R$;gcv(30n;qQ{e z8A?pJ%@up_WoQm8c}J!=e%f@UH0=B7Hm2W_m(M3IK1@~nkz9r&J zMlI-qVHSL#qb9(wFY;?4`cf`cn>!Xxb#+lbhzD0ad+7#9?%I))X8S|^!@h!xQC|u( zlRgXtY>Nfe^9L!}$FUY9Mdu~SmKDuzi=#aVDo)yHH}ZkaiFq?TTKEMvpXMaY>stI3 z9b@I<&eKO|C(TEn@D~C`|Me&I&bURzjjquGkoE^qGMG>F2#E|u<;|RzB7gI+Pl_JdCQ?i)^#3M!yJ5>{v0F6V@nN zt8AhdG%=FqM$*g1-Y+<_zP}Az4*hqZ70kCKQyS7{ z9?aRNYX=Z-DZU3VK~=wbG5Mv(yfA|Jn@SD^tN``tVz43<}QK$c=x`lc>oweMiH{0oa{eJrQvlq0Lwq8lP#wt+J z%B7>siv!hthTpyzj&&)(Z1DNpVCsP^HeB9Jw^zC={v~(FjQFB|78JrDzzTuv=$nr7 zL;yPe3Z4Z$!m`hDaJy*fef6)Gg;L8~+DeJJ0mbsk;=RD?b`ve9XRvPUycnH@vV!$% zDmu285qDm`d&gqXIyThnK-#gnl*)nEqP=uHE@*v#1nPBwXOs;+qO}&%BMzRb>_e) z7hvUFu%mI_#BDu)P2d{4D-URu(9Axt>3ISFTh(z#H-+uuSFxIN!42eE`Io2&w0=)P zQEm|<;d?WFkfMl{3}bQ(VuuHtO&s-RJcI3%)^ZlhuN+5d?;qD_NUk4zK+x&)b8iM$ zoj4D9)@Vkkk$#py8}!`kEuHx<-3OzO-N1wOQnKf}dL@KjvU;olZg8nSFUeBlKIak> zd3;P=yHar=niJMEirxr)D;(j>3S>o`BB5^*1~0f-u(LWE5c9~4N}EJ>oHr-1srK7x z(v4JsSZSh&;bQEm*~s%LQHC-R(r+iSZ-h@SG*=IOl+%WlZpd1{rp?L5_P*)6XAo0@ zKHS+{Jgs5l<)HUHw5SW@M^4}RQxHv`Sv>A)cKdJHFvqnAMj>;(A;LEc(Se!*U*<%T z?~^8Ugke2;9Y;akYRuZ>5$7>}s%6ySK=<~8f&&+Km+zOx>`r-bwlxYq|BTGz^>pT>yH`$5GiKGkuFV=DT>*f{K0LPKoHtCO^g>wS* zD}Y=}@H2p7zH1$@^iFNsGWczF(35;8VL8#t_pnlu7`aEkcfmVI* zopANt)JNfTQm_*g0_mcq(gIx-qjSUY+Y|J6Y&2!@ckEhKx~ur#gKsjGbHG8tx4`*} zBEXg`{Lxp)H#JCp5Z=BQ@sk^S7{Fj*n7`mmjInbBg90T9-#H{_eMo$QXOnJ^uLil% zsF6=?;d4P4 zAJark2#*$M@dNs`%%*iKQtri=rBQADYe9G++ciW97pYk++5r2(XK)>D9jzX1`5twV zs`0me3+VHp=RWDglyCVfZdN0^b1h)>_nxhrN7#45MPI`I{3~aZAa|Kl2lq^!Z69ayZzivCM?U7!kii0=k^AhydK(>-+FYz%lL6Vsepy_?o7nc zX-dO1aguPgK;nlIg$i}Tzeyvk6vc6)le05Ja#zeOgj1)>?G$T;N3!)2;3}e{hO!z) z_oNP<6B-m8rH0F;29ttJlG}jb6^CRO#`UV4PsGU~3QBKy1!6!45RlA8&lkfu;CGS9 ztsb`tW~Jaz^=dtk9{KnLlM(dokhJu_d$Bq-#3m{$lfD+Zl_%kA@+kP@NzmdpZADcA zp5s9iRj+?yw*{y5aNCW&M^}HO8UMuKFygt zu@N*C9Q*`>CaVntmf?(AAp(D+4nXrpQcHDJo6aO>Ycu#`AJmkZ?4&%LU2fY^`> zj8uUQla~a@R&8-rjsV=aa8m&|aO3FA|)am@a9dHg|gZcxZMMn#4YOjreOY-MncayXlvp!J{i`z*%k>>&+-t8=e zyLL%L$mot8lkLY8EAV*)Nep}nJ#|NcdXs^l(l3|K&8NP@%rM3L>3mxxHEG=CAFp%k zC~34cyo{$bvY5`^P@VN74qcq?@nfT~=yXwf7o|;>mPSyXqB1M#M+D^#<}}-OGJW&Y z0K8>Qt%y%pVF#S^GRy%Eihu#>l!oU#j7TP#4~EB`k;bF<-2)wrHkHOE!;)r^id}Sn zHg-}u1h21Y-(OR-@-#f$OKN{P*5vdDTSP1y8cG-(M`cXNjATz86#6fWtOY7DFnYg_ zY~GazP_SYh9ZV!VxFR^jVw%;P$Wf2$?&jJCp!Eo*{^kyX%xhM4Q5E9+~-T zLYvo3**?n69a5#B>A{`bn$J2>T>RiM4ykmEXx)MJ=l;5bFwJYvN1DaJtQPqu0)Otv zt0=au@m|=4LK%-x#EKHgrAd0mFVrciBSA7daYLKH0|<^_$k^{fr)iU= zcrR#pc!=(S*oU=}iiznnEx0DdR(Sr0nCy*}Gbvq|X@A+BI-^g`VzuIi`vuf5Fh=PS zM`&|FkdA;qU~e6dN%=QjNbh<{I$pyVHRW-k2M485^L)b)Jo}QdEtII17?LxB({WJp z`B8t#5~aTP#Lh6%&M>EwJRIl#8XvX0eapn9lI~=7MBp4bexmG%REp8ric7z|OplG_ ztzg0##6<1PZk-V{@HENiBK`4mHqW$CG4p_jwF zrWtb}Il{fk@SE}!*(VKM3-^&7U_wp9)Agqdw^E@{ulA+{!#-#&+5n+;K#i+=icg@G z)^Q^g4OM|~yuLLPABCS`2OGdquH__*2571Hc6lPQVv8?(DR=94iE=dYlXouINEuHA ztlFdQ)68G0oTC?=jqNDfS#4?C3Ti3}aGk1VND)CV)YqeUmV=B_o?}2`VAiWa0r@L2 zQY;;&1;9h5oslFo6#pq0N?HODniA{me0{w=m9&GnZjDllC7DUv%->c`plRBs^P&RQs}AyCcwmcEYm_`4D3gi4$z*IC?P|Pbzg4tK zm7*I78U!$fSL>9|!dy0!`q-l7GRls*ZsZ+o%kRI#m@pHf%p@zMQcV z*?xElVNdVm%t?49l5o4F`abb2^a2mv4fNm)fnrIihK|om)h^i|BIYJc*h2avJ24f% ziB5X1C>J*wIVl+@f)zP(n0t6wG-pu`o_IMQhhpFnK8oMU`O}}s`~kW)wzv_tjb$QY z)$BaQ?p-BZJ@zT=&I^8?eQwSYwe}NqXM_T*1Nyfl4K^h>FWu%`OV$^4$3%@_N$Z-t zAa%EDwP>pb69-`wG|%8NrJ5ry88c6@uW;xko%0Q-7F{h+(UkYB0wrY?qm*hw!W`aZ zaNN9LbmRU7KzXYHr#DY&Il=N>+G%O!Ik{o9`i@qSrsj!OQKsgN_Ro0r7pM~~-F6Vw_=cIBXD3L5LN2*7UVmM5!K%!8ow5m=~p)!uCH)3SK zSoqp6DQ)t&8)~NxJO7m`L9dq4axt}k@37s`;r0GH2T?0Bnuly9sp_9^C83`Qqy0H# z7x$z8m6}(NSN+Sb9iM_;OG-OGdE86>H;1E{>Dk_D`N}?D?5-sjLqX3XTvXYyf*muVFu2gjH%b!k^ibFPEG(KBgJeJwk)e&9qDwjWu{t0E~ zzkS6onr;i{?(3)JATUb^UMe9Yyjun0hHJiU;xzemV!Kf~|B<=aiNodS1(g2w!vsLm z)uBL!Mc+SsD6iMgH{acvEBclYC;;W>8p~o+GBXn1Vb{mCmSIA!AuO5^;e8O+2az;x zxVO3_dYmpRy?g!5zZ2Kxt<};YWgZgXE_~Npm(xlzGd#jeJFwgk$DLx1HkbZiG=!tE z{N5gwM{nvK2M1XAgr~1anEo+{)JGg#{LN4{Hr`&|0i38&?wpfj_56UHmtn<1Vu`#W zDbRCmVAndWg`hCk#4t|bdf*MA z>E&B_IiSJe$xo3FK{*=ZJc2V1X(mWs$I!@L z5%VE^lnhYS7|w>i`zf~2@OSO5&B(_esl(8OOQ(Z4W#N%uxboPX>I!9rG1bijw+0aFpYlvy;jmrZLv*c zpBn>M+EwK0VXY1{s#vXlOK}>}GQ^i4qq2Zs*1yX@uJvM2uA%ira>v10+XY4|wg{h6 zGhD4g-L%4W=1_%aQ3G<~SdKW{g`1&#ZM-)>BRDK6iJS&J2VWpR42!<;?-;L9Fp){# z(aAT-V>$+D$6PD4kU?!%80<~cZguui6gsoDhBshPA?j>J!&fouZ2eK{Y;%m&YHuuF zqHa7kX@%$Lj&$;siNCj93NExka zxBae=icg@CizDYl6x&-e^Sd_Mm7})8Wd?Z=U_7Bkwx?iN$l%k%Op(?y4^XU+3D_Pk8saydkO%*EA}J6n9PWvH#1G81 z;o>G-hF)oUiaW)`@RQ{a(7%LVhvMYSP$RbofQ?G&*NN4*vo%Lvb!=)X%?P#2ns(P>Cl=L5rx0_D82fBtwC3QDfU!vb>QK5Q|ZorWY)~E0)qv>H(-r+-g_r=13&;Jh#v3I1DaF zpoI6MfP=jb*(?UbN>jXWw&pn-XhPSa*o{AP3#5As&9C+?&*|xy|zQ$ z#?uv-Y@J%sLn;@M|0t^MODTP7sV&>BHq@-EtP$h!n z=BDH3Cr+n8A}n(w?ic?}ViWpS9VF1KfKk<*1pkx9hM#OKQs$?2!i~rYhJ0$Oj35f{ z50oY3bEdnkT>7XqL%4Xvv5{Gb)*atoB>*Yz}NTfG7FR54Oxxs)g{eQ11Tyw~_u z`yEQF2VdRCh`103xaqU+^@9xeLt7b!Q6EB>0T1P1qW6=9X*Hd0^E-z3SMi(`T;Jv~ z2dn!dmU+ZOKanqU;nx2yG(DP3fKMM?H}0ZAK>vDD+cnP)F?JAMn-yaklVqex)>`SK zUQxUo6_}?=FpHGdf3r9O{=LpIk0?$P53rar?X*OlBEFbtB_z(o_KkUx7y=T7H(9&a ziK~^+!2Tj&s(zn{s%TfZO21Zi+hMCjwcyFW{V~r6dk*U*#i=^cF1k?0rW@TOX7V}p zMD0sxHXq}^P|)_v34ovU$}?%OZ$kwcP72nmwRMWoY>+4EKtP02r)ZW`38dnX6w1TL zX%w;Ne~%2_APg(S*>ncmN1`S2RodA|^}|!li;hYok2Vo!uzUqkJPewT0KsNj8)W(V zx{$j$Je8%C=k0SY;7$M3GY_$tK1rW%tC7jwlgTDZ(PoQJ_`J64Im?sHD*xjt+0F01 zY`qs}yx=e=Xvs}oFRZ`q`3r{!aUPu7BfURLrk0oyy9m5U;%nhi&r1YlM=N0`#R*1C zo8|VCi$373dOV>{{C>e$X({lDj)nP=wJ zhbvWetwNGot7`wwee8W|NSeGH_DtY2wI?2@On`-vM&Ztpw+2AY@I^s9Q_UG=tdCr& zsQoHS>E3RrD^h+kD<`RW$cNC>Q>b%DPg8VUC%7GFW&DiB!JG)jyrGuFywQ{Z+@Psg z!N2sRm?idZy11#``&~zIELBj;5t)Mf8cDzT=6G7kf5)lQxu#Zmf>bEfCLM;bNru~b zQdt=$hUd1UB!3>}(YC0MsSVP4BRGrmNX8hlUs86oF-DW(Q|k0P;!ay)J&dJhsTLK*4^zF! zzy%nnhb3NcNN75`FJG>;hXJS8&Z&np^x=) zaG*TodF60jnNc`AI@wCf0wr025jpQeRy;Y0M{kC0Yr73XQN_u1Q?RMKg(C!b5ma9= zW8Qbe+IA)ignY}g6y+k7Fq1}Ib~|36IfaJpz{Qm=Vb@P`IxOo{=w;XWG3w^f z**$nl{GM*#8PDJ_AU;Mg8a%glSg(Uh{-xh;R}( zOLX9SfOMK#7n{zd$S=}~Pj;i?gEw9y2p4z#uF^?U7Px6-Dv!{d%ovKPx1(ah`z0nq zi&)O==Hw)w3AU6i6Rr$O?aSIM$(Mc#Y>mP@><8kweK?x%)P)L-BUNztv$s{3_PLsp zQ3NI~a}MaMAiP$A5O5!WUWPdIN{jRnQ=(j zS3j%~8o6=hioJPG`A&rYlelbnUk%M7*&8J7aRkh&)IX z!208U-e2aZZotXr_~dfxU2QFPV3?rFWineama^L%93UF6bq`yRyr%;$yIM`zt^S@` z_6}+ieP-fjKs<)YO&dYUO{1U!o0*^~t>I*_yJ{UhpX;aV@{!+yVUr^ivwqX?u)-jr zhE_P1?#5Lk{^H38y;dcUlYE86GJZoGTCdJ&0*N5o(@a)-a=+j7{5^-LI_!U7HzP3^ z7$WA5#4?lQ7`BWuuWCQyU$aH%XPwU1ye!!o$QNj36?)!a@Hnf9)~9m?_{giFE*maV zsp@IfY7+A`YjfVm_dsX4O!!&HbL-w&Dd>N3g8wqUpz=l?xEg7+Z6l|W_v_+*y(b5M z#()m>a>4aghy82L;3?gBwoyvx=&|Si)Sr{U;y@*)mS^l)^-B#b`HStL_Vak|(1f_u z*9*7bz`aRGj6=|-?EqCp#x|^emiR3c+%d(F()C9S)vDtw+=_rGUDHa zlImu(jID<+ALeao`K^kC@yDE;M;fbQP31fr()nMsGR zEhQ8`Z3u7G{;Y;6>IuZ}vCLZ6Mv8h=Nfh(-s%-VzOClq86lcuPbKLnD3h0AtC=}_M zjN2<SIV8KUzrM-F$eSX^)H_pSkNWFGY zdslD2Ho=9?YaNQ~qGM_qy)ktTmRon#U42(QmpW>lmi^haq^{l4+itms?dG{RLcD8$ z``_ja1{+L1J>#o!UBWNFlIP4HV;O8YQ$muykqjRuGh0W+nM}u3MWSCP8d;C8&0=v7 zBWkL3CM~gVJ-$x|;RtbcoSW9EaTO$ljCPceIO)o;bQ(7pTB)Q9WN+p?MOU?f9<{=a69Hq8s$F0T#pYqck+ z&-*y9;w6qtJUl-E&8!n3`K(k#l?I*_mvR%W1%7cz<6i}ZxLfJpB>XPL4N)6kg1hT& zER!k@r~4hdf%~jG4kG^<6|M&yWb`9|ZQ?0p47Wt@o{^bF>7U2V&u>V|W+cx45XUfE znd)$$QaGE>>JO0r%g7QnM*Ja3M)qf%^fMK}W`xK5@|WF(Pf|^li@2FNjwZmNYcheV zylWT!ic5lcH_HvLNLm}T-p;4*f?c5JiOX`&osLuk7i49dHn1fH=O?MoK=nIL_O>SQ zw%2|`E3V~o7PYJX-Jcx#joD95K(>?|=j3^&Bo1Kq#Us4ga0aUUpZN7mUlY;P9rCf(7WmG#{nJygtqlLN+@fHe zG_WUJdS)e~aWg=*e;MbuqUwBT267KWRfF|=3Ni5G&W>B9mHn zb3V&3E>x{jmcBLPiGhzhI0;1~Qfu0P+Xoe~!H|@A`=i<`3jg2&685 zjtbYPk;)lbYVC@^b zyp8R)xXZ=M9#Bgo3Md{%kg~r^;cU+2_w`Hc93GO%NTl|k#c676MDX+^Lh=y8xwk!x zGut>$Ua5MinX@OG*b0&c%(Cd~n^zzy?u43e97tyz?TIC|O9+E=z6io0jM9*M=Lnz; zhm^VS8%iKS0sNl=ARfGC1YpT^oV{KXnvvr83Ga9b-IiC%IVmH#JMe-pf`XKCtvKUt zSIFaahwGX0y03DA{g%l24<-Wpo169fLJe|TA)EM-Fe;2C z1y^wD!;n{weN)+p>&O1c`BbN_EoeRnCr;|e<8F9mLO5x?(4KhT&`w;`mr}=L-0@oN zacDg8Qis$cbDSi-UFzC8i?R&UMi4%*6B|g@`P@&SD~_T2d+JZ16XI>t{D63fIu!r9 z1xOtf!dN~x)uAL{Y`;*PgJ~)45&1J&y0BQ8Iv|(zaeuGPyC2~7-uafnZ8Ec>B_u>W zUIaDUxlNu4y|JpnthJeMk6&m#Nb2E%s@ZeWVz&=HneQYX!f$js^60o^ath=>&T==) zuO!BCeQzI;#XKQkY0_QKS~_(81>tV9P*BK6GQ6IOUy}>*=9OX`ZRlUI%19LN5zl{A zkiFcbbg`j{l=PWe5s&PTnW6bpp3k1UP5&`azdNEh#^#0KI|&fBmvXX`sCXGO>&vD> zg^vCLctQLU*@d3^7|bWsDaAA%E1u?E1j^BEM@C7_ufqI}4zPr=z6h6;*Z|F5OiA%! zsvfNMNBl8xq7eTq_hG)H#h<%L;LdRHBhK_$%+fU9O~~>X0Q$|kb#!?^X)MPgK6W;# z@$DeZI2c>bcze+>(qERCJwI_t0d<^PyEH$?)Q{Kl|7mk~JNdM9@YCYlc+YVruoPQ}bRsHPk zjCY?G&7mU7guEwyO$WO<&ZU*kS+AzHf9}Ib?qmG!3%}CE+9l$ISiSU|Lqz9zzsxbhZ20f0Hr8S%&u893FCD+b_&clPkYZFD_re$bZV6uVCYqRdbbf?vjq_Lr* zIr>}(GusO^ zCXT?@`s00yg2D{KM>}2SefOgOc!nG}TGG}IvA1t95mC`a+Q;dv1A*V05izTwL_CNb z=x4#9rp(b=?=9^%!XyAlvO?fyyYCqbJ`8#yIb*Y}J{5k9QLS3KdVqTK*tojOtC79; zs#?0dkKHiDYvNDPqr6CsY4ou}`&DViHhekJa)MyhRaO^^A68vH%Iy zd(&$989QHqPvLY^$k76V^zxT)IuDEsUYJZ?m_D5ajx|n!o#aqbzt0e2{ zMg^*Ff2`3_d+}%n(7TDg(M7#c*chUGSzGfYvA7pUaRW`P0|ry<4$%3lTR+YPx4Yfh z7h$-Ca9*2^zUTM$mL0TCc+3yAbR13_X|?JAb;#%0l$?4!{qLz0ak%te)cYkzGuWDa~8) zkkt$~p)Li=D|c`H(a@1PXEKmDY^?ahv77O&)-;U>4E%63Gj4pf^&gfgXUmpqV+^@r zpL|fIxZ$b8kdVWollVc0G|%$L)93}LHOa->f;<8=DlH}EUcC~C9z~fZ5W2oDmjgsX zQJT6oGY|rJ;ga|^zdQ{~ar`W!_=s3ncTafVSHv{PF|XJY&0}~FnQF@|lT_qsr8=J= zWB7rFGFCyHrv1R(hchhWi#1|HUUtA!fviItBO$0g@WoUYDR8Ldddg(17Xt5P`Xx!N z*l=MD?nl1pe^5;QlRD6#Wwv}LBzUdj-j~~KDhY_Njtq3(@ZMk$omxae{(mVZVr}YX zkf`*1fk5wG#*0;(AV+Jypr5%pfa|`h6?hr_bySlYHI3U*yeq&w8@#8gzLZr~sVLhU zuEAF`Wwz*1sv$sR5<%OIM6{=tz-=27q3p0-D+Z07Txtu^E_+(@(nIVRIfy0$A+1e#V-s$ZiO6b3h!T zWwJWS09Q#(^t~+AgUbu?t=4ohZOZ;YQt_FlOSXHWGcMEV;8XI=qDAOg-!gZHET*eu z4Qgx;;c|O7IazJwtnB=zPTp$KOL6=k!yoFN)R8H5j0t;B+o3-?zgI_IQ(S4*+h?FO zwCWCm=yV#;AwOH}00$_Bc-do`>`7oosZJ`+otg;|cw8Msv^hMW^moJ?v+Q(-?cnx% zbbx^!D~^XjO{YjHaluX7aKes+PXIP3p}g{+n8DH_qMSh`rov%ABWNhajd& z&s5riBp*Q_gBn9loS;NbOj9HyRU<+QKKOeAg9>n%yMiaG>Fqc5oiQ2aiLK%9eAjp3 z>X9>k!2G1jm>q#SI6MUgdb#ok-wZg%jH1L5^uWRrd}+RS;eXK)&e7`bjQxn<#}DX^ zMhWnyQUUSk-`%3>PvqAfaaD&HvjVAH4gbnq8=<{&;dFXj^MzZn@5o zJW@)v_{8nm6*bYMSr|>zkC}L81Lf#sqvYtEoKws5@|&$R`PjRvK-NMb?TiPh<)UEn zr#@UDUeVt+(4G$|eSf0p`Zhd3tqWri;HnQ6#hVUhgI~)3J=TDTf?_xQ9n*=1c!HaV zSW00a{2SSgtDUsRb&dvx9Du)|mHLOjn7HlR=^3{ik)Z-(Dwi=^Csc&^C;*9ANqyi_>Zx(1RnYgJJj}(5HI1U zz(D*X`jm_-cylBmYcnOp>$hZCp0A_ZGxA~qGW9e(;s!3vZg)vALtAhQYu}z-+Q2?e zx$r*CWLCK9j@300?)IVG)zvbE0sr%yVV7}M;`;q$sB@%MbV}saLkU;#)tivtV4Lu! zcg}dKb}Kcv?)<@Sv==npTwZU?8IaQHgaZ@E!~>{g+zmey-MiA{8ibJ7FF0G3H21?V zpbWVNT}>nhT|E+Y`dvw`91mW$xQ(l0qMQdB@i`;Ca=t?iv~v>;uqy~+s!4QTz`FeX zMcmbi4jXUkPwg^vnF9OMWoz`x350EIo*Ef`WtAJY9{P=X!&w(7XvEqt47pi|gF2mg zgTx~FG8HfU2J2kLOEG4{JQSczmfL$t5-@@p#GjY**8J^kK1Ctk_-;KOonS?$#_SJi!VfNl2)*KKYJCegxL5G{e2vv{ql!#7%hEHLCc2fj#TyW zRXt4Y`Fo>Es$N#7&N*^&jj)Njd>~gP00A{Lp@l1qzEi$7n&+fqpb)H6Eo=C@zPdnq zX7KOzRoUe3SFQ5V_3CRE_Bgb`OGZJ4&_6m^7ll*stHi!$;!)Wg`bKa6f->ZbSD$~x z3KNf-w*|*_?TuVioSY_HTWGzvucIhM$%oJVqp@EewHg?(UZ-XI{?EnI)|1nQYl}7& z>y~7N&-?beq34%9S~EH0IM`TesCiPeidjNC;(~-J=3{)L{dOU(W*29XFtM5>RL>vQ z53;qIVnSZCf3oGf(xz^iSe!KfLw*<3%Gfr2y&GC3A`UoA8kZh(790mnEk;jKVE+In zL@dzCbTwpw_y@`mI0a+el%@~HVOw@Cd>5@+I(zaA{@}iRdYMtBc*Xk!ls2r36>suf z;`ir$I>a@1(z)M*Ti6tW=9B%uERJ&j_IA9^?1YPv&tjC2=^c*&WCwmZU`_`vm@c%{ z;*e0_&eZYiJxgB&(k)`TFB}c*F!x~5%-m&Zb1>-sDEkK3@~VA0KIbBrF(c#qZw@@p zzG!KGhb>O_r|>@^#*D2S$lx)yAYKS3+oNstH{LjaJO&xVuLjik0_KA2G=kv4Fk~{J z^xZ9%dR7Dam;Yaq8^!iNB=_*b$6v+myNL<>S8=y~NbFB$YN$IDVtYtrjNbK-lsPscB2`j#<3$6BO zn)H2Hg)o#``iIOd=NXG(=Jy4j%rHwd_F7J(F?;^ZyHU`~Z7dy)u$r>s1>0YGVq$U< zT9Jh)#?QpRI=)17{SDA1`@cXsMsO*BF0n-kT5{x9U5&s@bNigWy?ijtKSaZ|AL*ds zgane!PzLAAXXidmtp8c3&5cQ-?2TS4-{C%Dxe!<7jgfuBQ<+r85+=pYWH%R|?;ck#7{@Ho{H!A- z7aye7u-xyfz0;F9J&ND zt&A63?18QS5Ljkft+3ZE zXC8!Q4^2ma+qm$K+iMjZ;MX^}_!CU&&)OZIKOIm0v>0{{43gKW64J1-wV{ zvy~h{!0v_2k+cxS$bHHEILWJ}7;XwlOr?>)1hS~b;Sa&+#sU!-YS!RvmS9p(t7#Pj z(E)B10}^=8{_kivL9_S)gTp%GybOo^ZDkzIK8lB+{7Vv+$uB_c05bo)5qR$pXNZm3+go{N0U)C1dO`;Tr0JD$=%|fFsfvXNU*& zYTB4hHQrOsNj~83p}Egg$(RWdq2xLSf5ixY3X=T!KhP6NoVij^Gwcg6h0V%gTv0&s zF_F%2DB6j@7^tDgO3k8Fur$wSn4l4!Biq^(*zjH_XIgKJ3501B2hib=@?dr|BibqF zE~3b5(yZv7Y?;D16?@($`nb?At2P#R>Ft@aZmm=(tsW0N@W7nE7Lb(c&)x2euME=s zvD=S9P+=EC3DaL=#81Y)Z3ZDs)Xu_Pem`}Nh)7;V8F4~lS7VL`3`lCUay%+|9$toh zm|7YCjNTDKP)@Lk1x=y<{juLy2t<0^J3@>f4=-YzWh7Lh2d4AMXW%TE_O4~wPT+L@akM#p*k8aiW)ngv~>&S9_28S*K zf{W8eLPl*<2J;NU=lY%4_S($)7kXazefK)d=bxfOhS6NU&Tib<$fin+_nMXyH$J#p zN58aO7^9g-uXS|99o2Zzu)2z%CL_TQ=6orpC@VynYPu;`;!Ni-2)R=f-LD-D0x|ZR zR6MQ{wg=x41d7~XRy^(!oLk=#)9*K?$kP3DQWgtyN}e~Z!pFPU=oSmRN}YYJR=2+s z;()}MN@TBiVB)1?OT*uDya6>Zx_*bdaKT zt#npGFRr{5S>(i5I6N>)4!B`QBR+PvT~zL)M7Y&nPF?;O6E$wIkwJseHf5KtYVX4K z<4pUqB{B(oexP~dnW|+CS8l#n_c(pf#WL?#D`nv$dK~AOqKCDBWNR23x1~(|s~h+7 z{DWo1utmxUA*qFxZIE&vV!Y{Us~4=ACumP6?fG=Lqm3K?^5Zzs2}Z&O;z=E8C!kg= zw46YJuh3WcgNdoo7yML6=mRI3UBW87o-Ymm+xg1Ie8i}pXy_DhJHbZu$fZRP|YA!WtE{aeV6x1a6~5^VFKQld1}D znC)n;YnYwTrU@jP{oYt2n2(;$TT+7uR5Q1)qRuCwg}TiBi+w{Sl*P#Hay8Ucc+D^~ zh4>8Y*FTQcm^lnvh2SYJ42!t?-;99*VE{IK*lUig&I~n~!a(WZVsz}`|?KQVL876+g<3=~<&C$_Wm!#C#S{&z1Yd^PT zm(B2>F{4~*7HtVnV|ejTKDy7Lqc{m|k#GrZ>6i&^f%gGKS6&^695pn8SAZuvp@T~2 zzo#P=zNeE6@1+Sx_ED4Hc5@?s6}|7t?_hrIorzjO@*#OuO;{4zuJp7r&w%3V$yT>z z`JrVjdA{HmR};?;+`;Z88TIwE1i| z2+vZqKpK_-ozot8z$wKxEJ&Y1fJH~E#f%xM8IWibba1U3Pr+ljY(aZ|MQ^()2T*`4 zoNTx(9Pn>d4yJa*U*MNUm$2r7?jB6(I>XG5czEF7kHIWZ9JUCK3aIrC7VWk3-P|V1 z5*D#^u&rDz4wOatyFEtnwUVHr`P2LLNa)+=ekPCze}z)oto=l$+UWSBtg}49e96M7 zSCR+X#UgQX#qTE;dNlosAR;rjolqj`2PxnuMzt`o?I2W&e?l=sapn7w`wR=}id8l; z3O#a1b9tK{&@c0gDF;#}wgqS;08jFx6cvmSZOXN3;e+doO`iGJ>Um3U3)f8N2g$wl z;NZz``FLK^nc*tA>;3bKE*v(|^p;H=>{?`JhtZ0;p@eq!^wjuvj_>23Ik+5x&W_Wd_~1K1VhQ3AA3AqOV$|Z0WtGmWhYvZH?Q;;An&Lta^-? z3l$Hr4?*R2jR`3E%XWpStAGrH7Pbrey~G&v*MWjW~$ z@FRGEe5C}#b=Ld9L3LskycNEu<$6kzHbOVYlZ3O0n2UX-xh|R~hgj>iE#lk(TEcg6o3w?li|R^YO6Zf z4R2MZ7^IMiP#}jd-KCNWt)w*aOJ>Fr6zPaA{8`cdMLxIJ;oW26-PUNia(dl59yz&! zBYybstv6u@azBpa!ETSp+w+GHb&aqn#Kfh}9iYA)-Fh?<>K`)-n((*45Lg7A=WhpL z!h#NCIA7^XhBssC39AQ~2^Ae@7*gUNG(}keN2(Is&LKj)&%7LowHV2`+FK8%ATmw0 z3c(U;DYw`DtVWkz;%BU4g>bV&g|gM>y0dw|_bdtsv<;nvyuqo(i0=W=FwK8SrSbpO^`ced z+O=TmCh^}au-Le`xL(2<8E2qL=!vj@+FlkLYyRE#f?y{dRm|r`+Ay~M&on;iA!#%4 z1M7vFZ9q>1F$oEByVF+K0O5MtZ2hGFno5{EeJeWU_(kT3=?8NGl2Q~j(eo~+5Oy$C zQU+C0&O!m`TaZQj@T)VC~gwX_^!d^Rh{jvXNjQ1aunYIc!!GA^j;c}oue!dfu z@5rW{p{zUqH`6Of;xfJbW=-N0CxK&=G9`HsC;nM$I$oVH z^uG!Kk}I|SmuSgyo~pp=GI>%g`VGo|p{ZcC z{{c<$zlQu9nu-G5xn^_pObhK~0^85f8atRXGTksCj~4hete^j1u?Uq3@YJI!^nR*n z{QB#&aH__vAmN(Mx7B}s;WCQ8w zG~Eu1b%Fd`Cuw2VXY7X07bHR!=6fd)gid89S$*s2`vZd_hf zXf0#-e-jgpj20rpIxr*MBaBi@1+NmxCMrr-Jd@v{QMeBq5`uoeJK_i4VA;dFk57I* z-roT*j=QG>jwCSJpMYpNDMPnc^7~s)0lHaxC)8NvDr;^9Ceh1XVT5Ks2RB#r9At^# zkF;ZhFwxwekBk$STNH;lO-^FX`0_RTpny2f&TpUuPh5g>I;u6cA$G4^zY978d5nDM zY1TvR?Cp-J1ri+7umXv}M4%$~g7YcqB;g{-b4}V94BoN0IS+Rayu!k_G^0pB(21N^gp&Y>q17CV8l zFpeCPpW+0%5K)89z-CAQuhS_GC9qI9h~z9;mg}daotd;h>l0LF=l+JASqqve>Jv5L z0wpE_y<6^&y=%_$vh_OZ}BGk~K|w`6v$1zdSZxfNC3o2qUNnu+iM`1r+9LYKJ=fpKvxD9%P z3C3WcKk02~Ofj6fA?K~=)&(-Sl)orkPv-AL3yI~A@+#h~xNKYmO#7cSLb|Tbl@K&+ z94^U-2T8p~;F0dM7fnR8)olg1CvG;$?Myc*@>Gva!62GzqwWSz=en?a^_Cg9l4axe z8b^zu#H2X$zIwp~pIjlAz`uFvPTy5{StO(HyAzXCYp}D<4Y!AboE2p%9 z#~$K2un-jQgpXH#cLm1!k@yND@NO6`-BlfjHyoY39|O zCS4<@393@q`q@td?(XxxWkatP1oUIgk{ZYlN$B{FFqHf%UAga2Y;dkHm|c@UhP^Wr z*Wt%+U)(7XKOf4R&s2-X|H^=hccuAYZ3*YK(0vIV1?gYJz$j8`k*D)DLElGnQAgqD{90X}Q%+m#g52NG3GHgkwPS{O)3j_i3+L5tSGza`pS zYl3eN4_ATxVT2yRVgdv|yPZLjjSFP+{z0^zXwLZmZ6Ta}ue<$bdBaN6fHw^SuE7(H z1P3?U@|%8b&7W$|Ewp(w1GKe8kDeXBcLK~KGDdb^oU|?4RqDB&#&;t(G8g|pd21*i zOuXF%SAqJ!xOM1i)7>9imTzh`47Hi+`>!Kg_3`yi+jOKCgX(_fi~Kzha0dT2hMFwRD3iV^lvc)Us(jlz5Yh;t; zd4caTLA7n^&%@8Z>ZK3&NA3SJXua_BU*XQuB36UWIBykPK)Cbxe}+3z9wG6|ng12; zH1N#Yibg+unL@myv7`ss393M6h=2VA2!nAm({Z!E@lL+)HGTg_ymOKimHmGcJn4Mc zpSMBr&y3~9Co<$)EcR>$H0))N5<-QdXjTY6WiyVCN;yiCDxksN{x=uiCHTKs5w^!<~iyGu-+8Kf|4)25>y# zM7UGKNPUUApi}N3+u-Js`Dvl_G-(E%b6E$fISyRhk=>qB^9WINus}~ z7f|4`mM{iwB81qFOVU%Wj6fNvRQqc`z^_<=bmm)1-|f=)uWzN%_dx)7&#%Rld8;X6 zE8fLqBPM<-ns4N_sPL;Ow9)#7p3*_AFwz$hQ|`k=lto9KH%;Gp=BQx6%gN((f$u0* z@1EJr;=7Tf8^+AiMn>>PJ_dDo} zNu;%EHD<85Yy^voD&mE;s2_gO&sS$I+R=W2J|u}#*Syq_`H?0#YJZLvdQczAX;t}J zI2Y$5B-o!t>JHX&y=W^AhDSU*z&xS?B}JJ>!X7xJ8diu;2~#+IF$+n0hwvMj{US%D5b|ylQ5*3dA7U5_pEW ztQh_q_hMvnpd|72GJ)`Ac|-nasbT>)=Onh6LyU^cu34d1zBTzf8Qpw@hP0-0_3y$G zOg$3yF70}8hM8_cT+T+8$%BU#plOt%m-2^_`1!I*$7ih=!}euQP;)D+%`AGdfem>G z>fxxzZ8p8~eXNCn%Y1C~x%u;)F9VbzUMZJF<3u+E=XL$cw!D758QJujEno7Mr3|4O z%LIbnTsl7LUQo(>pZSz;)o?i|H&|}p`rM9`)P_k^`Zps3J#+p$h%$j#E?24q&oqb|56&K8%y-=V>*u+O319kKg*Q=esBD#Jn z+y?!?KY5~*FWfd#0D0v(fd0TAKrGxQQA2v=nZ3GUe8&%|%AUJHp1VxiC+VmZH)JZj z3aXxa>OX!|ZBQA<~j2~~U_4@0>{J>mnRI7>$kc9Ixpt$XMpUAT>D}v{U zj~OW+aG#__rVU{=z@HCcd7&Y_o5Hz!&-T8XI(7EMrj*%;*3xs4Unb>DEI&J-5p9La zWu5jx0vUX)O@X|vm*#s*qE>P@4LCgM;>`J(XcT4WAF%byE5QGjWD^UYB3t%h zBosg>Ec@4oK~2dW`Pdz7v&1;|b<})-esDAV(dA*?lGpM&0_r*cN3$nYgiEZaNcZd6 ze3lmrAr9i58}*;A5BHK~2eEVckgv!0xwgl7+ zI{`s$`7)4l5mIf2-mNS#Y=Gtil5iUhwim(za>+lDTe; zqQq@p9HpOS+{^i7i3i_R#e<^2Tzt_DNp+h?-Q##iu|c^I^Wlw4p+bp7_Dub{aBp6S z)t=-@#2z_syDT!Xt{X$)idWcoV7uy+wp)Q3RQB;py*(wd@>X%^Yyu5F&t}3K!=^xS zPGu|8xL%3-3ok5($~I}XJ+i^lEh-$^a&Ryrz59}NUd7h9I`+pxM|i_4$nba+Mho#v zrLzCBNOYpl_e^BBy_z34B2kSy0y%H!Pm4~aUFe4hT+)fK&;_d4ZGb8wrBbsv)pq+8 zyI;ew)#xJ*s@hoX?bPyQ0ZVDsC);q88+|GcsQN?j{+euGryI{|J_~uFwUwQ}>%4O^ z%B2?Bo+}=yO7B8LSSw01mO~spF~%%(2-SMDx^E$RUn%{5b`{Y&BIz0HZSK#Jxd06_ zgJBZGfMG_hKrtfeZ!q+=*SY8lV?ISNCa!V>V?r?{M!(r8kqnNOb_qpK3Z@J9n5^`Z zl0LP;Emt(ak#qXVJ4(qWRu+n>tV%27H6yX8N{vx7X~imrY<>@Zs8v47I8di2t1t{n zuCJuZ76-poB#yaTV6SsN9C4@^4!?_ST%hUGmn=hs!O*DeGmxwRM^UomsZS@V1B;<@ zA#>N3R}C0VRz#I9y-%_96sQ2FS8{}p&zQH&UK&n}d|TXM7AplR(BQDcn26lodFHw z^6f>5!H_^G!GcueUD~`MEih)%e>2AB|747(9O#Py#YOJ|xR4WN(Zh?fXmJXs4ouxx zMy5*~tclTo*|%TdD45(oaFupnKC+$rl^WwQ392Q?6^+wyi?y>Yym`wcW@NuKpL1*T>Ohc^uFS|M|ep?@0)lG#`~ z9CiP)--1JoU-4oeP3PHe*_dL2e3WLq&_}zG zM%wXki3{!>&Vt^?nyHSdGFRV{+xgb~HtnsV_?Stwaqp`4D2Udyvkm!=yY1h zRe?M}zT0OLBlah4O(tzkEB`V19}YZ;s~R?nC(oC3r+x6=<~(s$S}(+yl1Ri{c#ly4 zCLGyVI%L~qUzb&JU_VC=IUxiPO|^{YlRdrnn{$deTSk^@HB>9)Takk0h|MrE+$D>< zpUe*gUwl4Gw0jOTo>;6kNaP>ksd}TpegY#;+=B_FklId4Dhdjr6}J2 zD`2VXe+^g)W?ugrur#BLeOE5ndfGlIurqa&W;1apZ3KVYYS$N^YR6DDi*O&Y_M| z{e_T>1<^b&BXwr6z}|PU0{A?#bbZIBXae7dWPJV~Oa4s%^(BYV461}_u=k{=-)q)V zj)F1?5r2rm;Yzf~F%BckaS7{wiZq(!zjkRuX+{GrImL00Rs;6+F5vg52iukG-(A|q zABxNfiXxiLUSG*%NR%ylprZypSqkA8FCwICoz3qR>P9{OZONnljLw^ch}AKa8~#w- zfIYz4=W}8cGcbi+ZZ34oie#IlIvCFE# zg}`*1_VBWE9bIBD15$)LQcl^^$!R<0xk47?jT}TO{uFwb1GLt)xLR86q3iccmvuJ#N_Yi)W(`chak`1&y+dTe?CZjz`+UJ6 zq@xRFMfU{p9#47rGLA;WF~Pgb`V z0r7<$0`!=OhP*V3!u^Q$YH*x;9@1}OUOL7*+y~eY-Q2R*@Ip9KwIgcmc_8ll{FE}+E!nU2Mk3@X#E+`>15cL(YeE9p4weim2i4z{V<>av zjr7P)@2OA=W<-)^PZTAizQy97EkGaNyM0~5J-rbO6$jMggoeUx0sMf;l(>E{+2?*o(L|_1`{zRY z?t?lo7@|SI8?3((IWyQ0@H1!^tb1@8X^t8H$#;eKrG;D_X8%zM6t5_Nv6o^)un;$g3D$kRYFUn4k`D3&f!A zOw~D6j`0pN>Hf{{kv*WYyPGgw$GcPBI`A8fRVKL;IaJRB9HvsP2_23I?);hA-f(TP zA^o%eu~7qdMA0HwU1mPfJZ*L@d11TWA=_iQ?7oDI4kQkP zJV3rVhYB%c9g`hI$iR##w-3Rs0`e`$1NAggkSL(XZ9vTx-`8yBI}yz!arE}VIA_~f z4?nsO2@k-DiZKi+ago>01O?xg5Wl#3**aCt!hJJOG>ssk5~kP{wU|^UmD8VzKk*L4 z&?Bdy6j3JBIg`MAL>)J0;_d5@I&xdDD&*xK?j~Q)=8;i+kt$Yd+S~&27etY&qM)!n zQ%I32_;A$06%(0?0JqmJR9*&^bv&0zUhyw=q$PlhuvLd}w7LV5u^fYucrz^+d{mz4 z4GmhScS>_kK#YdY83e0a|9f=0>Vcf;!Wh^3dO;( z^n+qx@DDha@x&%y5$g(*Q0fXRiCpNa=vnME%&zF(xJGKQ=ISGoW$fGb!3uB;_> z{!E+G3?fG5C2`SVba_|1!9~UT`+kUx#5IL3G$f){>nM!1zVHG+8QRN-=(AslcSzQ8 zOXfMlxo9Eobe@LxB{=GJRMb=vypo*T(y12CmVmY%29re(TEcV$;|qDy(TQ zK18Ylj<*UFU@E4S0_3X#^K(+fm1>*RnU{D=nTAkQwE$1o@%}P0&1VqLkaWB?Fc=Ku z@jry@w}nVnkWp!huF0h8l(4@w#9yJi*Ev=_%n-`)T+8>d>U2z z#Ui3)P>g{V#|z)*Alouw*}qton>2V9lnLjKgMchk4?*R*%@x@TY}Vmjy7QZy9;Higo`n&C--~; z9)n{Uf|rl+Tu$-yK`XOH$lbl4BmMHZ*jWeYFXsn`z^dMn@hswwo3);I!OhdHG*WMO+?b zJeoGNe9mQnt)-(4mGS74?Kk)e@BK%gx)9>Ad$PpFT%%{{Nc~QMw>wetMds0u4|NU9 z2Fr&l!X>-e1U4Yl6Bxet8hm ztFz*`X4s5f{adc~%)EJjb}XUh?!_+Xb?lH|UTHpKd_K;2{9Lkm{(V^^@f{r;L^|$R zNF8CtL8cr#<5K#}&zf!AGE_h&aQw}qn=-i`iXGm;M}+hE-so-wieh=OV$r?O6X?Of zGIG+D`c3U8M+HnAX08YV0N4REGb^Dps9CHZz5^lw;{(TmP!n^V8_=mXnEkHT{Jj}%$J zwvh%?LVP>Hw|&)0;ci6O{D$>Kgbmy{`OCuCVq=8SqF=yi=D0Q<5TxbIiJl-@S?TqB zL12|(jAfa%wFJ8NI6p*}Zpx0&5(x{fE?f$}Z1-ZY=`xXwE9-lo(;jlMO@@Zn&6Wy zplC!q7>tp-3Ri0by+VFb`YQJ)5l!~assK{0MhRadbVJHZq^|xhcHL=wgi}kT9*PZ5 zrnESu#rQyx34UKlvuTJp%#F-g^KHxg{V|p1jh7Q0%{Zf>PO0B1KLk4{-Yqgs4x5)P z?!q)Y`{fr`FOmN@t^f#B7`~N+LB27g_5@GSAAm*^q6WmuM%mZednL-Gp_4jKCpqnf z8J0riSZQyG8%sT8z>Nix(Anx74rD+I^8M)lDNZv#SZe z0);nDtYsP^cingjA|T1r(+Nt9F|Iy-*=e0 z?hXSN9`AeVM>$*X+z#0XFZ-~YZ|SECt3S*a@t6}#j}&~7+D3>VdMBDEM-4J(ZzMqJUiXq9sO>@f9r;U{qjzP< zg{B6CCUUxNgHd6T({8bX_HN4+e1qVn$o@bD-ayx>e3O&qn6lVVp@c~CW=>6okIs}y zSx4IZmlBmJc{CQk);QdxlbYiyhpip?g0aF@qv)zMwICyt8|)EIVkCcudWu??S(JP- zEi$HJ?Ce`PZESdVoLAASZi6TBk`*$`UgQmE&liKPjjBy15)|%8$?Zb;3Uy{WZES}_N zHX2t-_&v&Vw=B9+mU(_XzimY-^YC<>Ii;dO7gyiUrXg&Y)^*0UNewZ-V z%aA+52wy;;FDPQS8w=ifBhyyO^EcwQ1;@@-ZQ+hJb|h2wM7}BiQqVc$?Vec1yF=EJ>8ApEsfQb`EMQ zx~(yM(R_%5MOgzI2bLf<8 zE$O>CW++9Nl|PpCLDatu3|T|n-Ush@<%=`Pzo6Cd9VmjGA&W;P0ZUCrB(<;J_yvQ7 z>VKk03bykOe|@LQA8_*)a6^KyJwYsp(7l0$7fUXQeuWM-Vl0^uy?COLkT6PJ?Uwh7 z44tr|K9DF0QNLc>y1Pdf4E!E2v-4${RGl`5x#OW7lCu8)zG(kW<$@wjnG z9(hsn<&q`h%urH4nP17csMsXBGx5^I;xrUCC*uc;CmmAN@=wK#OG}1Fak*?XXS;Gv z7WVVeOcuhyA1e;g8xkZx*xo-E!qSUxD`scpQn?p#hs0?jtc;Qf#4!!xP^flg*fLmi zCS-kwy0KvuoD-TWb8uOr5Iw=SCvXs-D=?00$*@<>-!+LR4BK5~9YO?F{U>Yi2NL2RvciOk}+#N^=$ zaR%5zY)z2Cw6{RE&!9S)E0COu&1O@y~3%_0WG{sz{;?=yuabqRj-Ksj3mgCk;Qp$%QQ*pW;7Ss40B~iP7kwCCDi|@huw&4np^yXt zXK={`35B>!H-XHj-?Jjg%k&j~z;&xL#12e1su$^t9)-|N7yC^%Y0STlW8i>~QhPx{ z71#lGzKiWF=~=~s@O8Mt^d2mu`jLW&gT#P%r9*(eEQ7capa=qw@Ic)(Q2a(@_bT2{ zLP?Q!rWv@}&>Vvdyy8*%S}TdL7>UG~^dzDU@cLfRU;}O+{cafoZV{v)4q%4SA^Y4m zF}l_9=C}%OFE1lViBi!?h*G~m96}DljKY_p#;ridjpU-uRQ$)kC^veJF$VHF$ct#V z60b%bG`c9Hl^y!0i+e9|2n?7=Ut=kFTJ_~|A0&xE+3!OuRgr#;hOnOOdj%&E*#XqiQ+ZA*utRPk9+ zcT6<43@AYRnNFoEde0O>`m7DC8uHS^U`2Eqz9Aic;KPX=a}8@2vpUL4xZRt7Kb)F1 zn<_`6p@K^Bp#&+H8)wZQUHIq1RO)9&uk~%YxJj=10ZwW z*DBx2r0}5dptSTP`an{$5kh9y)ICIwe7YGNMiNPqS>DV@GC|q$xu3BLtFa2xs=p2^ zsHqoB$EcJ3I}oj&1h17^eo*4&`pZa{>c+&hDY^Z?bWvsv<2dQ=oG=$ZRUv;eGd#?5C)T7zPioVO6gOXpD&hA~T z_bfC=u^b5DMJ!)EH#R6%Y;dfB5XIquL$zDh4ZO;1qrqeu9z5vJgZS^d!-(4ES z1J%~^2X5jDL;lAD?4!zt^JMR%jQJ*lcln}S48P4!Zmq;%)UDPG^B1eXBM&U|aHDyr zn#Z^P3x~^n{Qd4)LHg})>}bml_kZ^_XRaREKwr}p%K%qdmjSKItTVz~W@gdMSOi`_ zM^%FV$wZI#r&`j`XwA##A%n;I-XABZO7#$zV_+w&hf;{?5qhe)WQ$|ij46GqSNN<> z0f7mC+y4EBi-K(GAKP^tR;>*6>TeC2VMxkDvaaPZLXoq;Ap4%*)jyn$&_)o$zRhJZ zlNT3)ZJa%Pzv~jwnaLx7-8`KzFnTjF(ZcX?^AY4rqh@iWpXh>2A*VyKw8wZ;x1GS-r7^C$a_G@Ul-q@w)d0 zsrDU#2zqg|bMpT-HLOf!I|e+Q!0bp413LHE-Hp)GEouA#(02M$TeKShl1jSY7S+*oQ{;S&AxZ;9pzjW` z`7rsyg+GllzsJY{*|-wRp4@1$WAlR2h}QID5Z51{&(KU9y;D7Y<8%wp09gxMF-VB; z2S5cL#S3_Mc?kIDPe5X4hK2u9g$nfYXEWN40^R<5AxHMzT$EZ=d8rzfG;sGQ*>AnY43xq3J@UqBpu07|;jr zZX$Q)&c{@1@$+Pl8cBqmJIUCFLvG*-BfZKy#;k3NCW4_smXd^lL{=;nBW@VgUjXJ( zt!^22>bFD}l^<_|k{%Q0h+}qVYKi!CkdY$m2ce}yP`ZjkQJA%cOm9*LW==-u!97|M zZ8%M&SHPzJh_&36z*H`p9`jv(^AAZv!jdn}v*^Y4k4P?eye~xLp#4se5qmZmEV;Cb zXA-`>$Vf}@di;Y{y71;Mpp2_8BMrjOX- zpo_Tt@#5gqr#AHDzGpOE`H_&3{z&64;Lw4j9md!m%t`YlB@MT+^UVo9#iq|%5AzQB z#(`_@Js;8nSnc$2wZr6mi6n^Q>`VyqW8nnD-DG_nHIsktk-;Sz*!f}=;Cx}$ zsneV;NMaKyouEvsCX06Bob-wp)k*`bk7<*PYZd&?{H_Hje&JPbc~z!sYA`r}FqLtV zm{MDF*N$x(fcfb7t1NGlV=p|<*sfe0o^PWEc0X#y6!$17F=Q={Rs8-+Bjcp(W1~T7 zc*13YXs4@-j83E`<1vw&>ldrvGJ@Za6W;>v5LL_1A$EL>!4>;k-%nN6n3oc>dc@Qb z=HdQQRih~N3gf5|+~KxzyQ#8@ z{YfDYVW4NL=-{#N(t>%KNZ$Ix7>A=bVZg4HS!M9I@b*1!DodDJ zba=Vn(Kb}yT}0Y1Xt?4Diu8&>M9yKIPR0$BY8t-|zcwqxR{eAT*Rn|&q6@KA{+b@B zRb6bdl=Yr!d;nmz%X>Auorc$!#+^h(E$Vu+CS3+__^k1>+7#wCh6@*=JhNG1fllMG zc|QfqbCWrqmv3Lt+)2_TzCfC!5VM`ks%~W3_~b&q{TrJtga-E8ajugE&p>8}-`g2g zFUy3B8v+0}fA=sPb8UNSc}aCrV@PtiWPcBlCrx+%nMh*a0kx@6`8 zo45Kd@$j&}l&D#o4tLl^XN*`UaqEoO-lhf05)m5YpxYeKBIW0h#~3B#*B8!##B_Ia zp$8rnps5SqotEaa8}MO-{3p#)&Oqy-b*Z(Li`c=QQk*E{%olGP>;>!970DnzoeRhN zRCyP2fG}c(_Ge!h%;BLOZ}`Ovy3w3tT{bd+`j-&?AD>t7J>)-rnc8oyX*!(- zwypNDL|hP}u&u-Lmt&*}hlq|sAf9Om!AuOj#yrz-9lylT7_CPwqbx8i>yP-DBIe`l zukitc@F$X+)6zWR#r+*R!z{-*nCNXYOciQC7v=cXOS%Oh4i-!(mk@2NI<~irT_%^| z@wbEV$?e?4D~Q83ONP8_pnHS+HA^`Gy>Y{$R8QQ3xqV>*%jR zD})+B7>ou1 zvc{b`G%7qvin}*}E==Q`wKz;eDXAjHaH2?XFd!_L$S6K8Rh*8OaG*Jj6&?FhS*nZX zH(g{p3onS_c0YKf*#h|wDwIw>kj|vsuKxr67}vK>4KT9|_EMD<6V*O(bI25$D6AHgn@<@93& zBhbMbb_js!Qk{qR+UXJu{N_cLU6nhHRtsgOSKB|kgKW2wa~9mds?|6_n_N)37Q{fq zq0n~{QQ@G>dJ*k z;KnD>j^047w#54m^P8^a7vw!UcC-yg+9ezTezz19dE%Uml^saFrkZ5|lJZN^^2H@+ z>k~rBbDHjN`OQzPk6!us8(W8|I*586)yTf-Xhh(&i`lJ3`R;`1=;) zQSq#D)MT|hAA&SJj-OH>VR#zYvorAx=*xGo*+)F5tw>rVH34>oHv>`0c@XmA<*L*{ z6%o8g@TSxIRqxD&+u0;BC^NoZW+_ZRh_rqDjAR5(xT5#JP|rPL<_?^V zVpmJafE32T%k7_?1SL~+mp9~xDa$}tS_XDE!YLeXCV$o1(R^+&H=y~__~lklNLdvt z*42(``3aJZdG38S<{PmeVf}1B%?k_L3`-v5f^yc}dv1Z8Ig6WCVNo}uEm;y8GXNXF znyVL?IhG9;S<&Y;)GB|jl{j;pkb)1(tLLz(-Q;b>=nNurej`oZFjZFOdkErDW=c6Q zA6aaV<@5Nx-o%Frj?>6E8x9apQUAHOpAZE^ptS-V&fiXh!F}) z?P2mi%!hL7c>04?OVj&eIxsMI;sa+KQG@C;ASWG{Nk*NlC(Yryq`*~-fBouoxYU=q zfb(lfd-3D?df9UKnRENFX#IG}>d&)A`PZZ0g^cehe+(F}3gk+bOK} z{7gX^`Lciy3c9 z_D}+-Rb0n$esmoJyIiU#`fN7QRR=c{%;Jm4Mo7xWNF4>F=v?uZB-7gB>I@E>elRM{;B59PpJ|fAb4Q8p$eAElw<9zebAwKF65xRIXHDsEX`*UFf>`&#KtMWW^ofj z;F<4zB94}}Dc?%NeO7_wL7o(`f#~aidqo!LM37G7qVzbq4 zKQAjnZ#H~mK?YrOlb9Wg1yU@Qw{Cdf<7sIa?5_1rhOiGzI#dc~g&YgqpAGl&XzhihO4#K4Ja{d1B%6Mxt) zpBv^z-(@gVQCk-A3^YHN<$XaK!0F!LYaP=mB^HC44Xsx}?fBhP;o&WY0-4b*HJ-?%3Kb1rYPo!;( z@P7Dt!`>79FjfV2PIhDNMcJs{b64spxj;*~hQZX3fxVLp#Hp6HV|?j1n&VO9F&Ndf zwS@W&f)u>EvBl6rnepU{=HH2grL4!9k(Zq|)?$(?&HjW}g(o>M))*)k4$UI4;_p}2 zx+l}RTBWJdMY=XF{ubX}6Fsg7?5qW>8(-@6<<1ATZe8>?`#hRQ+5$buc|~+`@8~D? z`C0TpRWP%!mH&W=df$t6wUg|4bJkw^>(gZZD2Fr{s*vAY@^ za6FsNQu5^G(M}YGrERMz5TDRMst_X&H9dGzV_^@ss8jNX&&wRAUQW{?3izkJV2wtt zPCyqiXm2NtKQc_?dm|MZO0k-V+kR+Q1cr-Qh^)q1B5kc-05yzQ&pUn-8A7nUrcL6jhgsCjIa?1C1FZCYOogYtI#;lqAJ#xAfTc zk=dU(NHREkVd6289arL4l^k#+O$7yEmNE3nMQc7g+swrGURrl7;V*I?ag_G>+*Fg9 zgYtesOP4`_kX_hUjO*fQ*WwUP)&-UjV9m#!XWZ9UHK+GlKiOT>hyG3Bi7(21w|+H+ zMp1N=gzCr|nYNM$*371i@^U%ji#*#-^Ak7!2GiK2y5oCPsWqVzPz;%%lJ&(wE553@ z;tz~a&y?TiDJw)2zZ>Ed{3O}jm&~o>Aif5t*O*d7>c|!U+XHaxMi?29mM1nGt1Qe+ z|5U8RB~J)0KoS>*Hevx~tW<)rw{36pCB zk4s6!;FBXT*CQL)_C-L^x8WQz^LlIXlvOrPoi_znXf&ZY{jX6N3=Wz-e{z<+alp?!Kw4RBh$GO^|}l}n-Hl)YwLrn zG<|=S6C5maUvwTUyUQfC)+)v5EAC%_yVo-bX|-%|P~JWyu`TDfrP&S2_LGGjJj4|l zcyRt2l9-*xaHS3$f4%jz0fy6#1dWnEvz|ATe{n*5QHFX^R+S$!N*UV@ymM~S<8@Nc zcP8RhhHp7Ok7SM{GD9XdgF3nrk=e|UMqh?7Iu6&hX+CCYJ|Y1;k5+NdlYO!470IF9 zDlp6RRy4jv{ooM@w>m!RW;ZI+4C+40zm}dw%o`u|?4FS7Mjpx4nGyy^WOhhEVXmv( zRWta;47M+P&I4w&38!+gU#$rs}7W@nO%sg8u z5JyD6p#&3OtJnr=|54|UWvX}Ioy(lk0}OxhaOPRsVCU zHt(9oiiUNtm(w-`yYKn_QxEb8fng6sL!}{E1oQ!Z zm6pNekM~g%E+iN@_1IGxf(wqjqA**k%Dmy@?mmlxN7=I_BJ5dg^7JbP*gM(nQQ00; zp^;^iN{r_L;(~~%6;a4UWsd^Lyjj49c@5&opg@G?*9GTI=Rkl@ArpziXo(>TCz4p# zj{Eyw_&c6!jabpqTrYk`U(jN82{L5}g&Sb>SriaqMQ4mhPzRrcb|d@&7L;u*f+&CU z9V(Qe@38Fc*BDIjF5=b;qD8Tbj%s1ne-2{Bb%I|32HOS0!c^5z>M+qrjp%A(dk!4#oL1w-bmEUG{h3GxlWvti%3i%AuhGx|=lQ8Lj(rD#RN`^k~(iz>IE zd%pG(S!?|oqmWtH4exXm4w9=6pu9UqC$*&kzNoE~Zq21QcWHa_Zb#<4P2`_aqSJ4%NlD<}!QV8q zf+WP(C&!z9v`x#*s|hWS4<6zOh>#|sG+N**z|~dk%VBFDl|Ca#i|nNo*P~dcI3vf# zq^Ty-pZ~3<_a;|T6nx>j6{Hp(vp17zG1C+XWldrYD@yAx!CVSNTb7>u#z?Q({apsL zVLEXSb{xH41PON_@?=S45CpHA~`LDt`MVg3CIu%g4HrJIZ`2bO$V@2ul zVOV`6PtheiKlRcrtrV3c&y0pD z*ZCify5k#6PD4<-_Fv_25G!_(MbVGr)djJPLiV-p_2>%skeYvHaUHbP1ias|Ppjjv zG*_9|p=C;Gv zZ5wm|FOX+5m+2E!@E3P}1Lkm`QsyT9U%-!XI_*Ee&#qm+%Po}nTwqwJ#uc|$qq+T` zj^iM$W;jI8*$H52oW}-O8t_ou72oyWYPIZG@gKFi`M;^v!Yz$n z-ieg~@y>{)krrZNCpBOV+!Oq+%==-^DGIdh&`#g0P&U>8z-}giEa=X`(tqRL3bRTPN>HYImelEL(yI40p6(PAi?>W5kkA z5|6$G;KovpFWkGi2zoPHp#r8@lTiz@5j6{GcegM74vK3Y`v}5()=l)v~;*E1% z_BgHIc)^d0CwPpP@aCFpaO-G|$mdui=(hi(^m_m3-R~5urs0 zW)a`dtaagvDu1FDic4$yr%y{EZ46&lnRxsyF~UGoL!LrHG3Eo2m%7Bq@%i$VsM|8f zqrQF#gl7&$ZnOM5=ou|Ig;6s3TB@BiVqZ_q2w7Y&g^)G?GyFl1ZwPJ~7Kxqy)NqF^+{KXr@UlDhYZrS}ER$fT{(z{H)HSuEwNlCjCF z8p%Y18e|lmc|>PU{88}Q%oZLP0{zbAtmCAQ9Qu{A#VdiSz{a9WSI1t}FK@PNX1_B7 zw;x}VhMFnKY|p;u4YHk9@`NJV?ATMFD}EflG@qgAE>Nb2>O_ot201a)wu`MMSM=}* z(+^g=FNW!I#^@$m5$;uV#%J`ekUXpdahQkpjngmag$qHygY=l0dDbMn(F);H7F347 zqoKE+EzaJK#o$ev3?2F&PX7`vX*k8=cB)29zVxB*f+kR`KkseZ=(y9!bOn8gl#~a^ z&Z;We(kOK$e2CBj-RIp~lG;H=Z#$l^r7!CXPcIry-y3`i8j^=7Fft|zMgvXh=<Zu2aq$q3Uof0ftKBhvW(tV9Qb*%=*c zU~$4s%@&PjrAktZ8+T0GAU&E*+a@V)*rH1TZeje3>$n@EIrb=%ev*LMV#h&8wL#CU zfv~w|rsJfUaj{bKH;@SCk1S)bVOr<^9TJFz345U!c!1h~BMK4H*Mfw-F~ypMD&~OC z2v1{z;P`bQxV@8KYks`Vv4Gu1N!IC(sh|aE7ZPHt<~{3>wFa!ReVVbj|3suk1g}ut zbfOY4nq&zx`__f28^@SVW$+r|jt`b%GdglNlm)SY!cca81Xcgi-!0VO$)Il*S2GjNMn>?yAQ;H_yfxCyWmMhlI&hF7RrV zyLz9_AMP>I&iPO0zyFfaTnR z_s*?vCH#d|t`8>3^2{$NSKa?z@R*iFlyHM!{bih4?KOXDvkw0FPyZjk*!jRJXRqRK zEY7>zRmI$NSxtzv+<{yJ{TaVjm0HgV>BX~V&x~&i&;E~!C7ax4Ui|s19B27G{XdoB zFHKMCKbyiq{kp&Zt1$O7Bme&?%t@O4Q>_(mgQq@qWuupW_3Hb#S6-LO)uN^5;f`0-y@5w>L~V7jbk(b@`Kh^lh*1^CSb}e z!PD-)PRAh=DTv+xKZcXiV&JUH7iz|yksSB~J;>|}83V)565}luU-n)>Zw<`GMw{rK zF*UMkXOH_7ABgseQ#_FfZ7}EDSF#i))bb6HJ+R%9giB;gu=O-N7?KGYm;M6*96blc zhhtsMvWq}5N}MJU{kOuLjB+R-dc{m;2W41=bVt9MI zaqE9mIs-b-V&@(&Vd`~IuN-7S(^kr?)^>v5nqt3Y#4!66jbW!BaIQbVh^ZJW7=T1d zbf!ax%%(2NdbxT0g_`;QZ>SmLzd_9q2>l1i89=Ie7nJjEEYVz$G!ZfQeTXQaFwrOV zkLCKcd13r(I#oHzRW)~S*XF<}vO$5Lwl8Qk!#z`Y#w-T{It(@^yi3qWPqz(x{pX#f4dT}=#Z&`}2-48^UQoI6I| z<-%Ydl{eH$8ngRvYrpWN&OE$X+b!jkWzS<8E&CdSyy5Z(jeREnv(r2Z$DMl;XkHpx zEcKAF)NR^)ZRJzi{8X+|dk91Uha&9gC$k7L$xTETmgAmHlD(TdHjC?# zZw`X7`Lf;2^2d6VEI^gK-pesu9p&+7R+HScb{i_kcVEkcP!NzPMwi+9^9#i&2@c2e5)l+7BFJ)ZO3!&!k6yNt<7UNi%^2 zRVHQzD;BnbkRi`FjwUkb|5`_CFkTtsXW2$%5RqB#c7gmie2v%=j3F2}&$2eifVz-K zLn}|LRz)Vpz_N`NCgqR}8BF?R`Q~;NyKaPVEGxz?_qiQ0#ghW0V$|LNO zutXF}VmUbY{hzI6OFhLs&=a^`3+k#(%E|ddiZND7Ibi%cX z>8my?VXM(Cj1cA}mx(xn8K~kD!E)=PGx+$IPNT<()IZRFuC5Qh-OJz9B&iPJ2EM*) z^!?;M<*dB}hr`y!$C5ZQmnHp{{B^Jdelbiwatt*$p=y7j;A?q6j<^Ah-Ou9QMwrwb zQiiF#O>dnD+=lRl?*Q*YH z8{~JTR)=!PS`r>$jW_)keSxV|xwhfO;x{z`<`Y^k%htkL0tTFhL%Rx(~p z^oI7>B$f)N%`MUt3uYC$pX=DAi5R_J4p81^p&8X_unzwmPllEzVcygZ?K-vAa*WX+ zCFJ`oNCk4-Ik{FPA9BAgbU4M#6&Om3o7e|Vot?AKZQ37fdsg}XMRDu5>65A5{u%0y z*kp-U4$+VL-t(8{olah4PI8(vF7D20GefK; z4SsGse$%QBG0GI_MmO@*HZ4doQRfxF-D-@Ae1crkR^i2el=s|nDG}fB?pm3XOEux_ zUaFS3rA;zAn=+ziI4FwxewmMv>i9ErDcGUONJr6;kb*XqigrGeepD){J#aq(2(|A! z2Je$}rK{+SDr2O{+<~K}*#QOk*h89ZL^O<(So|27080F;`9JboChdzKtqccHk5Bx1 z3!mUnOCuz`hLe(^c$IUzvO2S`p=y`=Vzx=YwsoNt+MgkrV^Cst;QnJH>kvBUEJ}S! zGJWSbq_vtm`76ek$7M94DKvLi$`u#xly;dJwAVKBQfVk@0j*rXLTLvpCD-z|=o4kO zsAjv>MI_7mfdODd_s;&iO)(iX?FF6*h^ruT^_wk&+BYccLHuQL4#xQrzOqruQY-wZHOz zT6<(1u-Y;X{HpUTj6*@^GlfLwgAZr!Yly=^=WB`IO>d(y$e>g{e3ZGT$+pT1 zVj$y5aRfjk#cv^(RZoqPH%k^y+`49@KnB}X9W1o=`hV~}9VwoCpi z9A(ac>*Db|Pls>sEZkA+_^r?=Z?N;zJ_K>rNk8yx*sPf|grl74bf0oSz2pF1mYX@Y zTX7WakD5D%+rhl9srgD9C1Nv6AXlAooKnwrAMnJan^<Jf6rXovnd+JfVb_8lp0tzAWe087#?Z zcJS9`?7Y*w(?zZths1(=B(B)jLW?=(QEl1Qas~T(pqsR}O55Yw3fKjFm-DL+tXDqJ z8L=6izAF%^=1Ub)#>o5ov&iG2_;xkCAIPEtbT%w118k$R<0uqAl2b5bj{8ljRS;#4 z$1RZ)+mMLTCroOBWdI>OYzFCkBJ#aBs4djnB)+SjWf9!9`xI;_wTk zey5YEY0(o2(5bGco79Ky#bnFF{vXobIw-C--`d7KxVuAehv4pR!QFzpyLN)RySuwP z1c%`6F2N;`x5+cloH;Y+ocgN1Kj>o9wY!?`-Egmat#$prk(&FW<7>LNF&9A?N-N6u zCgea`%EHo64kr)`yMCge*1=)Iklc`zQwf06C&^0x;*Z1Mp1B=#iL3y;d_xroHb}Z| z(#amnewLikwp7MRHh%8G++@}xEBRi>X9*}rE;&#lQxwZ-6Act};S+2O7XFo>2ZEq^Z1I^F^cE(1o@OK_W`6ftsXgw=w}fKhd|W+*i;7&TUElrmCP zIrQK%2Ne`mQ^t%wJ~h#@L7NJU(k=*4C?639GRh2*g^)!!gq?m}bmF^!?KZ6i&PYp5kt?6=~aA^&VrAe@jjtpivJ* z`?A{-pwN=4i&g+MlBJMqZ9mjzkr++nhz@)Muqz?g4#|-i=~e{;8cQN0i5D!Z6~(60 z)_EW*9Zq4iP#Q=r#HQP119M!ga_;bjte_|Y)gdas2IjEamKE8l318tR`aoBYtyWTO zbVtE(w7UTefEo8*(m*kYa2VHA2$Zu0#*_D^06Z z;~N|isu~BCZA1XF&x3?F;Mt$cZ@I%PfSmSV8lma$XI8u7${XgR2?HFvdbPmDzxlS zb>sJqJ8SejR;z-IutMEoE|>Ug?-+5~)2)`XP?t3WgU`+WPyW&@IsO-!Zyw}Z5j!o- zmR`#XP_ih0m1TRI?q@%Q&0&EXw9b@fd{0RDJNeOcc2at4sqNdk8mBTg9rjo3d}Z%F zb`Hb;Q9Jsyw!_NDV{wn~;&v|?*jD=#uXo;*l+7Kl^yb`JF7agV(`w)#dN9>(L>Bay z_5=yrRLV7cYD`#BHd{lg=t=Y4Ai}Z9FKp(qshqpK^W=QB)jy4r*T!1$cu#_mqUweI ztK=*c2j)O(9R8A=d^J4jxv*aT>Jmrvt#V(72xExZbz-wp+4<_)z~n2$K9K2m&uFw`4oAMeT|F6M2j;Eczbd z!tZ}pn>?rKXpauJ9a2BMauKqb>Z~ptk$#flbP$s`lK!jOwEA0ZhN=P8W`m(npI0hb zUcd$4ed&iyrp9WI1nS@Jy#^b;$Bj z_2yQ}`gKql;#0oiAIieYMB$qCxC?w>Ph`fnL)A~Y+R-0wM}uXAgC05SP?%~Y zf5|sW_A6x{-LStFIxKO36{XJdN^fc>!n{U_-LuZ)B|Q*X?5Svl3SZ7lT;iYAv>&0} zYN$P&%s^e`&J*9W{V1l>VVLu)(#awB;aLoia^q2)=fZhPUb5ZELD;hr4G3-1N4E*3 z@niMmt1LIQquRGw<)ee6a2?@6XxUSYYFy@utWYrlrW6$#C+Y@v<6D_;N_lvSwLJ4mE{BDH(GEZ+x0O~J?Ot+u;I zmsO;ct4vPmuXi1w@#@K1r|Jh5WcD7c599cKS!qvlsK!@M2+sE0t^#iEp5VxT+n`6p z(*_@7llmh7Gv!ekW{p)L;BEd-MO8%pscL(rh@)??RwfOvPAi^i+TiLvsOOGla1+<1 z5J9f&Uc<3-C_^O(+M@igMCpt&vF#4KR$KW@Ff^P{aDt-}GQk`e6>xM*vBPeT9){({ z%^$*zU+{f1^lRp8ee_zmS?0P5Sj;=6Hx$;Yz)$U8^0eLamA#rqPR624I_P{ZrjE5A1+-8Yi-8&^5i!dQ~Fwm|#`c z=G=~;ekoNXJ;#RLxEJ3aYizaAV|0FAI4Y-R9nz}Echi`j)S)QpRR~27trnar7yg10 z2ptN{jG)!9(B1$er50867y#t#eXxg^7lR0akyb|*A_)|RNR;rrf}shP6tO$t%1H=Q zS;Rgu_yidZrA{^A+_T^+iZ~H}B*KUMIe{MSu1&gbe3GQr&B%6Cdr@O}+Yc~mqv zY&l?3K}^X*EW0p9CMcVviNcIyR7Z|sR2LDLLbuy{j}$*K#U^Odls!V{E634SKNxt0 zu)R!*)5jWY9vx=xLB&hLJ5~h%{!lXxZd+4a$UW(&!Cjbn_R_@h^a8#OLP|uoKNC9E z>z!deT3>}d+<6t5tc{{b-Z2H(dSY!_|< zvx(frN7!|T(naDOj}dJ5e!L$`>b;8S9X_2dNuNYJ7DrEeo;JoDul=;pZwT z&JO2*UG%V>IbajHdlc^d2(WoAiA31_bCFk!ByNY-(N_@IcF8)eWahdSD89FwLN5GS z$DBZkxJkZQ*D4l4Neh^9{cXdnc_=-Zi82FQ455{X;C)ia%n}zv(zyrw+uIrQtJ}|% zaS>nkla-kT55iEI7c;dnd>+Qv)2o&x)M|dOk#-Fkw)UvcwVr2%-Is$ey3)?MzfL!o zK!<)KZpLcubUGq=&YTA2{sP~)NgFOdb)T|g04tk$(S=vfO0f;U447C|j@AR$W+UhM zNw@^*y%o?)tv8R#aN@gRrB9m^>>bmyiHNru-!1JFMQe#bB6&NwQ-4m~w={~?|E9p^ z7~Dzf`oW;cLaNWL=U{q=#{e3EVd0vfW?oOTZDz4&2T-T{L{O9HriUUfEu{`l#)vFV z8X?>4&%_dsYPd%_%HJ#5wb~%WhNH_z621gKL!KuUN;!y#WAvSk#7J6GNLEvDe4-01 z=^z1yx|uaYZN}t;<^qLE+&mWh0f28xJdqpguLGD6l8V^c1cx4)B=Kc zwoSzP!M{^1T01g498DSO0k0mp?D;)3MFh82BZt)kTWgUCt}=rZ1KgY@BHmGObU=}n z9N0QS(;yek_OGyBqEeKBY42|z=gK<55Udu&r0|4PE?lCG3E!Wl_16Qvg`-m<%=v5} z@bGIn9Xa2xQ!JsYq*6_8A@BXo@- z(c&IbDcuaPeKJVbQEkN+cmGTm9M#=0I{iKlQgO>klq02*3#AsgC&W&;@Zcl07>tP5 z5sHm3*E4>=l z-h70a31UW`U9+BbR|LJDEy#f;@}VZafhK?r$|`A-m~}c$d2ds@JqszRmS{t?aD#h> z5hlrwmZp%7wqQg{lfUO`zb3|FQPmEnrxEbNcYuGLUPJKcfnG_H(EWc%tXC*BDwF=f* zu0W>Niq!6Rt!owREg_87En&`sLE=WxE1WW*?)nb+Z>>l~+sR*{Ec3bg&LhGG{tEB?I8+)m3-(E()&S;Vk zz3#2sL-^-bdmXTuu=~*mi z62OI%yEsr6D1<}5a@>}fKF@Cu)i7iWMXrMbemhC#v+npk-m{~eh4M_I3J?6M3*?!E z9N>w3cHnXtZav_c#DYOaAuiGu^iPrc3gQr3zyMO)=QV^n!rZ6!m{+SxAsW4$5G@ov zV?rFLLoN#Ok+#JuL#AWy5e2%Q##2^zPSsW}ll%rNX^I3>w1IExHAwHT z+zdl?OCszUZ&lbCZ;pNA>5c$9gk)6Gv}6p?o7Mrqfm3NSUkc#BGy!mcGEpqUoHjLR zfFyEbIvyI<^Q27eGvVHqAl0DapM^%2Cn4IsG#x1|QmH3Kj-p`y1SZLSsIC zs&1!I!Ffx^wQ|m4pvLEc+4Jz`FtP8a1YSQ6d-A&0glY4RP8WAc>)E^|gBQl(^>xm{ zb%VN-hn52a@B_I2ba776wX7rzu$9;BZAb>&$#iwzvCk`4k^fpH@9a_}Q(MkD6%Y_0 z0|A~qJ<%%q)pn91t*zx#ICwJolDAEO%sgUeux9rs64t3QFXXvjYTvFzOT(}HvCmaO zpWz83$uh6bWSn6}#wNKSkh`m<3H*b;PJ-Z2aDz|d#4rp_`d^%6f?_{3$h?6>cnOF3 z7vz3N4A|g*1TV@eSJ{Lvm=Z-I?v}GzY{%PJgZ!bdZKUjz%R_pNKReCu)vpN?`#?%U zYNxr(bbVl18RcI~{*wcQE2@;*9n-WkKtGEwtOtnix)RxH7X8{|2YiEjqA%~nj})?j z9f9@vV8cV(Gtytiruy5P`>RMM2dt(+F!lk+C^;3@o|i6t?ggP1rsfa&4uU8z^8_#Z zsjYxlE(#-o0biK}z$>QIN#N_yh5ec51)V`fWV$!tn$Z7RZx|t%$u1VzFsp)ioR)m! zE|MQ#MTuz(=;}}VuRf|6siNy=D{8-_dUm-lxH3MO+Ea0xz1y@CJ?gl{cQDOHykSs3 zKHJ=|+6Ui8fi@OnB2==vwN1#I+3d!1;;*wCw2rNXTCMnjX z0a}>)!Ri9G{2!TuU_U>NbCYQ&1B^JyU_TyAo}>C_ZsB1LW!8a242x-vry+qht3qjPlgr|rmm z^UYchzixu_&~9OAWYU%L2&f@jgdr;iKO~F*t6`M+ic4dq#})ED9_jF>uM*{RA*|HLO{^ zcp2;ZP~ipl``Mgt_T*lxa^o-CR!rq4hc@(-i*g=e;=a&XkOOzWp`WNoY-f}Gqby?j zRJ5K-m?q{AVrv4@O?04+4zx#wQ1P3#_FSjq6|LgAKMn)8XH4H{U41As5{9m zaeXMXIV!TbysQ2j@SR?|_*g5=3;G%!Loc78{3D?O5xNI_{uS1i-?~o1^x7ezd`G5R zN^qGRnP%>W$E~Vei$DHp+cpAiTiu%v`O_}K@4hYDfAei$fk4(jzU_hXyOLfP|4T_H z{ZZ07ZTG4-)JktZ14kY53!BiT+_DOfe*4b&|Na60$>m47{Q~X}!}ilZ#%*o>_uv0v z+!7~Ov9b)?H5{WvlngQTgCs?#K==N5ife;iEnZ-+W?t0%kZqa8|HNE2WJ{&B{Xtgf z7?LcH_inzpt1qf;NN?5`(Pc4e<7pT6ih`js1v?;`efNctDb+M};|P92dH6%3Xs0kS|Q*LdaxnLu5@JT8X4hrCAk$34Qxl7%=tGPKK-hR$Dm9I$*p-uQK>91 zkGR+L1sPRbd-habCw3qeiT{+}=ag_0ApZC;(P0H6Nt&kcR*==s7$8;WpHF9`E^S@z zs7sb1+`}(QG4tusltaU%C|_g0`?Y?qovV{hg-V@l5P#xWWKfY(I;j%x2BXmArFN2< zgdl05RDQ z8<5xKk*}v4d)bAzbl<}mvR@EULfHY@-^SiiqaN{bz0j zO^=W|($3|;ijMNO-l!erzz*OIjUL#b7~sEvS!zIF7AX54U{7B|zlHAIgj6*6E?#A;tA{I>U)uP>cW(XT#FbGT3+wim zaPdm1?;KA)7H7jI|CnU>t3WoJLguAar{tN#E91Qy`ZoF?=g;sPkYW#awBMwbcZ2cU zip5ETjMq8ESA8`qN=EFKP*;SaDlk!1xt5A0NRPOY8DjL2W6&{HIR<02_ivk&gl32zGdO~xpI%r`%P~7`I>MX5j7+jymIzc?uAtMZWEU_#M@P$)hxmAz^P$|j zDuHlLCB7Wbk_tlUbH0lmVXE2FnCRH(PejQp$OEQTZ@`C171{UyPLhi+ZR2Moey2d^ z^s2~G_IIvuX;DiO@U&PL__P=@km9E+8TquRJ=#5~g~9YY?c=rQfj$IWymWPyOVA_!9qJ-t2)U7ino>a~! zcJD!k6b@>ypW9jM?ESf}iVW<$k#_wFtN>(h|e5%v_&^dIKRl1-x= zh?lA_{b@3r5l9ukGg_dT2>f1EGq)wdnQZ{$K~d+5D~Ov&o(3NU4-<aOd5*|Do((RAp-pPag{I&3?;fNegRUbBoPQz)7)fuOVE*M z27{!rzVm;&zsgb8fselqgibWuL_ngc98h*wJT^+c%9$N3UYc?eaDC2EmhJD2w;3`1 z)bVzh5L)pY*>%`B?LIu!?YTr*by1tU6dePC2Eg~J0$meFvla0$aYw5;aaa2NZS6sm zp*_&v%`Hs*;coGz7R}4NuHGtLHez|%<3~znXXTkSZ!?=j!1)(fS3PNKlY!dRrt^+= zLqg622V+7v4W?)wTiBbHLbvd+ePxSJ*HI@weu<9KPA~_L8%4+iFW%w0dCt<8d1ogN zY& zqr!9|u6K;G*oc&iF$E^-l$bJ*5la?gSoA6b*F_dWzzk)x2zt(&7wOK`q9@qn2sSJL z@RRUbF}%Z3^a9duQ-@8f4=-9kfH^cxyMbbkaG}(&_KJffCmhNpN#r% zM8Dd*qdg}Cdb*X>N$pOdQ6y9sM0qR<^e9@rsuew#CYR=lTBjmfwADEx+BKmpKM0ZL zUGQ3pt^?YVC6QgKAziXbP9}3ie?*q>C?UHH%NgEM_t^%op9Zcc%7+TCWv=rKtUH_n z+ELudF2vV5WdmEhv|C>A9o(QOc5DaMzXrDO*wPHG6F;`BM%J{~&_P zmv`M#s$7Ea){l}zMyF3jr;x!IH3B>{7I-EL@JtinnIrhIz%xm28i{X!&7cFA36!)j z$Xt&#^emL{CH&f_XVii6?ih@pZmyTee#4byZ{oiqAMt)Zu)ywIR&HP7JBa={c2fo3 zE4TeZj|`-H=?j1)cWC1=KLWAB_L@QndV&$y9Wg*us?ik%>cG}%@0N!K2=K^$V9QVl z0SFhXJ`|yjQuH=f^!8xP(1BGF=IxRMxa+7RM`IzA5i%Bt^G3OQe}(w@=y~Oi^%Dp* z+i@5G0?picZQ=Bpqx|tfKP_VuC!a-_x~sPt5I|7Ae}zL1elhYXk1v$9c-Q789OS=;sK{{lL$K^QpCDn=vy- zW~`TRUwX9~dWgU2yaebfC+KQpBdcCQ6N!;B^o37fP|IRjk;{JoBAR_A9@mV1BeWHt)heLEV%N>m&set6J7 zSNh2&k*%oEs4JLNWzM~8c7*>=0ZK={Gc?cJ|9LgiwffWD+LYUSFG~7<t|5NBY2)X~?&081VrfLLn4H38VgSE)Q zHkE~_Q}$(}>d9`46lXh~fWBDTU4fDMH#{=|3h$E{%?YF#+J??dH-~qOm7f(cQwX-V|jOaV}BdY0H72tu&Z6A+UJTf z>kh>ZbaU?w{^{lxyF~xx<~rptpL&7Na5v%gZav1GBq8kIKSU^$ z?mtAR48ZinE!$yAzwBtkJH%Xx)S1SBb*ax^B@y$0(rW)HjiWdfQW%jRfL~aJfbiyr#BLV`hFiUE z>W*H#O^e~oi)Gj^ZVd90)h@zXkvHLV$b5DiM|TZXNd&)Qu}p4iV3yop)(k`a5cf6G zBj-lg#LTR+^M&l1zvby$&wT}iOUAcvLKZj-%pwU>s8!sF-+<6aFc+mJUI&T|8K88y z5TQs+s0r(x83!+hQyj*kRB_PZ8Z_v_|CZR8F@XJ^2=QGsiut12Xo13w^k9m#8v7IK zYHL9>65m(uBiQ_APiUSe0`DzvpDwUbKRigVLpVcjUmX8nk-I?7@*1thzI^Q-Z3tTpQ6P2K}247u2sfCz5sRlB)r%6_ie1SGr4W%cgdWxP%E*x2J z`N@8zgzcY+=l4NzKcAwn3|<{F$)eXurlkYu->!xZ*7_g{OfoK=Eb%ky5Tt7AE2q}$ zQCw2lE(W-?_{`9ED3wZnKdSphiBw-4%%lQ-AXvATzbo)392WjbGS z=S*!Olqcxz_xHKE{7AMw`CX6}AB7#`f<+Jwd2I8CAko%}fu>?e%#+XWdUSd2-Igmy zGvJ}@58|>Jcf_|a?2p)88Mpje9c}3fY1*eZK->^6q=vRTKe&}vex&;YyV>so^+?1u zef6O0zU^Eh(zi(>cKZCvGd@gc$eh9HecvVchnXYxAFczU?DzQ{&KxQA2uczXYKMHX|| zh;4F=E@RkMz(`f_hBr(N?aW!5gDy@@lS<7+Z@WFoO%+1YM{uo!_@A$9DDt zHE>u?EBGodlt$#SgExFd@DaNdeCv-_5_FXhx%{bQTbq-%=O-G0d#vs$8!r1w%DHz^ zCqK7ZCEJm2gG>9x@$rJCXB$TGq1t+J@#pg6W3`N|u{MRNFO@}y4Li3w1Vs|D1TJ!V zU9VXkXb6EQRH(wYgx}%BGtiL*wg#)Po#SLWl29s7Boa392tLCnavZd9OAKRhSMAB= z0MP)~AOxR1zU6TMdw)x4ut(*n4snoRhC|rrtG_+`Ix`f=syW2y!%ha#NPw9pTdEkj&ZVO z9HwXwa=`xF2eqN=^R>^YBq@w5vlJv5ey{X-PadmbQ3v`e5H}FLyn#`PLgKv5@CMYLb?!SK{}b6;kov#Me-pZbuW;?> zh0`atTeiG|x!jY!{jFfVx1=P2Uw~Fj%0XIL6t;a>e}#jrSg+uzr*W&!DPAqU5M7uC zgWOjQTc8i45p~%u?k^AYVa^xEAy(GvpOI&3>#6}4*XPhIH>q!eip_$69C>w)P7!WH zUS$!Gy88A4t{j-d6U4)7;UnZp2kBrZn8PG$l*#u`#bo6A_R`&&W{(D5^G;q9B0)=M zlm}SsD$pF_)D+rNm+UxQb>J$>GbkuexXz8O0%jCTsQ>0s{j50GyB^z;cOIYai2j-$ z@Wd*Aieg*oj`*RZdgZ`;3+DK*vYeKA#_YO5*h_$_!00{|Xpf_yr=WmSEz6N)x@Kz= z!{=_P6&hbKQ&M}4AxBMNt$YfxkD@!@cudDr>y=G3=)M!No~(Z)MISHf4W6t+fH(7G zKBd;y2N_IZq0cp8M{zLzkE&d}tkRdavNn-#lxzQ}`s>GaJ|-I?;HAurH?II;8x?1F zwTPEjic2)KUWq?md2yJm7-@QAahM8H$VAdP!t;gd9Wa4`L_&`EMlu48F9@3N<3LJL zz_WzdZjKv|0@otzT5u;nkG~W!aC{o0`?4Ji!uoA@qwL%i4L?WxF*9y???>>bKY>Kf z2*JWNOf`8^T&e%D4woZ(ELq(YDdzI9dac32l$9|2XLd(dht)Nqo9Fdd=-J8ND5{9- z;;~Np?_sB7kT;|r_tiDjlJT9&XHLqv2{>+Ow6C^duFu6#HZBa$hkTujZ9t-Bdi`5u z)txw2C$Rcfn>+WfZi>L~Q(8KYL2v@T+$_uXD4Z6;k|#5ZA4=V@X?{TX?Hs^bQ{RSj zrIV7CEizTCb12hHJLEt7lS=jWxeJ%Jf_1*rtiJ9y&FBVh^Q%pue-d!`+Y)Ll;eTh} z2G0H!L?idi$1FM8ET(A6Z6FrvX zGu|h97)AKM+KKdem`96vrL~XuegjwQvwh@Or!!oI`@$Qf1swF@#Y~*NB0(fKj2$Dh z_>V^1fsirg8^{8v*{2&_=o*c#g0>;ozBj-7jjnbZ?PaWs%{O#vx4P54;JA{{+E(V9 ziA!Hr8q+V%hK@D)nthzVpu{Z!3Z#{#)_xq;3%HYfl!g#gOsc>_O8;yA5>v`1a0XLD z|B7(lJgIe9|7i3V<`qdj_;LerQ6paAq1_R0e4JKSc#j+oQcHok^_hGs{FwSh=4pL& zwnvd4Hnjq}m+Rhajsj%;Y>#L**;k)bs`L4eDf$+>k>3_Q0(7L5IgfE!D3sC{zc;*; zOf3u-oDzLe9sTwb*P>P0bcDthXBqs7bew;s9_Mt{*(dhSaMrINC6zboUP5a42CHx| zsh!v~d@%0LOSJWfF`m;QR~`XC!;?Nt%SCK=j$KnhZQEk`V`6R(O2iO#MzOSJcW5Wl z)>yWIIw13#_HuRIdJuks=~2>nG8aNoAfH&5M7MIf0TKJ}Jov|^ya^R6H6_rEVS}?= zxs;u6B~`sT##rW(x*~e0dU#>IYl};++Z4)VVVDlBLYt4;H^01>FjL`^NBVv?`m9*r zWs#J7ydgB=O)2IBcMA`2EPqXWX+BS)-@H&d&#F8Oid+8f^Nkoi!PtwRL3j-;)!a{> zXWcU4+|8pZ8#OtWvdA`bqRE=}8k!-ACdtz{48m#iW6-kMnyacF&&Mmq>`!jDBUdAR zLg+2DwvtM%zI)W1b?ix6+bJ#)mTBX^Dr#xtR1Lg2*NGQ-v1ASzo5I$C zS^gL+p-~+RjiYW%UtX1~^s^)?ir`<@d#ZgC4(A=A*#sk^Kot7E=LON^o#M!u9j6x1 z#?5jm&!K;GvQ#&+W04t4WPa%E(l9CgS)y#i3eIVz?AOiXZkh=})1-DG()Vh1tFLxN zJaLCpeBBXZ&CWaf-btI-Be$3Ok*nY^3d^i^ly{GXm*NvD30#?9DCi$XO>L>y|zL@h(zHbIbk^+bP#+uDCPNnc=E zAlYRz$$+AI#P|+<1W|nwALI}?buDe)wh6-dm2y}BmOwhRcP*O2GM}y6nLpn-b#YW# zF&WxSlfq)ir7n4u+3iXuNsxkQnE)JQs!&qJbNrqm3m`NPUc1D}e9`LIDBjhirvU{~2Bl`;Zgq-6%x?)U43jeRnCk4Y@KxS_ zdxWTuNC@)}9MLBvw)S?!d;=fA@)*@sab{>0I-n)>VQ0I2ApyQh42lXigY+z=J`O(rXW%sja}rHDYk~q%F+<~LBIlxtxaeZfB^I&NU-LnEWD|+tPuK^Bn$3g;PIpZ?rpZ2v}WFR1IpuJ~) zy7(7Z^J&nK)1m(%$kf+z5MHW62;OE{M{4&doBpC4Tds8T_A0Bv*=rkhL6=)@byc^Y z_k3v*ssNB0ZBhsWsy2|NMAXYW+mFuFV3KZIG4fAQ{>Ru92HZW)v5lUE;6W> z3ns`zRV*p7oj z_cR*5F8ydni7r85=P4fC5H5#scgkAple@`Ov9wR}*G*m<4DA5sZ4KEv9n0|rXDMds znHH3BY9|_XxUWM-znF)&BYR)_c<~jkbc!?-=ff=}96f}nhf<_rMbyQLY_Xakh-`)YQzEE@-=Rbv{)Vk=Qx7Rc)4Kg%Q{0J#@4~FXiDB?4;Q@$ySIZQ5%JIqzc^TW`_A+ z+ZT1)UDmr?Gh*j$@2j+3i;Y*+$Ld1Y<@Lx|_|2r{g4R3uo~{Q)m)xdp-lnPvXE9J~ zd3tk?A-nLPNtF6dzVe6Wa|^AJtu~*^mxYQKsnxICX>O&+<}KP<+i5*Vi09APG^4z( zpSmtzipTrevQ-q#*QSkF-f0nBSFc*-i`OqUwCU##@pb(E>{NFhT<}qT>xH3-U^P70 zIoO&_`A5HAQ9#`$w4+i}wE&+-qz{~3P0$gpf7ht^Bc87@>TrFDes$P=@yb#p)s0mh zT!@KH^j9M_JSaV%T)wp4hy{#bm!?_9t`aX-(LI5u{dTgnb3RihR^u8OUPo9m<=PSV z(>)eJU*!Dlf&1Z!qpE}sX>x2ruas(xaZGzdqdy7QpYQFvSWy-6i!EE z3r5MLT?eiEVKanZ52-;>OI!`7&aB*|^)MyaX)aOoR;)Pls~r*x)Jr}#RuspL5s;+A zRL{Y9?WKqJq%V_*4+&(?J!x5`d=Qz=pn`n%%UB%oJ7`Vewvl78WIvmWWGl88@EAns z5U)lRp4IR=puD@AkvQE8I_2?kMtLN2`!$r68AI4unzl{_mR43h{!8JSs*fI2E6nz8-^L{JM-7BDjkKac9IN5=j5^LdYlg*KpTVxtblsU<2 zBE_r;$Ed&8a({UQIWuQe3TX)X8_gCi$L|9MDvvFlx0|tSf_T7Fq#dD-X*%hr;K??C zWX}6y@Lc)Aw+6Tv4Ck8Sj$^t!A51*-p;PbPyDZt_we+-+c9n~qf^!;@E0Q{73}6m< z$OUOV^eVgB_g%IeWTie-8I6=ZqRNs0&O`yYdSt-h_H$aXX*b0h z3p-tG)KaqX?Zg?$`L|>`;rlED7Zg7H2VGE8WPd|h8wNaWs8NEuF z)b|#!BbqaUk-Y=vkx{HcD<|1T$*Mv(C~jRXVjPse6n$HE0g=irPWu$}4t?pGUr1#**21Cf)Lt@KGd zj}Tq=#D}7V44Ufv-KCf=c`D-*FP~CHYD2h?SQC@$lm1+G?7S>GT?gp1{j>O0HEy0Pz~x~tNG!>^J$`!jxRVQnthh;P z*y(_(7&IR@5zJzJ@WzQwXuYO^;`i$+9W!Dn^;n~<#zgeS_k-(03PMJzeL=ZV%lDcewYD?B~*M!)|L7TwG`nF0L1A4F#hLD*; z{h3WdP$Njn+5MSCeFK<99|f60>C_LZB{I4k;Wtq0|NqMu@{94N~-|LAJ%>-sgJyqKvEKEPe3C7gDe9H>+Ayv9#kYmIdWU1uGzkXFu08Ye6sVyHU9400oNE=)hM<2cn*6EDBg{rt)> zs@gE3Sb#dh+oIj{d_qNzD!d;DAxiNztN|7Am>iczfvKR@IgtXL#!MN-RYR=TKW8rR0MRB97GCmL3R^579P|=+T4O3hz!=x(pD-pq- z+eSSrPE7I;-sOgt;b>Bfq$SP@Jc1!2E2*hIfuQVbl;zq-Sr0=4j;tqQvvR4o^=cg# zrY8sl^LFRGIT13|@`~j$qSCz${M!?bssJxbh&>P^ojJfSXV5*Uk<8*xU?Z95 z^56$hmlu77;rRL7ps%(ep|k%7;D+| zO13oi30#Qnkx}`gG8s|fdi!R06qr!;6R7MdHmF)mtNzPS;~Zco1YXiyhJtwT3wSjf zYx%I3p!I&2vRQ*St7D3^GrbiYl#`!|EL z^5d%Gk5S1wp?4o@KtNbzy2kNA1F$yCGPnIe{{ub?msHk8v4H~q3dGYtdO zXUch0O$y2ar-2AtfcV)LW}~bwR91ENW2GcFA5N6m3{7aAFEf!3zM(8NfMGK8t!wy;D6H}qBy_eHBs+|Jtb;w#E}xv)f7Eo7&cFg=y>_JZa%^`pgL~ zQyWlP=LM6F?gOfzmK~02i1F6~iH-Ml>0wMe8kYBS0u^me;fwDNLgH_ai4);O)8nLN z+%QAm))4l*93hSEU1y!HM(OCNj(aCOP9H53S(9^;Ycw2K7J_c)2j+T?VB{W*Kq+S& z5oE}V2KvTo2AZ`$FgG%N^-^(PbWAdzwJZ0LB0y3l&D9DYlso;FPHF3)!le>fbR`;< zb!A&#`@Enm{={kkj4A=8MWJq#Gufg3@(@&6KG7#}*H`AJD_7V8Jf{N!i(Bi{ikb5d zKRwz_oAEeoT~{()n-_7k4)c}FQy8zAS3S2kP@1XqyHa3Y5ZgLmPl&6h@59jW)AY95 z9gyRq%BZ~fxypc>ohC1?nQcXS(5^?K?<&JZz`jOm;X6Q9iZ!AyR|*1{xx6pxGiSq% zv~7<(y3}hP^W{wY<&%Qa*3xGSY2Z9f?a{zHZ|ig8MK7x<_#q!!`)(y*b!q z>=hdm6%#4`&2wptP4WIkkl}mxT`^U4twOU-ZBPlZ#3qcyBi`FSd6cKBna{P2GHw!VQ%|N$jHjHl)U$|3G|Mx9 z??E%;%3J$I#Ga-H%Y{8!-F8L?PWO_03%VV1-x0UilV^TH5od-Q9m!K-%7n@;q06aC zc#Xdmdz7hY%J9BD*n8reTs!KTj#uIefLmx*zXyE#5PAP|XLUBPr{2Wqro|%xW2urra%(!22#WBn$pc zYP4$qZ&E{L%HogI7?Ta`&>|_wxIejx0R9yjwCR}WAte)5rh*hF^^G)!krKFSbw(XfT2;z8aCnht0p4Fs zh|ZTIT5RgU@_FpW^PP$sElB~_p zAABHrY%@d===vFqW!caJPT|~|+rM|fI8kTjer5sPVM>9+&lJ1Z#_*B9zRZ_@BH`J! z3M?%b@DZ<{OYy<{;u*tb99ctP3hy2h9w^8&WGVwny9)R?^RU16I|s?sY_T2E2R-l8 z(FYTWBL!TP0%~_jLtGw&?xQkEMDpjI+s{O?V)1N?R5a+iAEEn~y_urF3ggzQ)hOf! z?E5_NwfMf#es-|Wt9!Lvdpi-JU)Y-B(~=QL8w=-qny=2cuuwR^N(k{+t=NVw-SQ3M zkk+}(REecJ6E9Ew|Ucemp1 z?o!;nxE6PJcXxM};x5JAwNRYm@}|A#o|$K!Ip;lpB_U+xw-#Y#U;Fy({VgmEb3WcZ z^SJfyUCD?#_^#R7%GpNi`O%+~tr&o-%Lt|CQFdh@pO4f?dC!#}z{9ehvRR2XmnWHd zTc&ASgi-i;nM!U=f=i&s!gns--**llPEIRWe6Gi(5(LW|GG4tk6V2R&GQ#aWvsw#z zo32Oebi2ych3Duh^ElBShj=}BguOfw7VvGq3hW_i0pXIS2>d}+$}9A;!tTBn=s_ed zg_Y^$mpVNGtVHP*&p`$@B-(j>TLJb7{s4Od%7I_C7=i2+IB}=D>)}lx%Mi6%=s&v+ zXd#~?0Cu7n0BsOfz&grx0aR=4w^qqZGESrzWWWRHCB!yO8^E(jHLQ0@JjOE|s-e#8 zeM;!-yj(6I2|!&1l60*VVEc0`0I7>CAJR)2i{AgN7hOm|KL0d(Mj5&-4}{|k%#M1U zw=zqx8?@&zw>92qu!LFx@PKytL%6?$+0fmhvOs2$Q6@ecTWhHwA2%MGVIP~O>%9B> z5q2tmnQ~PSgLCN$k)le8er3S0G2L_Mq@I*6f)!Y~t%j=MT94)7&S?gwIM_>CvANyr zl|D9ZMIB+5iHFUn)|*Dv7!McnH8AW475B5p5rVR|V{zQ0mW7!g(qnEb=_v>Z>XB;D zy@sUi=PQP{*Nk*x3vjslpQwp85ewoTcJwFJsSB+q70T}PCjnm|)mc7bsI&B>$HkvD zu?FBXzA-Y=VX|BgMTW4P>yIxt(UDx-3&kWsDMO|*qb+TwG9%1CLdal|&4-weQLgjS zzNhS)quBW(e|D%OFThWYBu&(3b`K>dVbm(^Hc_qGUGfXyZ>NfMUO(>dfro_Y!G-Kb zO*%MD9vI!K+w6}{75{&*dZ zDiT^1ID_*|4@B|B1~jch2+&nY5tMov-m(9*g0EBc00^-A+MtX%=dBrrpvJB-6A`k{ zK#ai0W<z@_Q!{S?j^y_hdpAFo&y%9eIeN2SSrACxh}F1%i#meSW$Erokr3RP&|J?f z5twvY$?1nZ|DR-bq~Sr=q7(0&xut+RrniaWpa2aAqlNgM0kdqi3G!X+$guIiZz8nj z6U|PNj8ZclKo8ZHinL4Qnei=k?=o0YH{W~vtN#%*UEJkSs3q6+qa4sgopJ!0sO^|X zx}^fGJf|O7ZrG+j(VwQGyI|SFhnIfOk@@0WMZqO|okdjTa2VgjORJXI`AE1BH5idS zgY2ATz#7=1wY!!~(Y}Vf+4Pt2ka%WF2iltrJoMkH?#Kqw+_F2g{wX{f=(^8B&+h_V zwW1bUl9|VHK!m6NIGU0vQk(Y|x_RuzY!C?L1ra|ow__OPIn2~P6$DLtL?3)g-_UhD z=7?&jX0=3|_UO0qaB}h9n80{UmDE8nw2|-jWI`5{I=;KBaITI8G{7LpG7yfbA)$b1 z%NsLApNMGTuXJ|_=*3wqRJvqIk(#zJ*4WBm4+zQss@hoIRC)L>_NH!$FrRvrZiVoh zvxoJ(xdvXvFLX;Fu7=LQOzk3(z6;)cVYpV;B_Sa`B1R(0`_lxQ^4W_J!zAZvE@5f8 zBpt>D2|ec+X9wD+|6At3746B=Y2IrYo6FwlOS0)DSk+olNUp|g3eMv7LIztFCHf3_eXP(r}DVit2|>6$%b0iY(#e7u>{yR z3CWfrqmWHIh>wti?tJRQe>^0qw6KlNpw|3+ITtC<|D z3H$Esl*%Ay;dzus*A!)6RY(H+%k+9-H{X+amM0+$qLb$3oa%cUKJ2!fI0NjLAI#+AW8)Q10mQyU8UaYdqGtB}vX z*VC?bu?V5q>>0x!B$zP+A7a{o_NLtRr#8PfZkx93j=2X9y*v#D+oLpc_el@Lv|^d1 z!y6?F3MnFB1tr;R)|vn8QSjcE=f*2IR=S9nW2bB)>EuenetHH6+!xnd!| zR_H?QNT@_S7RsRkZPyqcwGtP>>z!VotD6WY}s0fmD<58FSx(X z!4Xk>g>mGjJtFvw6rsyAl7~?e2ah?YeEb&6_bt6B@s$$b zX8Qe^lC}Ph02zWOb?S%I>so@|Ye{JF#F%-`BxuMwUP!MeTk5W&XS(Iv^eq1}{&fNb z52mqRY`s@F>oGyVHmZdU{{WonNX8vp(clmEruVTe19^A3;~%ys#eUVc3X8cYIZ?B`!W-q65$?b|^u^1A&6{YxLyIvcaeLfhZF~7sWe+$d6ze9zn?}er_ z$;3#H9)BVG=#5f-5LUy@%qy}*C)8+|*e00R%5UDrYkZC%g+TA>q`o>sr^RwG1+@Z7 zUr1^57~U>>wwoIp*Uq`k%D(Z7ZLNuIWxNYrstc`r7>B^s70m=qzhV9J+Mwwy1C2jR zTsg!xTo0CSLnLUAhLi*Cw$%X-gMir}0)$g?jgj7rMmi5Sq%S0Zt^=Qz7{oXE+d0Db zVB@kI((dS8VvU*ktp_PQuzEW-(?A^T#oL{UL9kcZHXdX6kh^Ht2zr zo;7VZ_6e~LSs*Uhd1|Izrbwl3-`E) zTt?+K`PG;i{t7hVO^E(x66fX`#p_;Y>*gs=N!aP~`>(IDk<@yVObBz0VW)Za zm`RxdoV^rerX@j}A&LCPc@mLUrl_5mPh45w;wUe`cV)GQd&lk?9+qgG9EF+rj2it} z(k*RSXb^t3h~CZ3OtX*rzpZ!ZevqVAD5jOz*}lV4u_Hwd1otQ|TGzO8&*VW4>M z1yeP?ANG?9_<3c&T@DbrH9y3v>^H1`HWDt9e0x|{AcXcq{rxLpV_s={I|J{F%K$Dp z7aI9IPYN5yldi*+U!_Yp2y_)|&glio3zj-D=~)fH5X2H5f`(As_hF{!i2?rUU&9(g z0q>}Rdly+pi(3g+D$`oP37_EXyY|BX9q#Tj#>80^XIEWJTEKciuYPEdT&_mH<4a8g zSu4)lXN_T4*Pv(%B(Rnc-QtIHlMWWsEUfy;>SHs{`kBy#mcK2_aZr9)!b~=%B!pQ z((|0_m@pF*$1DBDd__TC(<1nGTXpt1v*q1!Ul*zdvb!VB)W0eSnGWs;)ZTg(u`rO) zUp+eIpu}&OJU33kZUM_v!9%((Mh&va91W+ZPE;mGnB_*G(ft^(qNow2#R|7$BZD2J zl)aHMECVr*Zlz2V9$~*6S!*P!?=>n#S^m0iqm4^BbRI2ju}3M_?M{i*elKP2dSQTd zsN!Li-YHB6;65@nyC5fLN zX%kX1L>*E`swW$5vot)^hcG~HC$w0T!A+=kbo(u;ux-?GZq;Y9l;Ccs#v;|vg?UaC zJqgioLE|uq(}}sBga=IRORy?GM00#}e)3SHT3P}{*WF>Kx^sPcWlwjOReO#2ppdH? zKWTG4GFl`$ar_1*ja1mVWfce57YKEl9!-$N@IcH;^bfNkrd5C=R>se0rM=pUpFW$L ziUA^mBH?I1>es0&Twogp3>ubvi~#zeT+&Uk9OB0z4GRq_h;RCvrVyX;{OS%uu6ar<(Y%bs` zMamhssDRHB^|ZU!P4d<#_O3I!tZ<$Lh-4)hJu|YMxh@~f401|_$TZkaUb)&}cy#V= zwu>8`?W~lA;*T}Lh9$!m5r#kIWrC0=Q;;q37fQ}3bJ9e_0;2VmCZst0spRXn%=Y=d zCKmFLwxGzMWUGH*gwdbf{o*SLNVtOl#?HC7NnP+h$Vs)dgHVDfNWtQ>GXruHzp*)} zoe`NKo2xFTqft{n$BE^x$KY$<6p6IEfv>t=PPAwiX-YrhoRX}G#<6a_WV6 zf7yKe!udS{+0p&S*Y7D5xSxrB@NAgk9;-IgW6w@W`C+_9cOEAhm5E())_2+Ghgf9} z?~CezJefKBA$D~mzH*hc`<-@1TG1`J1ql)tRQ=?rnb|W54!>Q+aecsgu(h4V!*9Ro z0e$F|AuL|80)Nl?31052Qj1Ef9FRqr2f+=p4AUb=n7f&l1wc>$2n+gQ!$Ew>{083) ziiNfOp?<|2NesD>Ky?=&H=e$t_+J#~U z!leYou$DXNk9WSBH82g?(5sZ!#fo$MSh_xFQyV1A)N2E90dw)&@J#~k09l4tt3G=! z_1yu$K~b?{B9L}d>vJQa_@46w&3BvwuQ%Yg4X@z_wBbXEfHu4d+5ejj zKLFgaK61ebQA*(iP^%LuLfad=pPTjZ^-&BhXUL8!0LQmL3QFqmASIbywuYX=4*^P% z{0&&g+i|=()Jzblvu>-@Y;=%^2g+hbmL;$;ik7U*{#Yias)iJjz5It9od%#`lsp{S z+if!R2VbQQ)6r0p;=|E?(=UVnpkLCX9RGq}8jtLAgQX&k8Q~5ioi*!0j8wGYs%6T_ z>ZN2PjzY0EkfN673_0=^=mgYIgPyp@XZqdp4VaIJ`;6m2J*v}eZxk}@nJula`y&8cgd zC+jALGQ9vPQk5@ttrj}=a|3iXAI!>U(14Qw>ZUcT+Lq=Rr4QtU_3&38=ekCpcpKzb znl)xY=UWnXi1xQsZwU})uGfqCDpI|{%r<%KrKKg=j-|8Z4b$(?KnUw+Q<>ii_6o}OX13jDT1KyJ?y@$}2x+^0Nh<16zw@(M|b zs&f&f&p`mx>qK# zYFm_M+})a)d%h1sP$85EvkZG-IC*j0gZtu`gOsEsVPd^b*q-^szV3;4^0OE_40Wpx z*E1OjM_cn0Ur*8scViow5tzuMTwdKBj1IbF4&BxNLHu+c_-`YVbr>Q9j(Rf!hvHE= z%5t4$mgm*1_!P36(6Oq((!15k<1gABrRbJY8w`rqw61|x#IABAKjUoaL2XS#FtOe} z<&G??4A|fV9kbDn-|clt-qVf@Pa0WAOBZV8@dmQ`UiZ-%Si-KTiAbZG%xskO2)r8Q zLhW3hj)^bD&mW?Axrul!l~udt!7WW^NiBO*`h-i_Z@(jafo)TXsKrB|fED!d$e8b= zPDSqh7!!NN!Au|y$t8>SW-M*z{OJox{w50^9%=kZ%Z)f3&>O#M%#ivWk-w1AbNgllK7? zAn_p7n_K>k`)s6DBh|l2KSlqI`#AlD`xw*qe$3h;8RPXy>vW6w^;O_@V1-BRs~H?5 z(VNkEa7DC{Tl%^H8v5)+o{+F!Z!}H>31uXcq9V91(|W=MwWGpBuM?!+C{I|wKK13x zVJ`tq6O89E89lwwd-4lTIcnR;)ZMt518@Tk{itvYhgqqBvRufOMNP2WsFuR0rZi-V ztBZ*&@6eNtDw<^EpyC#eKt_55^yBlCVbelI_Y~-i z7&9lKkjbHkC2#uQ@U{8hlPvtnsW1b<$G%UxoIuN;cT6Rob#?H$eeoIb*O>jLp*}^} zVE8Jwr*RSrEe_c%KU$ETD~gL?4c9PVAP-&$euK#ruG|>q5|_OG*$#e9g>tP-i#jf7 zkCI$hP2yv;FqhS&1TNWCo!F9gr&r9TxC&Q!Db4VAbGlfmkl08#e{;5Cb6i~{c)iZD zC{y`-exOCq9S`}Gs1qA*6cMVr;5$jUNWwjUj`T$cHWVG{w2Nf1o_>YX*hD?n#!!p- zg#yI$K0`c@lrS4z6T&7rM?Ymq?>dbz`hgIXS&N@B|6RN5)Aheg$uD#j$C9 zjrbM>T4{|ltyV_mG%MY3 z3&w7`(OtPCXIQlQCDC@sNwt)FFg3+GJ~QmJ`r>olO5spetx3Mb0$%-;SROij=czqG zrbI}RnS~IsK&iC?ZB{a1QuxHoH^=3@JyVv>**&Xd`|}bEp`hNPP!o#Hh*uRW+<^(3 zO!>4Lie;rC?KGyQbvBo|_W+m%fGmbdS&o;TgRB)1#};CgbtL6aiqdt}Q?5tzG z1yYrnRr2s{Z9cX%GvG^hiKw*BRi*Nu7{J&4atH2%(Qfz`jtz^GPxv&_NZa{} z3;R!x?6B2XR)`~IJd}dwdXB$Fz1)*b5Dyo!$Gp{xv6ly z$g9D5ZX6sMI>k5`NHOMEa|H32rWwofBnxxxdl!1;3CqkgKGI6ZG=+a@lwVrdv0)hc zxfM2>wrvym36xLnx;9?%u1%+ggy7M@B>P(LOELc8fX}UdB=kp79vI^fsWo*ow-4_^ zIYRF7WqL~*hqm!qiPl=A4pB~EB1!vFlWW1eyMDpXbl0;SHX?{E^$8pAzjm#0UuF)V zh93xcwV!Lg^?eC>i9C*pxg9pUo4b;Enk&AC<+QrvHJji{rJcm;f2NSd={G(0Za=QP z6eSk%Wep^2?!}gjxhNU`{=v1im+;3aci;(#&!tfMOI&3Jjo){m~Mqet3vKzwT1^L{k*;h;e7zU`{hS zlRT_d42`=K)LGM}vVNDlKdES{Uvhu6zW0=-CqiUga{6?iN&$h~bo>OF<*Vl75&<()>uM1l(OzDSWY`LK~RMFU8QDpFmi2vwGvRO=8iP1+Z9X7p?%F@!9}FL66?fo>?l@1;Y`i2r37j*(wCX zVV|~dXHSgf#1ACXeDm{>0HRn2?E+WS1|9J#+`hn8HDC0GRS+8Do^Ys{Jk>hG9eS&) zaCeF&8nM4o9G}k>S?|oz^7G}&Emu;#B~Sn^kq0&6KdOs5+~w8lJh-CQWeQnDj`q~1|E!} z`*EHkH8e^T=pv|v9P$Jxht!k!8TQ)OVbP%>HmITTYRbckta@~O zII_4OL^b+2@un^hMFMEb$Pcp7RIFlL)dQfk@pc3#A%G26ZQRb#c32RGFOD4m0cM2+ zBOaJaN;94&2Pp{jy~1PuA2gDjt%S2q?%}^>d>U@2)<0x?s4U}n#F`;U=OnD|5>4@E zZR2D(zO==1`YiI`iJFfUs#Dte+#!SE2|MH8E7Z$AaS`_#sl)G_B|kJHRbk`p==`OJ zBfbaCplvo~nv~tGS?VcqWal`${!0%x54MOh&K|>DG-FrT(wQXkgPE2wZR+XJTEJpu z!e^3IEvB**)HBtu9l3NY9dkuxZ-BqGQ>`iUDO7xqe1M5z!+Ja?G1xM6^Ww zkMdO(3BVIs0=t#90V>~?|5UzTlsMo*o$mKm881&@RcGN$8=DC$eNy#|9RFzFdhA%e zZtgzC%(~RHx@9u_wm|f6cvC8LgR$yCSCZ(>`|l+bv%vsNpkDOUqg z!0;jwe;=i3o5y#`RJj28z&hlOPycVgySdIk<*&ohZ~2>i1TLKS=D5EdCwt4G(ot)6 z*ThZ65K*xD4cbCT#pBHMmbE%}{sU`~i^pFmN@&}EpeR`XM-*kwn(Hs>z3%^ydY{^$ zxXviAw{rBO#L)YIn1`eLn?Na4{!ap>bMRjT$|NpU-%RBU?u<;DSWI@Ub(oVF<}rh1 z_GL)vnxRkoX2+xXzPDJg#iiLQ-;RbUQRtKLSLm2Gp|2W8=niC(8-tpV$hPYUD=#0BkZwaYP$zuv$6=#3Fh+5Pg z&`V&Ed;`4VE6P2M??-8uf;w#(v&En%hxQT<_)KirEu^NGjKYWXY3JpE7z{@ZdaMpD z57+fb4OFdtPFvs$F~mG1btFdso5@4-WcMy&>rJ+J6U8v6iBT!dD=n=&Hv;qs;-lQO z96mnQ($&w?#Z`GwPHbhmtl6w^b3zQ2takf5@JIWWIi-*L<$x3{X9lt8qe1MzrF!vz znPLWx@iKBi2hUvW2{KxA>`*n@d2&i1TEv_2}pftVN!D}6vaQ${S=mv?6ebH4Sy^Ydnb z#ZA|`Rn+b9k@Cvb+_aTHAHM%lD(5`IHGKdCQaFZ89#^NB=*#zy-#!vDcw1w-T_t=1@ubrObgRDtx*d!G-2l%GJkPRue1P7yKcM>#*|RIN z_xv*zZ!Uv?UWF=^%ePOv53cPH!Edlsnsj4IpRXQk!CG3+;i1S4UI5@J3;_S#Cn8JE zCGPQowHxUy{q&ZwW>)}^mNfaL68jj5=&J3_{Y`I;E{N#OJVHkY-6;7;Aq7%&eg-M}j? zLwN>ONWcKkg%qHZhY*l;08vQjT=oNFU19)beY)ovyIdulIRv!8e87XSk-ozIAV!I0 zm1yb&2HoNW5@_@bEO0yyBoGYR)fIXP3>pea4*1hQx1vwAM49F_bbfZdtbY6ibu5@S zJPjgwP-qmCPH2?pTci2~ODpvl3E#$GR6NvktThR~4 z*63YDW=zL@Z0K+mA5H+xSEu-MGnc)P%j8{v=CIR{*n!`Y;9^e^>u$cOAOfwcI*hIQ zOaY7x>sBI-pq4*+1tg!kDPGC2i+ZWIl70?MMctSM@KYP2Vwp>ko_Q4Td(oKm(1~du z7h@zlHrQLrHUAQ8MknRc*MMLmVPvs&rL5c(ow~$_orQ0FyH(wvD!Vt~oJ=CvfV@(6 zddgs=(i59sO zAZ<^}aKnnS@HmNA&x*t^s;(B~D(5gTEj5z_G!z)pGxO z2oKkut6=|KQeGANM?@F41>QGH%+n+o-BD4_3i>_Y@vdFp$BDez4;%st=1E}j-Q}NF zYnpBLw3Mxj@E+*494KcJsSY~AxMvm0Vc%Y~YDtnodI=+0*+Q{OaSEGpmt5Cls##jl zA=&U)$hccne@*3_P1{^?tbnfk@_g{CxW!gqlvcpSE2-}aH%3(|Q1d#@+A)Fvc4D?P zwcicBb*91Z2K^+g`Dl68S>GSp)Ei({EOX^Q zGXx1hCAd2$xZhFv=sW*bR&vqtC7Cl*K3H3q!JKzWrm`f>!=jvhpR#|ikz}S{WjKT$ z2KGxGmk2P7?{_IL7nV?_b28D@3`*r)LveZPkLIprYj~{i7G zoTk%w*2lIn z#HQcS$n9CT+9}Qetsmj>50EczvQ(48bH9nTXc|l7e(7^r`}8xpf|*euvSaY@AKGm71by|*&R=*A){`AUXo+A6l?5vLWbZo= z+R<@UI+gn)&T?izNFqWBda$(KN|r(6-|DOkTj(Fa zj1LOx^Or3pTG_bY&MYBx%?NeQ+TEFN1S~h$uhhqi8K_sKc4wZoed-Z$~yfQ zu=9V3BX(8r5%J4qFUGlz7p?rxBYHNXB#`|kcIpro=zpepoym=k@0N-kSp6-{J}dyG z+4&brw`6W1HstIQipdy;e?v*2V(<6A88sThRk$E!0XSG_23& z)25X^bF3nZd6H)FhNjmXs{~{PJ$i{Bwa)z$#Yx9!FOUyvzR7HE2CXs?re9d$*YpH; z_WCeFUlBO6Yi}$~%j)Cr1}jb z_`d#VH+AkZkU$;@Dgu=eFhsb|gJMOB$Yh!IH@Ts6dR`*(2C{gVj&BisJJk8Wp>Y7A z6{T;Yc}8CX?S-fp<;6*Dw5_sTd?GoMs3RW|zNGn7k@_vpU2oQvamfSu8EBuBd2Xh# z6TP1=S*Q#{SS(oF@+w+<=N>#LXY>Q14ZV|P2CNr`YtOp@7IZDVDG?FeFsTXiI7c17i z!LoEUM=8D0wXi96R;IajxMj*>d(YuHAC+UKBbRV`PoT3Lc`zDnDjjo#Z2NcsL9|4? zuQ{PCSS>mV(e{yy!DYGaV;YS8dsSds+$G>A{{)=+`vQNUu9uX_o7Y-JG*Q$67Bb>d zxmDP`6;FGD^AU%mh9!Me?BunAkZnp>Z`qz7r*k7Z`1U-A9NzYPoeYc|-Z&}L?!2Pc z^IDOfSOBNSg8pfTy2SB&&$AUj9^ss^qvnwc5b;p!YKCp-Iw2U&5f=9m zK?KebSe4iS?SgW;LRY#g%^bixPN6u3Z?9o(qvVkFe}GF+W$9*+_g}IhuR-NZt9? zOav8zQCXCy!M2>boc`A0cTmT&xs)v{e&!NsL#-AJnT-1gt=IT(1^zds(qhUe_ZFUN zsr)v~cpN@3kqon*JCE7ao^5&^al2TJ06dI!${^i%^fV|z8+YMr4J?)g`m8|7iU~iis~MT? zE?~@1mUHEOn^8g8KEy*cqcx=~oR~nZ>Z?jwNxdnWv*qNtyR@K7SV7)X8g||?8PPJa zjg)Y;Nkcj5qUJ#s?O$-(u*i&5E}nyRA|&b;2%{7zgA_=;Q*fOWAett)2t?Bm%jI4L zf;O_m6vsDZX*}EK!IXBu;)5g;uoww#`FNrZH_N2qAxqHSP*o!PK@^)x#pIlR5V`P^ zyX8Sz@p)=sUc9>wy1)An6a}xpk>vYA&2j3K`FIGug26oSPX0xx6~)ms^rFS=&Z)fn zB)|0%-)GY@?h!uwC!RG3tBn4WP}2hvYP4XOKQnHH-(c?q+6e@G<}lTqyaMDbgctHE zlkl)gAHpXEY$W2&N{*lqMeOFDByK@*{eo=g?-c_CDp z&eD=!@c|o{JRNI3rkENKT60QE+3(|4YGS(*6)z4v7S9h)j;J4*iw{+jHZzOLJWf7f_x=jIwe>y_$J^M+Lus_(#4_Zvy^C(P?^#t2K5MhQOGz&Bl(Su)9t zMW)ub7c1}|#)|V7X2u?(x*nh_;&f~;qLzDvt;xX9q+k*)8u;$c=n>Y5W@9#ARO=zA z0r`zZiWf6G&X(@15uZnom?7u~)-M|e&6Kb(4=Ky4;72TtU+YV&D_KO+&E@%H8udy2 z>V{$?GiO}#E~ci0`Iv0JOD)XCyd7)WL#kDX8lswNp^=)_Q4%#qvc50=BRIrjzt~eT zR8{1L3mS%KWO1-okc)*D)3p~8h(0SR%;%@hP|K42XkxcWSYQjR>`^p(R9%AD7^S+W zuwYiF79s7ZQ%OYGSWuY(Q-(;T?ok0L29i87e@LEkKn!%PDv$@M$~Ui2@X)5U1aS-s zgquLuul~*Q=moSHmK=ryVTy1o`IJyRv1S6#bZ|dj;gdo~@`v58*QCbUf!)u1#AA7s z$~*W+lCe;8Jh5MK$x<*7b>kh{azRx0>{aN?RY4t8R6OwF3i8*~CFF`IvCqJJ$jrtV zR_aA$x?RwsLfb0vmLT#zNeZ4RU>oFA#Ds6PNMPI9uPg~*&oV+6NJ^mK(b%(6%`6jH zK^{ahgc~*d3NS_ERdwNE3ml*{B?}zbr@G@d=nW8;IEjQnCycL60FZ!)jd{Ui!Z6Nu z>ys{PLB%?85K?XIK_-GzQUUX|wEzXBH}}ghuypi0QaVNQiq{cbg>zm+ghwUfjd_qs zVk_AiB_B^!l11l{r7H`~VG_NNr(B(D=i`>cgm1}fotX3`DbZV=k^^!ukyCTlL)N;S zMAW@ME72aNE=F8+Ig>3PvPsr(mfW)F6lTTI7y;d%@6Nm*rcQU>DzPs!m+mv=c@O7W zy>FAJVeL}&h}VnzJNvNXX4G6#mX5EOX++)6qEKJpI-A*lfFo|W=`%g+lOWAmv6;Wi ziGlWxT3|t7!X%gVO2mHmj{`)4>ysiWTueyBJ_3A`0F~g8*p=Y(Qn3-GP{Mw(NN^DO zuy7D$1NxMde!v)5u48@=BPK}+?` zHH#sIm4#q~$r(TSFaS>)5SiebBr%Xpf=S93Tc{dS-x3PXP$#Z>Gni#CHKu2?@Mt zNE8NiMqFr^UOU3}9y62z^d^MkNuZ){xUX=S|E*e^((*dJUH z(&|w!EEW(nh7@}A*mAXI?~(nX_fgKtzx{mM-Q}GS&n$3!w4x}%rixhefd7`Pg+~9A ztWDJbI0ms&4dtxBIbDuq%P0Bz!~6iY+5~(QzP_d^U}~BR8m45$!s?A=ZlF#}_^$z5 zsSjanlA_^66~qU-|FHLEzj3~D;^nRSjAmO*?+HXDV2>)LZYyZ0AbiR!- z@v&UOq?jp%huLQXg-_y0Yw`R{w#C}{7?RxLwl}K_vE;($#X!=BtXA-jw4S#15$l!0 z>r0uo1V*gX|4!GU4keG1La>}S{f^jnB=F(XAFR_`vEjtYmDjD;ewAADlAry7&y8ES zM2##_GiLc}g}wgu#AxIu-Al~-7)91Ht6PUjo*=!`C}BI-cw-~P5F=iJ?VJz>Q3=K6 zme9m(O~OIGXw2}7qIh#C^s#C)OhAbzi|%v;5ng+8A_ViS)eB`+qKZNNqHWudOYp~O zx)!Y=SDY^{NeC?}I11xuV(zy5RgP=0`2bjqcGGRd}24S`>*oKxnX>_tXI^!DIlD|VS zzowMJ0xju2vRBdAq_+;r?#QsF_p$W<`+VI-fc<;EZuXzsIQKE>_*NS2y}yQC%}-A7 z)?wcL>2TuL+A-^NwRqR2ow>$F^&DkR{y;H`j0HGaU1lHk3@>Mmi;{y49zE#`aq+t zk82H6*HiKSXDGDg^|-4zM>vZM3yVv~1YA7wURA<4;88F#7)h2K-iDeDDmM+>g;IT~zk)GC3n7|$#q;vGf8}C?4*$-@xP-=CO&>YkEn=JYBYirO z^m`*XV!h6Bqc4`zN{G~ifBqCdNVP7nd&QhU^goJ!0wwfH{zociVc}WC-IPaS@%4A> zPi@ri)}Q$D|7`s^`MdQ;pd?HzrZ=QI0aDKL{GXMLH^9n9 zhMSY{C*xA+Z*M{mnn%um79a&9D#E}8h%lC7P8HMW1OIGkJo+B%cZZ}gg$Xm@pe>F4 zXV4CqQx#b(khJ}K(C+_x(3UiYodXWqwZK7pdk{41bUvRitLFDY*b1Cyyd+XcFYq7=;_%h7#h zj8(`oWn9n=q+fjtx?|vyx#9#V>XndH#Q9KKM1UrAw8S!7idM(9ju6|bL!M(0pYOfBi-5-0& zC@2j$u{n)>Hy?v6@6{$Dm;F+w=uT#Ayapo`0UezckI|CEj6^&qvcxN148&_x3lh;e zPxPssbr1`LS;G?eRKH~0`p>gL1r4z|+%e@c2^dKV3K;ng-GN8R>P$n>-u2XBnt=)! z5?cxw=EKISQ!x?NDFN?et2Rgh!t6<#r_EN2NBy@G8)VT+_xRz400kxFQB8L>Ji-@@5RugU9l8rK)-whIsg$0i}YCo_=4|Q zB-MQzuVY~hu=e90{Vr7B-m4MkAl$@~Sy z!SaY!Betz4pIFlJn5@5obUEU(Jdsg;Gnp)9Ovgo0#T~bup4O!HOiA*qOVmBx`5EHQ zxKE!|I_LPY#R^=rzqlb!_@f)Eu@k=v0N-7lZc{_w1edX~#AQU*y$m^Kw6;81I5D$; zvrgE(+f);yErH&OwNL0?|8}kCYfS@bzdj3d_c`9C!fDNt7VdFJM(F)DK=mW8U`jNU zDPgdq5<13ma7t+}o3VzSO)zyhJEI(P9_G18P}~}yfp+C1}$lL3C=S$*Xt^2 zIjzwFuP6jLlPht~jLK@^X|V|!#bpCiUCQ-nQUQ%O1H=h?kZGlcvDKdw=VBQ6d4e)!|}2gb$o$HEjG@Yd>~ zk`ov^=FA<2Sav)yntU2Tv>(&P-%MU_QTG1j~zDi{bmMXGRW=C zZA#_c^-1-lG_KvEHUpMFDkuf=*7;e4sEYl{`(uso4x zSmM{}+*36tRrn9Z=#0a{riqvB0m+OBd8j!`2Y#l`3ONHVy79qRONFhDlC3+$2){h` zMwzG%%%`k~fM?DcX!Y;knK#ceZrdCkoG`x%kAp+hLt!c?9?QX%n#_X?-@ktc1cdB9 z;IDd%wCRK_u{fzoLEBvC!>;d3hxN*KCt|PfyY7-RXrcGWW`DTucS>NG%$-$6^38ei zejXKuOd=*SR#2SdFRaALSW^ptqwc^TZz@~{o64%xnwFt>AlVz06wS~VqzcOl=Ad?=!JRML8n#wlJ zW3AiYh|DL$Y`y7KZ^rm#ANXNe^n_{*LJFWemxBrZ-4%RtFRN_HFpbg$p@Md105LnQJQzMV$h zgqp*Ob;@|(akVD|m|SQRo7bITk47N{94C!a3DMGO?Q#TB4BrY1roGy+97(l_RmjNo zC1iZ!SQ(L|MH`)it>H8xn+mq!wCX&PM|Z`tJjRVVRKyszDo^{zp&~exHnu?ekW{QHq48&csd-w2e_bU5* z^j^(z^sYxNILmv#mF=s1gdc)CwoEA3=(ruQAT*5SsZNeyikk;QLi+*F%t^mY03b(+ z#xp*QmJk6dgd!#e9HjJAjP0EI%FWJ?JTL~N-4h|L8PW@1C$%e5$MOj?M|+C z=UJ74K{S(E5WZWgap$TERQRfaR8_|VG&is`t$|M{fNDZCrgs3UOjSWN={|xsQrGP1 zez$Dm=>n)9RDt!RFCh4$184whfXWI|fVwNB`Wir;ED@j%QhP`bsMJt}%BX|&J-q^3 zVnrAQ+ybvHcd61vpayuNeHW-Z@Y-(MS#Hby;r@CoOD|BPp&F8*i@AMz)xY#Bx)cnY z#ukro8TgV~Uwx2Xd<_3dzJtxB&|uV`EBt$myS8y#ha|9P@IJ*x47|X?s=a(CM!ty} zdkHiW+_dcHG`Qx=us`&i1(2SL3u6P)b7dsi*qoU~fFWS%foWub_?>6@d}5lyvh3fLD9A?tFWqgsG_uYVi5;nq;$vR%LFrl!B~pIKQWV-ostMh?Qpo*JyaHR>Cy zG31R4$Sd{TwaVaB^}t8Kx>MBwRYb~`@@u^M*sa2a^}pHXMAK8#aE-zJKQ*fYU{w}=olvkNYRjFv5uea)MGlEb-p&GLRSc(O#a z%E59i`GW0Y(Ka+hSsMfkkCCnq&hsCf6S@ktU0{tAfsv`R$7RnKS5r$C0smjlZgG3y zk{=F-{0-#uYSe}F!jvf!)`m0o%vPs$$}elC=Od9H=1o{QF#ibLF@K-f{1dq2OIH5> zsG3Y}{I$VQgmjMIR+DQ3{o@VpL;pV~X8VI3w}MPF{%kO`EC3AMN&E_hi9t=f5*|`mY9&np!z8OwhvnCHuo}r569cAs|Z@#%qFL%+GwX$@X*g+L-u9!zE z)VO3VqO&KVQYoj<<`f!l(n@5AZ0Cuk7vm|I@`%N6UiL{M7Ll6V4G+WTNhT}{@e!mx37E51dO>Zp^P!P8p;P93^Sci8ffhFn{1k6 z-2Z3Vj&zMjPs=zm^2IO_viw~@RsBf#57~@3R!ahqO;7~+Z0i1z>3@(-1gBnxI*41R zY_A3r#>K{y7lN~~0z7egMz=2)G4a6Lv=R~2F8rgo15PK8q4ogd$>oZ#NY~=)x09U2=$r zhx3%0@FDi41i8%DIm|OAD$8`^`^;&K#XNuaynEP6IfsdJOW;(bPGQI2Dmw@cNMBH% zvh;a<*UOyyJgI1|T(GpsrhrrN2;ZVmTGE?&y17xRXpbx4{~7%*nO~cYnop$lBUS~F z#2fawj%_~ID%aCK9B4!Q6)~c)+N*NlPC>~hgr?ooqBCsNmSR= zNphB_bI@AKz-xyC@oLYuV_xPw@J+l8xt1- zUMr@3##GNEx|cc7LZplC7(0bPZ8H|x^S04Z>D!Z+m{IE}94*llJ=R(!pn{Y;VEJ8@ zr_)h{#7NiYQcF@xE=6KGYCee2C;Q6>^1Fe|V~XEN;XcH`J+0qK5Iiyiw>zvQEio@y zQ#Tt|ldPll!wpZ`2gH&C|0d-yeE1D5e9X<2&Za{$gjqE{FIka~ldDuWvRU?J3&@t_ z2z4&CazZ-W(jxsP-UU@ja z!v1PQU`>ogseQUSAbi_2yEsYEi6W)!5?9)YPtC6pL0pQ_PrndKvH>FoW7+O4n5#pG zSuU!|HFBE2muail9IrP(<7>wloF~qB>xCnXybA_y?fx8LwBC4H_Tan1KZe^3&oS6bzyZ&Y#OkACQ~`U9eqMfM3(uFrB%qJthN|b^4K( zkaj1>wP3cZFnYn!k>z*rP2k!BU2A(uTLRYmqHunDsSCN=d8G`<`$91muSmzkjLJol zA1M0b^77DeVCl`i7x==Gg0KBEwZ4kr{k0qd@F&(2z>YzJRNJl%rh=XFe>2p;yD&q;ODT? zdk8EdG2qizh*Sc7(rx-vc5L(HX!Fh*Q6EIS5+Y6 z-5=v0SgATsbWnE+TiCi@jS z3KIzwHK;r9TIB?<3xbp0Nw(Xo9T4nvbqpcNKo;%#rVvn-$*!0!55Pv%tEnhsm2tbn z`4Hpy5b-mo?~Ua+`;{Q_&9vfWmk9~YNGnlY-qB?65m$o2>jl%97%~<*=J1%-k~2F! z_G>2Wl^Z$ShOHO&zvrUpacCc z6Jgu9Gv6~{9?VD#2b?P}W{g6yl{hzPr4vJX`lId-~gf5-DSZOHQCE?hfVVr<-_a1zK`B!nShR&hfXJun`sYmEhv7 z*>hwp4Qq!*wA3&<aH(&NL0oG_|sdydvn6uN1M z&G1;>*CP$e$kbSNv7RPks%~uT?H<8aN7Jb^c$=S7bj6e%Bh53nqSN z=p333i?=q^sjSsi)|u=g(yeZ+;;!lbsqr6(jLHTEO>FC6l8HJwBD&VQMb5~E58C?mL(TBpn{lu_8&lZypYf|-|Ht^1 zNcEfr{{L)kRt7Jad;QtkG=yssoJAqM_CjBaz7Q7R5MaR~Kh>k1o&$Hkf~DxP<$Oh($?Ik4 zi$l@6G2r%1m?+JTL>m?z4d?$V`_@Sx{MW9pV8oxUFCka7DW42L=f{30DW4$4HBPi0#Dc{UQ2l)|XS)A8>CEcCqJ16VMuVwMdhA722MDv%3N|Cy*G z_WD<%F6?)rjve^#x^KPg@4D~tH@!b?U+aYmk^iat@(-`s-!`z1)Bw7^tT!2et}hNP zBjzoj>s$Hnt}jnZ*Bq%uIW2juUOdRl+h}F0M*Y?#&ldNjW1*4D` zgG8W`4*^x>9bs#Hf%UAgVOcIqbrL~T$&~V$;qgCCGlk0N0Zucu+V}i9&9v(HEB2?+ zY|P)MnMQ!F|31wWv)gtLIL&kl*uHYg-QRChsI|$>tpz}@*TwQz?!nX&Gyh7$tWqyT zp;XWTSkk$Y2>|j!3JFIlIBeEOd3}?uV~@I6%h3zGXejqI9`r!`Yasj)JR-%sa+mT! zKp<#NI&0>4M7YlVe;e)3fwfYh8h%emHrxhe=ixguX1UxIX` zDJk`*n|-TWA6%==k;d(Z6?2G46Vx4&mVhKva0DLxlvs+->z)Y3X^kz!X9Wg~kI%>F z>l+V)Ag7#!0z4xW1IoJ19{D=6{`#@v@p{>0Wn|Of^Qw@ueuB&?`!z0}YDk^)b$$Nw za&lGrJBiuU#p=m|pRk-hQ9OnCfSp42ls5#Bxct{ALXA3Mx8?b!lHONcy6#?Gy4|Cw z2QZkMwSnO=JVaP4MA$-?O+z0S@BWEqSb{#n1&5)U<25(xk$Q_&&c0lRQi^)+Lw zHdJ*CyDcjpd6TrVm=a`p(!9xI{`oY+B+<+w9M5rF7wnbSPwY3tYsq>?>@^6w?(2bq z4W;hR;8wdNnz#6;>tOR?>9*K`f=2F`eFTAmkRf>xJ96<#z+cp}Jl1%b0!6nj!C@Cp zP5K1}8U?8m_oG$Ggd}}v(Y%g71ttP(?I>F2pK+Qi(ei;gylHs z@RM5iSRuf33vwy)g}FlB$er?YB^nkE3YPwA?hFuY`DpTDO5_1@x%9|rM1(YgM1(BG z{Um_e4;e^NnhqIgZ!^>YRc1YZKY7r3RsVxNX6o#5h4kIqa zXNokk-jPf56kc(|4=Nl^>!jihlVJS1PuWSLnlA8eRzbXsW(0E%`nb9j0pyZ?h*J~}{Rax!W)3?r8{JBT8d#z%hIB-aki6R@ zNMc`jhkkU$@ae-j83lJd^yCf&AJ)j)QAZH==j`|r65)2%^zBu#T52rFSU-Qbfb88- z^g16Z>ZMcUtTK)>Q{$1(RQT$j&O0mo-N^?^(TPhCHqKFIQT9dlOFjkUt1E=`$yf!iW$ z0xRv!ajuxfU=md6x-8Yfjy}Dpy{*jk-k4jMrzrPbRO(`8us>+F)Un4_cmKXoHF#PE zH?O3y)Uu}1tt|fSLg=}v*hE8Xn9Rq$4>vsvQj+TSO6Y_X=k~7sYM4@vlpC3+LmO3n zRp5Ne)QjU%L!?=he2&^eS6i+e{sRtNL}kgNGr}=m7K$crvGXi|R!2Rsm87-n-CPtm zyUjQEEqSli`S{t_f&;N%kKbfhA)>9}$KxOk*J(Q7KSx@QmvH6^meFw=&+#MFhZh4z z=$5;R_o2?uwm~R*chXLSCswu-sxs%_Zac0-2lwP=+yz z5mA=luie`z&(>j*tkePE1k;~~$rZys2|ce=|bPxp1)wLeaFL6pIK0LzL_ zKOUAHI3!UPZx6Y!r>?GpS{mQ-_UbY7fh|s~^7rJHnp6=;U>7AY&NI|l=m=Ak{Kq~| za;sJfGGu*o=?lGR@?{=6x44}p&az?14%B`#VrvBLbK%(z!3*pUnfaQ`n(mg;vlwX8 z3kScuIGk))4v&Xpebjy`wK8tTKgcuBaE}=vv1U!`9%rU0d5+*zbiKDN9@0>CAmr0O zvKe8OH7vj%JQX%V1>FXqpfl{9H73)lXbr7j!b4ZL)}XvJPN6O|Wo~FN!$#|<1^BDJ zfRFpxOmdmXc!@OlaIvliZ!T)I6_rfNN55b3ZPJp&lq17wq_^JdgL5T#;WgfHA!2U{ z2g+%1H0Qqs?XV6eDriK3S9imCVc~1{-CT^enh*J)Uq)B0KFWIm1_@q=D~@u>kDGc|UG{cyQ7 z?__uEY7-2fj9x#(w^4W6)8orE+@`w3hb&b%&qRoS`_)L^WZnq%9Q@KXq z9E3q($caZ9RFQR#>4-FE3_Hmph(;)~PUwKH^?1*0%f_PbRD&R&oQ^#hgU&+kbw>A# zY(2!M8j0t%XC{RM>VLU0iZ-Pd7;<88udrN;_Q>i7*n9e25I#v6DOsmSa zzk6z1s%obNy1jTS>`BY?IGNy*S2$mR31d^D5$2Bs22-b6+I#nLpf*r_yX6B%zV+t% z`McUmYhFR)<5{r_2^bv&(JTPYW7I{T;hGW(V9#o!csSl1J$$AUrUF^dl^f>gMxv|( zqFFbrlQ-g;#OaECOI?^&fQ>)MB&iwJSTP${q#v1h+FQdph)KIx9>ysQt6RSTy{enA z8(i_S6WQ5iDB2?*qorgtHt5tvW@9mBhGN*k1IG0{|^JU zZX9Od@qBjI0B~O2Iqv$0Txtw8A_>Q-;B9VZ;H=JP%nKh1frgLLEY7A6W|q~Ss@0Dg zL8#S_>30>Ou!rt-1+$N{6oi~#@E1Mlwr^SZ zQi4*lJ`jOkQ&+MH0V{SZzz#*-!~RP^U)~=+r2Vd2aN4b#+k0C=W`vE|uI1CNSXr-? zSX#N6yE>99gteW$h3>{E2)^qm!nf%tAzd{*gK;M2JcCWp3MZO+k8md)rZCusAEGmL z12)^A3uDnHXx&b!Q+0H^s@rr*wZ2}mbcz4iAlz*sOTUXOsT(~fXY-kAjqKkL-{gDD z9KZ=P^-4mRX*=aN36t2(6ggYY{WS9uJmY=~McYpn7wt+Q66^?1)30jrb`2ge?+~E- zas!5Trl~GJ@8Se{l=4Y^J*DSaIvY2=-G~rssXeZoq>N$h5QV(Mny?B*1}B3fJ%hsr znl@X_Vs<>DzV+@TzNzxpRhiv|`ld_-;BvKGC%YmN0cVJN3X6^*m#>{WkGcgVc@}ZU!dndP_xCGiDOs?lTjy8?50>i} zk1@0rJozVIrCZQWdb!RvKkjeTro-U_AgC`LIPOZ+yonS~e#wfUzvEVHe#|qrk!p2( zoX}+Xzh=+>h-4MmiIQ_AQgkFrbPwOgk>Ag{3Z+oZ4Y!UebJ)jp41UzJ~F+g`ax+t6?^Z(qFO zzjwjoHk%B0$--p@1vi{M{`fGE@4UoqM5(&7iDMKHlW4C+)^(MKWQ((ZQ8T?vc7Nxox$e*|_sIJUi> zfpB^B@-c|fDY@dv>SDm&zKkh+1*0^3NP^-P}v8eSR1h%-Do~g zp>o%8K;)j5K-LYSyLwSU7z9DhGHk;;sQBlp(%DERSk#MM^#F>LzIG4&$otS1wnWIKHFud?*tmn{f=Jme!*%=Mq2N*NjGLEB-D^6sgu z*$E*5^Q2GU`DV99!w?-Ud4{k@UG&Y2Rgr! zT}1$%d^(yicxz92j6aZHO^Iao!bg&pye5E7Wk-P?^-QNm9z2RS;MJkWb-zz zdH4Ofa`UwB|KL=X4f_(Xc|u<=L(|q7$@#X<_;H5(Q$rH@_AZhA`Qy4;Uo>EOg0DmK z1(T{1wjcdXcQJp)bX-Dkm$*@OqI;Jylak!o;&kJ}J%F()mTN#P^C4l<%i$ZsZ2&nS zpn{#2H$x1gRmX;ID|&?`ZpjL1Hj&dP?+@o{vrwu=L1vKY^~+sGy%}wCg+O$02;h{+H8?uNq_W;4Oj`&w=Hq}}S8D>k_#!y)>$Zjq)By6a>RNJY36g@q3 zDLsiuBeA{7!Z`dVXz*3ylkn6MX&29;A-O?=n6`H_IrH0-(82) zsgD#Yq`yl%Iue%3lV^$_%@PuHauF51;pgKmf~}v!(8gBA5V_x;N{&QNBgIDIvSPi^ z<__VgmZ>u8gjbs4QK|tfkFk_-=ktDrs_T4e!cAGOQr6~72m4V^{6G$0*vz{s-G_u_ zk+Ku?(t1muA{DByejiT?ng57;rny|S+)O4|fQ(7KP98tSNq?g%sC%xZtlJ2Rzb&=1 z>Z6eII4@W@o2fdGtki?PvfU<`9zZ;16h2^wkt3wM4QH<-EMKe77drkn!2X2+IM6Ef=T#mWxNv6;?&76u^-(!q|{q zTuBCvTcxG?%Q{%N;BBlbI<(b^?UHw?Hg?n~f=xgf8>q6i(ldoMpq5s&U^3dUQ`;zQ zl9lu36JvunGR*qo54|UT(rAdVY$u?(&$y`TB|CV$$@gOo8~$d8o8j^rI*kUXd`qxe z&uzutR%~U>L!-^XFHW*53grU2W?BatL`2EnV-LhJC@EQm&E>Ui=Acds^URkI3)M>g zs+{s&7bh#q=ztRnS)ntr0D6eL-HnWmeGq|a(&r-HyYN2u%p3b4*PQ7 zKkLz{aCV=_&56V4&ee6CT{8#6LMJmT&O?mG-wNU4b$uWiLAUgEX-Q|NzHq4c(slGN zl4v(|En`Sy^e>Va0IcOY&l>O+$E% z8O{@&AKks;*~c4uy*aO_GtG;q^PuI#KXWOHj@nrANt{54abne!#d-4RImEqL_jepB z?)JAm4sR#GjFGxdV~0Fb@y5D~_1NHpGoxi`*N{0gXlQgt?pi~@Ok*!UF~8!>IRj%IU|JX-X3LsM{>J7yOHgS+o{Vc(_qh8c(2(#qL*yX(n;|-z z*5^!snF`InZ^|66ed{$lvJV%0k1e5EBSb0K*6aE56fCKG%9!_SuXTpyzG-uoS=cGs z{@w@T)|=iL^U?iH1;f@qzB!k04HzW4CeisJG~dXflnch8TR{ z%r$wif3wC4`YIz??U`rbNZ^B1UDwz)4aoU4+E#V2X&r;p=9Ks{9J9TBe8>={Y~8a|+8UzI-%+sY;Z*00<)!jCx*N_tRw>CrLoo)131rHPzU=R6{Ze zOg>Fbb1G0T!VCEFvkF3n(`l9jl$&66j})O-T6qshuUti(e8@iuBW3Gv!bq(4H(?z4 zZ-gr?R-BK>jRc5R>P#oTkM5CQ<3D1b*6}<)E&o>k4CXY53q3Q0Wu)PHJ-`v zVPY5>JW=0f*EsbDQ11(AI=sQ!4^TVeVtq#(Kl|@Ue|fEQ6gd!d2Jy9B!9WmQ={PLi zlw@=SBc1HT|8!8^pOHfHN=j8%yEI#?jfO9r{sTmVNQb{sq)DHQe`q7}$iR|Za~{SD zLE}Nk(n|H=jlu*DH9J3C1Ky^n^ zrACv`{DROUtEngTm)bk|y)nX=C4WR#1tx4%M04&!q33UudsA zK_P-wHu19Ok4^Xc3g1zWsXy4Ay*bMYJJzq9^li2>;+m&7e>PYgN+h!(JUZA?CF`} zJaL~UAU{aqM5Gn!(!U(r#!;ZZ(2ic;-;W*~HhYPPQkdeAFAgG&6s~9*Z`zOBex2#S z6E#G1C*YqXulq3~(u6H6J?RF#sMeI<1Ls7$D%qN|^evMGW=EM5UhY6=PvgdE z0kzQ6fY(&2bplZS_!2rWI0&p#nFdfK16TVJP`8g>PM{Zf!5EoT0Qr^(Rep(bk44#u#HZd?v&uAOT;ZIZpipB zza%$%mt*frR1oLT_JdQMnSZf7P+~(aAWS7A5@k)0v<(H678{`)4@IOVuR|0KNY{g$ zQv0s9UPY-PT%UKhFLy8q;!V>aj*EDHraQwYrDvS&I^Y;;)jMorNlf2#iPFdEA#L;N*B-c>;9$6_MXVNBts<1c_eQ8hzQ9pnduf+3DEa1){lQB9mE2vM<*O25`5 zeZ$x1?-xL*B^y2?O3r-L)8J-Aro3<%d~+Jz4PlOYZkyco{0)u9*OjsOXX>E2bJL11&{%Kb&E*>UFB^@Y7B}tR3 zn&y|6D@WBvV0P)@KA#>P1NebI%? z?Vc;V;FHK=P)GIJk&*!h^JN#!^ycw(l9U)GLCw=ci${8bNuEA-dVHF56?28j1hz6q z_SE?X_B^^=W%;VXci5iiL-3p#@Vw@EXz}$lS6OX&Yg1fx>6pj;izH?!)JUW;hElo?u+hkh@_ju>@y6HN1X;Nc_XA(uv0*csghfk5zls%Kox$lm}< zwZ`ATI8tCKDzAE*+5sjmQtz_QPD0NaFi+^7aAn++ks}MS59i5IYyrMgv4H$&q-@UQ z-F8DpkR`y?DAf()YOd4hBc%8kQ(|vpQ( zOc9IZ8wyJ(af_B5xA^ZA*00dc*d{tIsY?NM%0bJ-@1O@-z`eB%22;q?YE2hO14xS> zVMXrGBKT0?Qyy!(!|eTaRv^Y7ce> z#*(NZG)abrO+h`OMeBPhjcQlU#@whigOj0lwsYqyYOt9$FxR|q=e}dg+*in(b&N8& zd3o6$OF`4C60e%`@pdwak=2@R`rC5Kfp8*B3I)UAvqy6>8!G6%@5}GPbmZZIQKxh1 zmq2PDY+dilo2+Po)mno1#k12b3l4gtaWy*CW(^BI7zWI-DSn0V4kz;>bcHFR^AUdR zG6OsfbSkJMHRWW5@G%dS=*VZRM*JK)c>MKwBR1qt^Jt{^aolKKw&$znmxQ5FJ#VV+ zjNlzE3}+6WPD|Ny+qM?pfnGche5s8Z?uU%YZ><(?4q4SlE<7|esus_}LnbxL;1z|< zQPF~0Yx?}DwwjbXEe^&jJ!zVBP&AxukD+HlLf_kddrvBVdrwnvEdNO`en|cy7_IOK ztQ7Endrwop_|fFvl}tvBWndT{a+3k%LU9#9E+VA%)cYz{)B0ipNO5Mv4B?)t(ZGZ>N38VY-ee<=`Qy7j5j1|%x`42gnfCh^Bg z6W<9sG`XAOC#Et?0GVj%+WAlSX|@#RoRa1fTrl0Yo~mvTjU_WF3gUgZjedjfpGH*z z<#56J(qX|L@=;X63~8XU&B|D+udvkQbn1Oiq8!-~mr+Y`dGC=gNb!w%yRJTpu>O{0 zvQ4XC^bsXX#ap10T0V`2PAM?SMzH7Nimg__C}>;+S^wU!w-O=1h*c5!vX|Gqs~Vl=I~NE5jA2( zR*YGT4K>ydW1QE|?>f0RX}i^Ipe}N=QbSob#yT*u>QAg=(fnFzxkI&d6K7nz#H>S7G%h?-E}tP{ znHeAWJtXo_S=(Q=mttJW_X5QQKI?XRd2}t{E`EQO_s6!pFK!x@3}dbNsLVW;%|0ni zpID2cemgX|b%3<}y1ahza|F$qn%_IyV;LBz9~1wZI)#q8wV@8xAl|`vMJ;b9XZz+r zUOaCLX_tUkz^^svNwmZkg04om8+++!UYARQNHJ2vR>WCyCw$?805OQTXitQbuWE%; z;`RZ1rk80%T}k}86kN;Ii6+-Wcrac31VGcv0gpO~fa4>MkW&!>g}HoEmwh{7!Piar zP`iY)bei`pyTQlzwLg}C`$gT%`$fwjZsdvSck?9xkD2Sx((rlWpGv5LDR+tbMMGoq z0AGz)((+`g=Z6<@ERebHnVy07M@PUWV4-kFz^;@dVksjLwM?vp)+b^fiK>yutCa^P z)+g#0DTSy7ymD1CIv*>{^vj{^`@%7*!}|%Nv&fKwv3Gk7)gi>~VFFSGa&Nw+2qCVx zk^U!%0)D=eBn++l8o@-xCwvL@T#-aY>1Z-?4OAg<^LXss0)_Ei3CC-l$@NRZW6>rFYm5H%+&#XwM4kHF-shQb zMtLD2$9*p%>>(l6&9mRf zyW|>ERwor) z|M{;jpGrURQ~1xn0+*hybQ2ySW|lFUk#SUl6i*>!{Qg1M2DqoWc6j{eCanF#Jyclp z+@Rb>IiI{5gDH@FhxH}TA1JvhRjSpGj`npvus9~^N`kPDm;zB}w2IeNqq0|vM%KeG z1~krO#hW{B#?`5@?ug01>oPN^*mZ;}9Us1t?<{}qj*5&N8Ehh|2HfVInf!WP)ml7W zn(}yUdc;Fz*?&)?<(;tHVJv$m<^3?wSbPz^;^r(B1EKY6e`UErW}Dq85o@05weu!5 z3NE=-gqEJ+ZHe@>Ir;4BZeIP(=Sij3j+mt~G)4UMC`KfoK7B%D@cTIpjn^MX;lN@Q zX}9=uLjT;b78`m{b4OJH!lepSY)iQtpz!u#cPO9XNxYAp;hA#g=wb{$YeKphWSxao zY+1qRZV4Ct%ALPvGN`+LHM=(sD;2())cQm{DQu)SqFG@;FZJzWN3+6cKG~rbyhm&} zDZy^y*@ZEhS1?)yt*P(kh8@H3Mc`J1{uldy7#3U1F&A@3JeTp$g|xH`-UM#>7$4bx z`4w@m91^ekzhCq?Ves-A`!K@%bNDf6AAX~u{qU3Hl3wY?cR!c*^X){+ud=lY#lH$1 zwlYuxyDnr{Cd7lblG}u=H*s9fsn@TkYkAkIYzLz*W;N`}3(@P<{dcUR&5XHi&*rI| z8tTEFq|w(jB$F0;_t8tLS##(o6zaaHe>rt6vABp_|0&1X7v&w3nzLx!>qXaVOoKR} zm;6I>jO(55&>dv}_?a@{Souw9>~p7ue!-=d2HUWGti_6^d?>!lMrgY^ChLvumMo0! zQiy%aRIznWYv<=`(%>iw0WRng_iHj;VtQP#ih{v>-$y%?8e1hmaZ59n^^Q;1sO9?{ z5(pP!%Ni*Ny{2@QZMMuO76Q!)qy~{*sb73i-?HPC*nTm4M)aD}VMr609a{5PTN8w& z;KW2eGe;Xm)~Q^h8q6_4#)bn;O83h`ij9>Z#%{9XC+XwOlyD>j=gm;isjCYM<+n$P z(DVHM{?lZG#o{LZH)g|^9*PE@Sdp@VbUYIQsh$|wMT9GYSrKMLyP%oT9xkzsegx(P zZr9OixcT#n@vPxj*cgR}+RwOx=!pP->5g7bS}jiPeMprV72rPn0v{}EMK6unG5=#* zU{n=Vh{37^?3mMOO2>ozSV-It`TZCU7fY+C*OuAn=kiqU=87%zMw;>C-i)O?Lp8D$IA#gMg!ZS5Ub`x(`d50BOMW^0*NO=q48@{UCXULu^G1-V zd3xc?1t@Mh zXGG+zl;02@g#SV2)?Q#wJ>iN$E>yj5zldBCHjOcx|EM(~!*bEs8G+&;#yz}XGCL^) z9d^Zp-eI$6ccPD6BXQ-VFmNKa{8>B`iZ`P#{6I9y43qYY`oRp}M7jeBl^Q%W3KpE} za5s`hrBY^JBU=?0Dh&7^STCVhXIPAt2=I4JdUNJh&QnZdB{=M;7k#zqEa-#qH6w5q zxi2yAWc|K<9!0~4P3TNj$}o}wq|Ok;f2YpwhyPdVOnq{P&QGt&!i@;su{y5i6drhD zR=vQOZdT%41+AM#W5eJ}K%q!p#i+*Y&HT>~cbK9-Si@_})F~IDlg4s#DRmy_ ztKmd{KBzt~%5`6!n42rLAXb)pS{U|^+N^Z#+quu)ojEfrt61e!eQz7w=z3|Ch&3l2 zZRX})I~5Rlo2uLY)L1L0g#Gym_q$Fsp3S^`#r3z=mQO(i) ztes&tb(y|;qy_H;zEB%_A@@p_xh0>8FNoUxH_!*%xiCQoWXp1t2r_H_whc}V%q}QT$CbyXop4$LueV48{GKXZ4otLI+q|@RNkpy+Twp)INxkwO z-Mu^+f0NjTEMnOV=E-TSlaNAl4rC1LXahWCW2{3g)6 zpR*jr&eWlMMKjJjuZP2GzGCu_l8C8H(}=%DPM!pD2MpHbOcXl(%Q#3k2N(yS9Df-H zhL?Ygg9wlRZXEo9_YWeBk38mkZiEV55sNTn_b{e(OIxDKxu=9Ti=;?jJ7ZkfkPc!7U0vvv#MBGfbe~QD4k`aAxZVml z8i|AFH?mi%7bfzta|rrRo4`UqOV>z`5Gt6?yr-=jBx1=-^*6HD0#}H+H>v``{UliX zB2sZ(B9cs)HttufK?!#Z8JvtlhVF3_H+hs-zW1}R#3tW6$gr}6Z4(a_ln{F~q0*Uu zoMz!{@e25;4d4@;N)nSSbP_+LV5ws=TABGzeXnYOD$$27Pl@blzK4`i6Z>==6o&Y+ zDTRnCg8GZZ>YKWMXXIt|^QMuu)?lhKC+b`oL!Z5w=GRCwB}SFVnlGgNsmkz_eYX&- zvtLAbkSQ8n6J}eRob=>JgHpR?c|519vPUUAfvV`)2|TTax9qg`i+?;M~&jQ&&OnchY=lM=gDaB4R9Oeg{F_B|YIqoLjF zb_|Kt1N?3M7jO~PE_gFM9g9Fq9kH%lzIqG$&X(a}jQf+Y!bkVw#S?N5XAa|gSI-$< zy<&7r-3*irj8-epm3`S8;S7r}F3KJIQdyb~^I8tU+Eu*{?aYE#N2Bz&St=N$rigBg zi-o8@G=^SAdKiIj)X9DLMVo&3s z7vQMH+Fo9rt#28|exze2VA+}fECz#&3b8jwC92=UT+-r<4>QpmE4hh0>&&pDR!6;# zq(tAJ;M!BiOf6Fp@D0&)d5xt6FB(O@oFiBwfhZc?Fej-*8*qt2CEE1&nEGzqwtZj# zR903;2c+ahhNo2=Kwp9q7&@gig|p{CaFGs4ikO`uPsGz*ojykgyYS9`PZ79DOTZV{ zwFZgvL+$|Zj^-L*lsS@M1XH9NhQLSZVw8nAbCeae;)}P0NOkibfuv)HNnn9prk>Da zC=t8mKXv)_mRu%X(F=$}x#hFr?a3#hrXBdeiYxJNl5N`Pij{f9ykhB zhWD2!VkAN5f4gY8fdYJ-YYUVwUDWm3e-N;blu%M7j+AJOF8~ga#YRtp_G)Op%@V3o_ z&ef7V_k~CjHK8g?zHj?m&^(4_*{X3nV~7g2$08DZb+Y{4&cZ84hx?DGZzIKu`Hi|< zMxTELJ^NXP&&c|WOv&H;ujIng2_U)9wur=$_$RqwIzzC9H~P=yLafn9+VcNOE`VqJ zJGnqwqgs1iLQlGU*`yu8338>rBmYt$hwb})hs!{*~>RvSRpAvp@ zEaZI2&Etdt&zv;w779?D4YQ~PzZXc`8;K|Xw4;7ra~XG->I02pH{Af_mwG->vD;(a zXR02k8b0cPmLsIRkLqA3tlVrO8dhHz?!YF+mj?*E4TB9>e0|Uk@l7$34tEx3?QM)B z)MP@y2L;0h=N(9*HT+OjuUa7GQgT|H8IQ+N{Ywu7`xzguKr10f(6*HA9wx7goKVeB z4=3B5v{KCEr&(-?&xXuOj|{k}p0tb-BDtP6mqBF~HLZCC$f$#InB}7X1tx$&U!NoM zcd!SN37OgEqm^C)jE_f`xPMywkniMH?qZ&=_GtUAj=C%HM=B)0(`ce~YiYSxY}blf zP{J-LFRHR@uJ*2sFJBG2wUV7`YKxVBzZZfHz86v@O!Of|@O2zcI~qqPAhIzqF?4<8 zNJihMdoYBX%@foJRi(!Aa@N;6J}k8x9puO#THJ2gVr=s=h8_Gx!!1MloS1`dM%%&j zbXzE#Y7u{SR(&c6US_;f`9Sq^T~z<-)-JZ%68iDbqVH={2%G?B!K^lGH**5f={93zk&;N zkiWo%hIy*^6P7q`c`zWiZv7v*^{%_;&!{E!f53%p>%oLuQ`Xjw`?o*BA)^TB;_RBp zP;Ql#ol1D>jylwjOvW+r!Tqt&?YjS+O<1;k`)}EV{J*3_Hzu^p7@mJ%i@S^ef-Q7q z|BWq1SN~v(hA1g5eY@w}X^_y^3)IT#P{C?o!KTEu^8hp1Hm?eMd@P+py7gdD;} z2(ZI8cGsX>HsS@|R8&)L^Uvfe@-m0S{1499$B2==Q=uP=#xz?NbPiYfELo)b`|Y6! z=8{LwiCeLr44-*ctJnjDXBy8(C^>k2X$rq2z`}o1LHB$ANvt9UG=Znk-HD=n;VbXM zrBzk5v?NbM7{D&pK25mF%72#5M-+l+A4k%*ZreoNV-I2!D=NyDpNfz59HBwFL63Rg zpWSq4t*7>2lGn(j#^&Vb5hTon(Z>he{0^fdq{0csLJHQbC+iOai;Z2OmL80q)7Y8XPM@>@030H}smDOmDl zqLPsn%qTp@tM&=h78#2qIS1tDs|-2kw_l~9C1G6Q&hdU@i!CYCA!;jD?cHJ6ifPX) zhUzc_+rdoeNmVx=0kc5f$VpX3l@4A4na~+b3t^KliE&K(FQ2;T=^__J+-eOVM~(3p zyK|Qdlr(6U9Q)daEI?dgY&^ky*_bzr_qvQ6JrWr<>c9`d8egurbafq_I+xlJj#JR< z6`xPf=Xp(eslAuxrX-a;$g0#`9r)ME)wM{q@5`s}9?&k0hUisYw4?1b#6 za%olnxyyH5=c8lH9Aq8d60K$6bv}X&ahaC)xiz@!K(D%B|bsXoNEjNMXQ)qcmC$Lan z^b(jcT$mD=@yE<+B7x#QzbIl@QcP6w|MWQ@|F>Y`cTO1DoziRCxmuqH3RPF!FG3D< zLh3G+Xai`JR=R>tA(zbJP1LQN&L@cHpQz32R16eez7jX7ElXp3?6*Iw%%K3Hf4w! zaa$FYGpw$tyob~_|3K8O;#*e)t!_%-NjxRV?c*`aX0usu1^^z7x?1<593R`0bL2hJcaU+LijpVWp8O?j9`)F~~Y| zE*}Y764ok&PBNId>|dNrGLiMYkYBvH27g?ARM0|`Sjzrw9o@~uU%pRZPrN*fR>JSK zT1bbr!^B@w%WSls%Ah$UBb6Cv1fWa=5DD1I7l1*iszH#W!SK*&t05Q(D)*My7xS|6 z2|A)7u%(T81br;ZMOo1KbO=?0CJWPDx2UZSF9RYaUD%8yJhA?elG@lJplqU2=>Ia} zB!-fPA%{@SL(IKR3Hs`daCtt$F(Y^cQ)mvpSJkSONIDfCm*yl9u~&M+NX@z`L*1D) zH{(+)j-Axb)bAIj6!Xs64A3`wo@eH)6<&cE-IyQIxNn(4Y-&p%uI_A^l2}niw`x!@0;!I-PzW| z@B3GMf|@LnpvyYjP=NqvG@Advd2YuZf3k?CC#nGmslBI6aeMr}V9?UB543a)u(bV~ zMIfT5^Zr2?pa0Wyo44O-+`#$<=~Dbp7~u&0Ty+H^7#B|WAa+FE3xkiE%Et;t(s)Fm z_2T8DBaA{NqBlM{|AcTz$8?)e3+G7`X(T0%=%eM1$I1T>fD!L<06S2Q#VmrephoUp zWj*y^=LxHQzdl~m&W%~u6I#_}7DXZ@n_H#)}A?JqbK#(`Brr>_~AfHvgO)Sk^EgYCY};#3H-BcL^igSUHOwmbcb$d zli-^GEJ<$7i@w*|viAMJCL|vL?HXDCXV-X#G4+16YV^ZJ)$%Ago9!3ta|eWTM6|N73pRahcJARfs4Cqaw0G7vF{PdSHg6607jAx-7P?fm8 zbq|8MzQdWR67X#eWdzCrGI-tXi$U#f?VJ|l z^%4&J%EU6~3}cZODIL|U)XzlYfYghdLg5t8^F3{BRm5R)4Tk2(p zM$;Q;3&CaJ-4!2!)Yh1;l;NjCn?=XBh%in|YJ^fnG$Y~fQdrO4Z5eQw}%Zux2@oQH~ z;BgTqeusR2;nL51TnYC1eWL1SMH=F>x*Hmdi+)-TPhFXUYw(E&BF|zZ%P5H zGGzQ(Sx%()*ztBSj?<;v8cS%0;8%ipXhvNUEbyjz)`lGXAc3Nc`+T&v8qv^mY$OEx z2Qe6nz-A^czmoXhuq~!h)YgtvHe^|hbd+(md^~eG;yxEDs6mh_RLkE03nil2KL%UB zcoRTsjv1N5XrPG}(tXA>;9_mH#9ZI|nTi=jGI{Z={_BAB$1$P&7ebOren?(tcPWqi zeM4u-t_&xybnnm7O~*|*a_t0-Uj%f_7aL2W7%G1~)x3?((_u+2xh5X0XZuTG+qykc zk&<&%$E)&t4u7>K^i=7cla>7gv0f?xL_=fFWv4+b>+SuKNSwL`@yWdeuKL5*=_8J{ znwjJyC%OUmC+@F~a+C`r^TR1yvrPGZ%vm8K?_Zt55x%iw$BUltr(&TfMwM6n_+Em| zJ*X>kr?5jfM{x|$^N?Z+8&>ch^L(MtML7wdlRb%_9M8IGI+IuztII;*&j;O@8m?cP zq&IsEDKyv#i^*3Dv!ZA5IvZJWGT}gJp+d_M-i76Nhi&4Er4FGQ8}v;l7Fhg9KOV&$ z=x%50Bb#KXqbv{Jlhq^O=D9=fM@`yhFr4!pWa1wV^Mu;HO~TCjq}sD@#tN;i-9l}2 zh52v>a-7$kr9)Q5=r_P|1mpea8?bS&xW{wbGIgXkKT2yupxyYB zvRIof()k44BPiX;(deh5vI}J*!ZqZ!CqeBf5c`AGdSO7Mlgd-{=_H~}O$-axW^Tj= z-aADYfw0uHm`v>znqZq+Y>o%6w@Jw^;jeg0*u2!mr`sX2sjg+KQ)=iO! zj^gmf)(eck+VW6taMUn#40r#SFhUiHH|dh4hZer#m`MAAwbg#FGlpg*`fh)h*{W1K zp+Abp!qBW|A$ti@B++<_%1A^!BD|pM`w>1_HAV;>@zuKz^n5Wh6=E_>?JZw$xj7mK z|Ed>Yd;{Lfx}(S2Lx;-?YwX*qIdr}p?_31;E7RvUEEU@z&o9`mI)ZV`7aJ|87dfs& z!kk=wk|g>RLbjpYj5GG3)YvbXF~7C>?4o%|k{D6hhQ4wf63R|i8n6%bI@n$jJlT^t z+_qHZZiG?2A(kGsMiM-g*rNBKI8!lo2X1IJTj;;=PUM-FCm%M&W(iCX-Kq_9 z$4x#cV`K_W5J?23i}~3dHpvOQ+D_!*>%7k@&H6Qdtxk^<0+U2m6LghYsoy3Ki> zwKU1ISfSnIm?VwEtfh{yNp!fh?qwAO&m2={`i!-)=>90{n7kTsBV&+D?aq#n^r8h# zVFEk{6%O~0+zUywtUcDs%>Zw zx2M5?X8%faX4D8(bP9=}5(!D95(#%S=`APRa$~r0--n6st!9NKY1bu7|1et6tCw*~ z$BrL>Jm&RN->XsC^6MfX{-Q?p!-81`@B*5Y@Kv&50eDssGTGqW!PNrU2{K!Stc$TSiXa~us&{_>00lBFuGO$QH4n1Av4nqpU1_4 z<*zpT3EV%n>O`8)ACi;#%m(?#kM@tHTsPmH+{;S2G~#7(Tsq=01=mHx$vK|_CtD&B zvK*t?n^_}?JuOaUpE3*hYp&Fbz#|^RaoZ_!_}vtRLmsJrxf?zreq8^A$u8g-07k>_ zEbIBerBf7q$Q*bDH}rXjsEMGTAn@w@Y{7|6>#FLijQHI+Ih{oj7vrFMb|>C$d@M{8 z{LyC{^yzbs-Sv(XdztXj?Fn&Bp_nm1ue&$Sv^^uUrDWxb#{=ua^Cu*E2n5P0+N=Q= z&XQrVCH2Fya$Eu1V31X83&%M2%kp?ES+-Jg&*#CA^yubFu-c-p1j zznv>|OnF2|@|AVVu2dHUkdd6ayb&l^4$+BSrSoEmQ?mr0h5sBU6dFORPPAfB!Nw~A zs9;0khMyWt$aVsAseF%S^?)@}U~e#69c@Ao{)CoDRw^R8MJLedqlN$bit6;SBJ)TS=R2vIAN}8LXji(*-9os$Y2E)7 zVAdIy+Jg=ww(?&dsa6u)%5x33&rC|omwD8g?892z?@Z(HV(sjj_ueDvwTWfUvs9|FRc7IyQ*I5zaSHpYV6{~kPyQU4q~9>*kluMHS3 zkQ-Aj&-%7_SHCYso84{Y^yorp{G(9em|#4I^5&U0ptKD#mJ_{7v&%kOU*__wEXbH~ zZtGq6&2dy)L~hyY(1&ijVg)zb2tB2R7q%zE)o2j>oVhT1zqMb>)sr_})Cpog$nB{B3l3F`|-C)v~ps*y(W;abP5h$V3 za+u3>|0>e}bvuiE+j3YmM?=yiD_IuSsJW(8xl!>TUumVsfg8T}VT~TZm`)=Ef4&*r zRHa}6ZKdzt&)3eKxy~dE_5+aNwz+Xh#rp28Id)B2*3P{Z<>fLKh)`=fE>^c1KfeAN zx-MEW;m{g4+&ZX0(Ik%1;$IQXhTf|bST!8@MYo9I^EY^;ZrpwuuCQLE4L}H3Nig;Y zH1JY01!K>;UIj#34j{R=;x+QfSvR?ddP$b!3s4g&E6$A>p-dy_i=bWIGj22T6G5|R z6kao*oxQ7_eEtG%Gw2x}nxIe3HQ26p6zBeO^1CEYkso@OKgvUMtO^o*ry(m+cx(9z zPvP~$IO$+~Qp2tVs=I9tdMlj`!10)IoF>10_7ow3f#g4a0%o%QT2mZ-s8fv3?->sE zb`RD@8O{lQyX^}z>G&m+fUN?ws;~>U1`8>4Kp(pK>4|S61~&<=ls<7vCw>uK-}^un z;MdNHXaT+@3&o)cHL25cJB?V7xpr0KML+Hb_7+%}W7re;oC?LU8`6h+I#cP|xdK1dUo*=aeLSvYJ+6R1z7Kc#BcIHYy}G~SREVff~V z)+zW?8k_asD!xqMPie*cwE4l;7zd4)I*5a(7L0(0$=A5T--zOC1+yiG#P{>hnfmqW^C`SUm|{H0BQO4ZGfPkmA0W6wO4JnAh1=))qMHGN zprUnUqV+xss>9LzF6B@S%Rpx8LQM!FH z8*twBNp2cm5wonLwhp5!EKR~~sU54_%|1#zXD(z97$K+iWj3TWUX7GER%+SjFw984 z_g1Vr<=N-(kCImg|B*b3-r#34KT4rKOA#OAD`DbtMP<-%D4yj%AEUNyQS|)`D$bG1 za32ZzO-}k^)|zzoR6ohuFiLB@zg|CKnIl@w5xJk6x*1b8D2ma) z=vOyDRM&!a#@>R0##SZ;@*Xsni%D4&*Gf@T`3`BAZd%f&=@TZ&5)r0VyDVm9Vv3py z9yBSkJ}d5VNuAJ3OWBVzi^BSA#MgpV{=&&v*1eV@^Es(vTf}EoS_B1co(Uw=(?>Wd zmf$dkdeh|$Gh1FUN(1}T@a^u|YGy!w#@Q=pIcs%D-(!y4(FnWRXZA0_J3Df9PoK}o z=LhS!;w3JvVM(qJ8h+THp}w^yVQu7{dgedX)ywozb=EbDMZ3mW8cS8hq)CbSh>Vry zjpY(sr)4I;HoeLCxF@@dLb5FnE;K}uWK6RNLW2|$Bf9|hgHVs>kxNm9(Oilw`npIE zQ6^x-(LTb5R*U(hZM8T3zziVP4 zYlv@gL#@GRI=a-Wo;N*M?tJq|f8%|Z&13r4YY$GKt2mCGRo{k^fgmL=9ql358j|y| z@eMww{AS0N(${W8l$K}^R@ZO2mKN^R316!<8Nd_AvJ^s|5a`QLD||=u*9uVtSs{F= z%4_KWfxKTb=0$rWk)Emek znD+FevMi&($wcx39qoE=t91!|OF)vWj$)$(2CS9FR_pR@>vC_bsI?;lv3$^$d0%({ ziUkUa#oie5M&7<3q%N-}37U`&>NAnNl9B zseifKnrsI%=G=+TsN`A+4lcm3|CW_{yS#I1$h)y z*?SI@=%hJ{bd0id8u%1JcIxGTR+?Fb0|)BuU(=z zdKh>$4p#qZFjEwaC_nM>$oLm$<`nMg^X~brEoPnW^+)P$&^p7%=S_-i^!>&zXk4g& z+;j-C3rJBm+?vv8H$7e9Kb+Y?(0Gi`U`S$;ubAMq66a{dUc(G+Ds+#;KtaM;5S9cw zI&QAJ$Hb?}hJo}M z&o9Fddz%0EaFrU$_TR&m&Gp~msz6HbCqd6auO1qdePHdxVXDR=gApbCvKpm;z}dx_ zZ#z}OnFDpfVoYqwgv=KN2rYf+JBEJGlx zlUkldO*?})7v8%J84KAL?zMX1mT|h1FX!QPq($u4Ucg33p`OXmM7F9j^GTgA2GzVD zq@yQexy*3WT0SEK!c$yk78al5$8VWn66#~W_u8P>AZ9IgmGU;~hTpPqJ%@YT`o$s* zM`&Q2<9JxXc2qLl2aB=xHFe5oqW)U&3(pnBGxO;(LU?}umg&_x zShEQ?v1*?~gdSqRm~a)kj93tj)3kwIVRT|pmzPn7S32Y*1-ypehudHj9WYLW%!K@IFc&DKkCPNe zN;MFNupt}a-|mo8*2|S_eCNthm5S*>JcPH!&C(Pu-fZ!aE-+B_dp`&yLFY~bUb~Kvd&P9 z)~RqjVmZ9`d<)V*g0efj^VC3U*}0SQ@0vQv`ibYlnYqB94A+JYhkffp3VI@K*bZGr zGN;N`j?Bcjq=OtQx1@{J7<&p1h<0R)`=VadP#B^JovD+$UwaTOB(C{@B z8eMc=_Yz@tdgBqMAVND@zu*{$_NL-@W7JP!+!OQmBFCgz3$z9;feIguWy=`3YNlO0 zQEUwHnGU?KbaD+sXE8h4dW6Tsl0&wr^@?yR4kBB0+wt6>g4u^l-kQU>QV8HPU=d{Nxs&C+jw{Hf-FIe|`K9nejx zbvch9q!a!LFXPJq0+dh#-;b3qO^x^g)=lzUirL2xCq6fOBf!p%lat2bZHU(rdj+0d zD4(~g+2+=0f7?KsrxnggF}Pc{%lQ0dg?^eNSTxwVK1W20+sdx`C)UEnD^)Ab$GkBlW)v0>LK*Y zh<0TrCoYTfKk+ODfXLUej+ZYcobrTVQGM}X=Za1$6&iKp6GI*EOm?Z-Qt%w(#xN(@ zEfP&t^xSpgF-) z!Pm_=abetDX+7{reV&b>7X^4aL7xukw@W63;!3k?c{lzv*L!^>YpAF5(E)v2Fzew; z6t11MS#I|tdS|1W8_jLvTT**utMtFRv8oA-L}c_{)(l^2_N&};Z9^g)hhDiC!^5uI zeOskN0qY$79j?wa%Gi1CAVe|oy=9;7&0Y9~MMF6=$@g8`)~!yQE^8gKr-9wT(CT$m z>+Qoy&Cb;j)Y*v~H^wb=+l;P3nwp&}2J}^v;rm}5hj{mZ%=Q|%rP;R*QFYY-~BXc$X{P8XZg7UHzXT6Ys`JL%0dE#$6Z`yEYTcA<|2kI zdVQEN;cE+Qd#2zd!fCwRWV{T+0}RYXW+1LehI1MH3NoB&mJshYZWKbs_}H?3_DR~i zC4yJZP_{KaV5W>nH94!1rfD;ssG#@c>nmOuxwm6~x~5Zf?Q+rC2PAi@mo;|;_ZofJ zqtCk=Et?xE{*CG=>I~XAon9SdoeT5=S)0q=n|$Y}K^A>&b(ErqvhOqC#GU+CWDi9@ ztSl;ePGAd52?dbs=6tXZ<9ZLhG(^I%4Mc(N2d6q(3%2^C;|dg( zq$CIm9)fCvEhtFfnb!_K&=eGIp@h`FvWF`9{BHV)Jt0hxPK6uBn4su=mOH}D+Is3F zuv)CpPvQz?c{OO~16J}mM7&oKMhRrIRIamXiHErNmLC899;{q~Yue!phIeAYufV~S zMzTsW7+jD)lf-y1Yu9I!EcVEwuKB~hHQNiifQYMEH-DgJ=1(=&%g6MzcE$Dq2zw&X zZ*Cl1>I!=Cz$-|5DCZof4lk0z3&GzCIrCmHf*;UpNiHy2ztfQZow%2Lm#4fSc(>OV@85>RvSdAOU_0--;wtC8*- zOFkoa=#QJt?S8XqS=FP$ur6(r+@+XJ+Ar{HzRs7KF1Fh}r@5m_Brv0J8Th~UXHErs z(PM>>@DIgg^P+;qqHu1E>yi8SsGp{gq+;4#EsE+s)cUOAkCWkdtg?2@E;B6gdcaa2 zVJ_{BFXhd1L8N!xSJ0L!(J}d>mN0LgkCL7BW0UvGF6+-aiN3T;7;n&4D_xV#8Bu}d zE&a7&#Q)kbUcCQp!(2*S^YQIut~p|CUd8JI>SYJcriuJVKZH^4rU)u`m5!a_%E95> zy$YuhQ?tHeRZr+Fw|YUP_{r9ju7t&GgSZm|VteA(LOcpIY^Hs^RuiMRgH|TXan?#b zI#MZ}T5hz_4rJF!P&UlOQcjC12KCp73D&CC_`i)9(v@IM`hT35795ZhgO8Yu28R0A ziTVAfiP=;9FL&~9P7Ga&oHb%V5bETAHFPn3cZFxcCATHc_3>!^YL zB{n|#B(@0BaGTg*dpIQzIc3`_h}||hhN$dI@}Cop*)BcRZT3ZNH{}7dmKJx0HKSY3 zqD=0`faNMtz~ui`x24ncUv*phf9tlq64Oooqi)Ma{@-I_80KhD-Ink51tfSRBFL|P z!q?k1KXrq>&=|P(#%#YD#ie4Z^$Yx!%gLTU;8X5#ZDyuIa+yjm`pG2uZQW_KUr6QE zI0JbTU)*m2TC=?t##Y?M{SB4t;puS}%Iv5CbE1wvf*slc|8T&29ND3^l@)qAeFK)K zeNh)}s-dEgp@f`&;f}XM^6?_3i|2K|<+|pv#&MeH-_)7gbnENC>Wo%Y?*Gn=>;3+e zGG7K6srq)SnT_lf7`|OmyM8ORT@wrI6Z5WXt$79SB{^|VlF zFD=5>vmq}I6tv<8w{Js;bfRxj z2-B9v;OC;?z5y~l)^>QyzE+c|SnoDsC_u63)33=-~PMZjDB*7nYhuWLS2s#>cPF4>bpZ#NHfXK>Qc&=qn1=qs(E6z;SF`*a`pEds43*$Z;@83}R)Op`s6j9&*ci0R3>{X?dI;_WMoooFA|z za-=rJ?&wKF#KpI(gy*hv^d?y9Tw)hY)8z9w3hd`+>Rv?KCeMv=_Epmjk4-#c-M1#2 zD6?ZfF}%$qpPcu*NGiwJvxz5lvArrZ&+XQzj97!aOQjEN6D12(Z%1z#aV==%Bkh3KOo4-l?Y7r6>rM?QQs03@je(?_6qef zyeZ!+1wxt*A^N#RM{+YsoAY%*)(Sb+xlES&fyGG?+_S2ck*1Bcj=; zeFanAJK16|c|RO4Uw6U2oemvpin1oC!0xg_YrSflP$Z{f_pjvXLHC+aG&MF88Q=S9 zFN?wg&w`Lsj^ESm z+5kSFZJVogV;GP40OF%VU$bimMNgHPjYX=7#Y?$?qRAo= zVf9MuH~5UxW$}mjKK&Wfk++L$e_P7uPBd9|3Yq;_DhSRop8TB~6K=XhZ zz!2e5JrT1vJ<5klUX2Ek4)vqE--ZT@Ef!g`)n@2Ir21_U>t@= zusHl|nv-cA>o>Jt(otl*X1p~ zImRib{ZN%l))|8fD1aSiK7-Ew*g!=igRJMj9rpby-^{A)R6%go;r>_J@g+gNfa_UO zXv$gin>&k(v?Hy~Gx$uWn|*?yirz-W<)+~HRg?Py$W7}~2wdx{p?l4cMiSd{ zTSu-gG8gWg>do@V@+N{`M>4gaVRUXivo^E5&D^Yct&9uzSL!P_C(RYS-3!;wGgrn5zjk0vX zaJcKyxe1Xj9pSHxNr*BCUP==5X<$7#^qZZYe)jZJjD3ZD@6^_&kNdOY3_Jd@bGdHt zim%!>Bq|CtDTQK+&nycULsK(z;3U7}Nr=23ZRuEcxEG3`G~Yv1Y=AT=8i|TtxL*YYLaI6z} zTg-^h@Z#qpUFB(giM8&twUkp}neNM;WZXLdT+`sR zo`XMt2Yz)wK?OGnR5g&D9oN;!3YIfF{GZN{dZc(5-pX3%UhHbDv1+=Hj z=zJ`e!X&K*9+~y+0Ucaj^MIo8jzg@!UF~$ zJj@>rfO{YQM+GWw0$ zRt59pvdlASle5)%8AgzELX|abs)?Q2%JP3BuZs=*kbqEhQBPM3%OaTzIFi9BNva6@ z?O@3?L3@C5PcL(!uYNufZJya3q7hhSaED`O$1)l;pmi@b?P!Y#cZ)UMDK!3O6@d@DQSWy!VjF)ate|;b~#4F3~h`Viw ze#efz9Z1+0y?^N+*4gW@tH|Vg14^g?A;3G&2@Ze}xuYY%gG~X}1XuHLY%$;lEuTFNg8-CF3j5aRAJYeptWGQLy zfg4#JS`)sUoJg9K33gf^zO4Azj1s&B236NP&` z=Y~B;Se=Jum?oX)L(zLV0~Tg%7YO}-v^U!(+tjN>e^>IaPZOrA<- zpofCE=`7jFp-@su54~=KDu@H@mp)TK=(tFg=hgBr=)%vRL)*6M&%{ zxMtpf^YV5aw-W3CYmWP)( zn(MEX6p)>Q=?*x3QEIzpeRQB)mAI<|9+^6xF??I!{!$a`RS_B}-?UM^cmr^;I>dju zDC>O!6x6f?1M6e2Y0o;)uztHp#Mf1CC-($XOc3FYw2QH0z~j#_v_bI6OS0wYEeuy7 zqErRl_&i};!DI7hQ@bKo%h(f{=#!j~CzVqWXe){imoG&-=;v#w4 zH&U#DG>@jJKxeW&?Q38om=u@A?eO{wo*3K%=BSH2c|zYb=r1>+ZUH4VX_vsIqta~v zRUXIhXP}l(5a6bu`>U}l>X94h$2e+yEO4*n^S&8sw;R#UnyGSVH8(e$+0+xDVJ&3RTZ(RvyyUH`OCVaJrmr?*Is$dGX#Pdx6VG zb_(|!Vq_Z#Zyk!=9WwCT0{vCn-)<7ro-aI-A9;O)5@4G?6L>O#b#$Jf8oo{H*OaL~-OdNUcp? zXxJ7~<`{Arz%;5+U`sOag+_iKC+--x_)}FggG2dnxzF)UM?=t6hT;tXm>2yD&Ga&( zJ$J@E@_uo8TDlLw$lHD08QZdX0-C%h$dI1`vwn;*zA=me_eI||MT_`=BwoNH2Y({k zo>$9@@@oKPUTi9W(b{M*Lq4Gs;kBc!Z5b#=#xT}FdxLJiKL%VsIyEP`?x;8i#LMb@ z^!Pb3pp#q!ewUlSWz;8rt9hjYU)5ZzumN7KyU!R=JC(G-bCu!oK%`K$&8ozJXKHoJ zzjrYHsW^LmGY=KQzkP^@fXic*&h(HC52veOtl?ErHh{-^;4SDPY%dR{e$9~YK@#^` zLBgoai`df(dR(eGc4%V>M-2>jKU?8LTqXKXl!r7Hn>XX!?YTrGF@iWa^8IuLWD2fw zTG*dql~u7ok8LQHk~D-RmC^e8?@n!>7f>EVQ7;jrzd>88jpShD;wO5q4U<}F=QY1- zMm+(u5`mT^kHG!=d2-;0jHp@74oAi|BRA%LMZ)^R!Rtrr5WSb{is@E&gHm{BAlA#m zY=kdDX8#3cP~6s}c#}$_f8uGwiSl+2ZZL5eCI(+cyE0_pbeZln|AIX@i_-zXZotT= zeL`hHViGQYCtjF=f0pK33lH+t?x2H>h2Uc4^ui{sugd+m#zwkBJkB8htTguWgHdnA z3FCY3!PiYf%L#$1VjdlaCpazJCpV1WB_X(ZJnl5t1Ea4U2s`L`p1_8N6}p#+@pS{& zK45}O@ip*gfhI?YCT55bO!5%5ucIn*VAu6mS#$|Hl7g4hI&PsGfmOcYmhcEEZzTFI z+?z&al#)a|skgz4r%UY%M9IFI!0xV8G@ofyTahxI?XM&=p*XrBWP-KL7~ij+ML+AQ zb8|hjofbSkT{$mi$|I*ZrtBR(b~d0WI%B4$7AJ&R`lc#U&mDEBe9dF!`SNDj@UVRg zFm=oWs*8$L0VS_J-G(E_al-Y(0><&CNeA6&1C3ei_N)hw9w1l{?moa3c&(a-^sA&d zaJ(-G^{y-y^=q*=g&KaGM=|8uNECimj|;xXnTrDeNV9=wWn*m;sqYtCZ@}R94S>j( zHLY}<_`v#EY)dlJWC!yjnML@B12 z`)$xF8u@NX*K=L(r&2oUZ>cTAGN<8ZRzJN~;lOZGKx&Bxo zt03&6vM3mITC6#b+qS22{pt5Sw>V|OLS@A=WZc;C7Q5DiFCd8Ms_jbtNh?Vmb>c?8 zFLu+E=4uXO+cX2O6!kh238AJuJuZ{(jr_`#~=3D3Jziw5~GjT+RkHag1)^bWs2NEth!Hh#`*v%Lh`kFRVVo!>Kl*;)M#-R0-vUM{g#uy-Xa{xR#CjqzDf=ceS?_Y%llYyZl`#hljD1S*wkEDZ>`^;dKM} zYw!YbQlw!E3^kNRo}!XQlGwXyAaKCI)srs#0-er>m7^zS4b3&+pq6ZwzH>Uh;Y&MuzdeA%ZRS8#;a;+M`3QdtP*%CML0qghTgquj!@zt$Ri} z^4xsy2k0V``lKmJ<{fg|v6ANWeo!`c7WXzGBO2`KP?-OOnz09+4=q96<64I}e0)mSqZvF|}5pveFk8oBfEseNS84P2_JyeRipKsXN280xc(pJ^@M7C(EJwrn1=M z{dJJxR#rMnZL!A;ZckK8F?dfvIrKH5;v*>=@S+~&0l1Pj_XHr*$9}qazwIol9_Adf zCQIJ(6LlSt|6(}Z^VA(+;6sH#lw6-`pnz?-BV8&$Jyl;#&#KEQKT8e}tY;v3qsfCQ zHv_iJc@0oJcZ5b~0mt?~>^0m^-*%1cqt*L6k&SwfcO z^mq;>*i}5u+b7m&Hd)ixNe)eOvrMIn;fG@>Zn$}&k4hzstYIe*1^S+X?I{VwM=Bj9 z1yV7-4~&mn(7z9e0&8Mr#NS&wer)(bf>r5dFQ%RI!++3$6~hR&WhnJ8DPIj-Rm0VK5Y8#CJCRW9>-uLvfcEd=NdU|7ouM??*EFEl;lKniZSL*DMszrx z)!*1d3l2=pxh~+#osX2WnF~0b2a=$4q+prx-k3{0#mr;6dGi_oRi~FmR4I*G^ceMb zvlybHApCwc?y!<#LDx1qdUI0iAgPy7t1%i}pXVxWur^+LY!AVd+kDsK;rg;?uaAro z;rD@_?AXRMkqvxh=DR0yFGeN!X{}fYb!oq-k9N#hLSJ%!<@F}Yzn5f#fj)tjXGG&b z_LdcjCrgaH>{mws92j0U&P=-f~9eR0aS8c=M8mZ30J^ zJ939bllqPaDQt$g;oA6P>@i{n z<395THKWXkUEz_Nd-oO7gUa-{pnDbt@;*TDW|10S*&?iw1299vl|>ua*3i%lI+TmR zPx{Y{ii=|><0aOCgFv0de&eWQ?ao4D3f!s-4k*)jDGTwVQn-0?9vy@tIgc)m$B^I{ z)uNE%EE`+TiEmU5guR#$CG?7LWFfzUX{z4h*E@gkx6v)>6Vsr!yA@UB`Ua@lJasVG z`4q|&R?NyA0_)NyfoJBRsV+fAW*o3zN;2*_Kav~MoA>x~G6GMWt*I$fS(&6M)EE)6 zz32&xCVyQ14PK%>7rzrGa%iDMoq(SNMG0?;s08?>-MvgJbd*)4;YuVf0>QXnrFTDq z;hQGgRdPcHokB(fgy@irJXkN%eXQR1CQ7T_sioWN>6hN)GM6D5_*diI^pDi_&)0$m zd=&$JNgR;qxPkHznq8_iNLKbAN-1l9OSb>QyOY}oqOicM4o#l0<_UW8y;PJrr~zB* z7L>1m`mutSKv@_^)Lf}it@V?HjXi2JLe)y(nNeZp>INi$?$GAFgUWPk+ zTvA23JtEC@SxZTK^NV|q)<2#jhbS3Yh8NBsRj<4tIh$KD@o|x&>L_%83o}Z)^Al9t z)#NS(t9T6?PrX(b?rB zZX0hu{BXP9o;9+r4NXCsmF*crYL1Zu_u z&ID(HBUmKb5at~Wlt#B0#~R*QCK-~Chu%4U_#Ve8P0PfOyW zQJI6{HLDZ3{Q_m95(`VJ(h_5UlIfXY+R5eEvz*{c72xGuW=@=G==Q6qa;bsXtp3%{ zelT*XsDf1+rC(OCUb@$KM_&mRwTXcWK$smz)d;I5O1<#LOoZ#wQMFK7?L5GWUl5U45twSc@4gAYgPZ4&^!$KdYmrAuR|qi$o%B z`au;gl1gf4z=s^1yyzC=&;o&0Yu7IVsE8NCvg8Y^#ZqlG{sY$Nbv`Mom`E5_4xP`EO=s6>c%$mCqA&X+rPQDmF`z9 zB;IKtrmBh#PGg_)l}NKPs_8jPfh4wMnzLI0rH3U36yMdOc#P6BpDG6&qTrTi@;^#vr47Gkg@fcUy91v$k z&*}F)Tnx_e)Kvo*dsuxG<4_kfl-K@nI+B8^_)&h?jMnoZ@CsES78d+TRa7(_`!p)< zfo3!aWE+FJR4FQv?7{}I>N#mqHmrSHEmtoj;d z4Eqc&z0T@phxK?5bW>Si4#Krv%9O-BR6BpL>B zJ9H*a*Bb&!22cm5C*sZ}Z2sbetUh+58$bAn7cU>5(*@{ty9-CDc0GPYlUWlPgw$4= z4Nz}6rmn1-!cCfA?40ngNx##v=KM>{6>^4qnmlqZhc#h+kzsjJ8c2@naj~~X#oxyJ zD{-cbHOOJ$^BNro(;>IuD1*PDpEry>@M+<0F`D8*27mJ5o(u&9!%T>D?D~L%8*Sh2 zb3)c7d<$BKl7=v+m7pgkTwb~`E--%agNd=$GZueJ?S##RHnT885~Ti8_X{*2-@_*t zt*>Y(&sf9qdp$~Q5WDN|Ff>GE`ET*|zuTRiMEr;C%~k$~rIdTJ|IOQmOEVXqK{^yD z78n{QK4i&;#)+-CI78!7cE+|mhy-66iq0j$a@nek6wAA`_+o)HD_bZgvoeI9&k)+$ zDTcTzYbmqm)QTl6p0m2DWOJR}w4%+m5`Lv1rNq)$ANX7y64iQWrdK@jM~*kPZY-Z=rT?7^ph@lo{;5?8F_O`XL`4nbmlhWAsGJYvuol?_&b+Z z9L5^Vbn_=+%%zD<1CohNvE94`7xQnkec{TttT+5OVIKV%moqm7fkhh zECyry3}(a?PXC4!@4S1bb=K6r)eLi zx}+>vApf;@_V(iX-`!RG$K{l{^uK9KB134L_;AR)Rq8k{K%OSsf9t~J{MWE~EH`aJ zM&9_~+VO@sE&O}TC)rfJ94w2;R7TDD^nUEbkh7juL@x!Ng-3tvz{MSq_6iouaXKTQ z*UmH=z+(HIPJ8-tN3eyru*!bot8B#%ve*G`#kcMyq5;GE*TA1nat601BLU&qE@~*l zY4@K%PDPYGOD81!kZFuc_mw7=Cmot4$oXu`9t!>a+NC`G?+smNJe_cr{vz`~@9u7I zCh|Y8@;@!781#QFj{&T+wXt8;Qg#};$Dh0~LWd<G{*5ixQX$R=hd@rzMjTdG(DSs%E=Q8OI02EPBX zjz=@|vt#eYiv~ZxL2Y^%PJ2Dq?YsRA{`(R{ZnvM(ntP!^v-(b5onYj*?B|$aEOaWd zi0LSCb!|?^IB6uXpbG`VwjeG3#{$1UUq?$DFx5j^-0)WNlFoo<8(Sn4lcpb-9Av3@ z73+@!Hm;DpMTNf+D5nIy$%&(3G*R(wEX>e(?v(aSp5D{|Gf@p}Xgz-f^(~W(25Z3~ ztQ8KdXN{iq^GC}>0p=gqO)nZUI4FyYd)64wK-%VAnr3tMBWv~D>(&^mu+ESF-u_Pp zEypp#5Q#Zo3J(T(3(HIIKc%IRixNd7C;!d(XCRK#z^yeJjjAUhk+qJ5_IqY`i@h;@ zAWUbgUK55}4RuNq$CWxpCpUs-;4=}Mp=aahaeVGA6#HAmQ7j~s3LqwgymlCz2w+0!U8J|R;KyULZXRuR_fTV zTq@oF&0zbBrGWl-_BP}C-|g+)RsN5ql%?PQWf_8;36&8)H{Zv--#xnU$3Fd_A~DWs zevkhAlfb(MVe|?ks$M$75M|mY?5&6e2RLHzv1@GRhCOE}5Q4{n??+9l>I9v*w`O85D@zh*7rgJq%ksj+#n#`DKv9g&l#gd;k5@} z?M3X;4=|>NJH|+CWB79t4G1w6&@S*NrbpsF0fUqN!ONHQ=K=MLVa!E@AhH$=5r~Xi zB+NjcsQ{kO#dcrjd>Sy1-8Q(ZT|KRjQH^QBP5uu~MQ;&y3 z#~a~W^bC5w;S z1jfP+CX<6;1alTR@ETAUz;vD+6RhmMrjyCg9l`K8L#@A2RbK)9rs{k=11rtQ6ZW$o zbiF>s$pQorDf-qc1k|iaUFpb!6|2MKjhs*WY;Bg`&B#2GC*cXd?3FK{ zYJWmB^(jN8^7;?4SA9 zZg2x44sbUyIPxmvk0G)z1sZ-g>(*#g!fKt>>$b395R8nIIbE(TUfCD84RN8rfHQfq zdd}+Zp4D>&H>$Doc)4rSuM&%DRxwgWf6g9?Xfiw`p-If2`3~8La!1e25X$AQb?U#n zyX}s9wlkgSn4Hl?A@pp}>X!#jmKvUWv#Jg+Z8P9;4-H%6j%78J(MtuBFgcAt)jk;Ot9rUin=2P6}6Hw%Y+?^_is>DRBHa!Q}yNKB_O>4sV~5Lc70~8jHSEc&=w>y~sV>SQx zUrNz`7?sIPl%JOw_CKBfR`Y-VrPBN#;+ut^|2OyGWjy}(D*nrIN=)4e$6Eb!v$@;c zto7Zn7kCqH)_uT!afc&DON7j?;lR%HN?~H9)CNAD*fEtwxZi4BdC_3nZT9?8>&Oe- zUi9CuoN>F;g2s*HGOK-bZ*TmdPpad=#DRas0R;Zi)$!yg8esMWb%72iGx$B+$MAlU z=Y-8G*A4&jPdDPnI?{l1g@UMn?`!h9J&e%gy%7#vcW|p=4K6VtGn~SI{|lTU{cr+% z#>Ed(zy=gp@SmN_8vmX0UFv$Jkv1}T-U`Mp>fQJbOs`gE0I%f~cADETgL(5`Y5zA- zH|tU2@hWSqX#elDcjEhhXBGc%IpqmEgsZV;;`X@rKk{dIJ#J}0nDk~kVV7vHSNowE-b~=%uJaN8jYjbI|3THiJAvl|eLFci zh7N_FN3H4gU8lwC!K25h3#zpL-yRDdI1T}U@W$+KiaE0G zE&K2b-WZ_K+z?#{*}*jO(P0eOp2ke`Q@l~=`@OIgIpN2!6->tswA1l=M2T7h1*|dg z`wd3|Ypo+mq(2!tVPSRw=-xq;rV}6>x4_Ste=`;sGc;U-cbD+lK!YtGxq`B3wMk`HcD{ za!*cC+z*80Cw4KqZHNaK`?cD|#YN8_hj?T3lnjg%phko0>*`E=Wr`dGPyh)UTW&ju zE`me+rFTUWpu7S zy5|SDgH4JcOmp$FW8#C5-DD@1=6e`g)C<#=7~|6Z<=wl}GlGVWiO)iIc))&wSFndh zu)XoSWdqn;wo4-S61;$Y6FA%#G8CU+JbHx|7~usB&q2TM;Yh)V-EJ5Q4CWfvCViCy z9}qGBQq3n_o-uz)53xzt|3uEE@HZ@b=ax1xQk=;5;rCeW1P%vcb=6`u zY5N9~AJwx-zT7)vaz6ZWdcba+;m2qY_|vPw0*QOW0NZ*ZAH(`<_~XV1mWl^dSYCWJ zU=cPrs`3$z2~vY3Z=~%_q!zvbh%pGMmvDN-`&&uNk=-qnQ#}zPc>^X)BR%oL^?f8G zPh#x0R-?;#PFi4n`gFR7^#@D8=irpZ<^?9Q>++B4GoWA>Ed<`;wVIM!*hyM1noODi z0Lzvekd78&-HT@zxJ9C13fl#DqNI)l+xwk27h8ttgSBZmuc)c?ocyu0U<^Dr{C`t7 zxZP*ZKA)c>=Quxq@qhLI4Pn;KIo{`F)Ah72Y&9~z1kKCx7j{2e= zopkVax-Lzz9sDu6J?A)y?&{L%1BXoD7EVWN0Q`*b{qe`o@HeF;cts!sc=Tl*M*%C* zRryc1KmNGR*&EL8v6M7Q&u>CD$(UhTFMEy;`E0)IOhv&Xs!(EXyDF!}G|8&q!MbAGSun zt*0#p-WlGlFQOliHTo}}wVoCAm)I|i9Fx)1$4YBUvgo+yn$L_eBfO1Q+O{gIzN}!p zhe^+>4zJ>~K_9%Ye~WF2t2J-t^kDM3=OU*#jA(S;y@gd;cK4=E*i7Iz#9Vzh({$sF z`~J;7+Zu5i_`?sc-@H5C|KSIA=0>zz9d?bDXe5EgcdjH=p)U?_;`|sRXdqR|1Ivau z*~-&Xh-b#j>A1%a3|@qhO77uo-DC%-AMFi<?0C68r8WKN| zcT$}EWGMWU1E74>5)qM!LK+8X(G8vwQqR(&nQkFZ%C0&n2e6p0F?x$QyBnu|)KK_i zQcyTy==VGzS>`E{4q^PTJ){Q4VV{57p?PBF{a*UWi0E4>cauIntK&63HjdKbjF2XP zD-7Vd7bw~DnwvV-YIp2Z!eQymUnOD1bAWE?L(f63@AeH<_14z01)ckBc!FvH_@ejJ5fz161!`KJ*c$Q$Vg z@`f|&?`~h1xJJ%Z`X@?U(baY_1^VO{z3CmsYik^}n{KS7#E~>9A}rM0IG$X-_M=lE z`9OCHFpc3Tf==3vEF6WW+uS%-U6(`u>ZN<_4l`Qav6uc88)A+5P%|K2Y-e0U{#X-M|$#-9%Rj5lWRTd+B;>&wG&cYAxQB$|Yy;K6TQ?C)d@TM8(> z1^{y{p5Za+X5ayL#^`5mgEVc#ez}$qnVn7_D8&lW=NoK>aBPoCVkmG#IqXbiA53W} z=%mQSjWQ4($$-6jS7T)3W&1KAR$hynS=g{(f5{?M3B%T~c*-v_-J5*1#glbA1{P0@Rg>yn{=uw2ria1u?*DsNL5SsddRvH%5_vs z6!tpnIBG3P5~6(f7HeLRIRh+5Sbeii`V4zUP+l{%oe3b1Uzg=93&Syu$q+>0{?8^P z>-ypbyCPyXj^#yM8%GRJoQmT+c!8@?jvC(6a%w&^jv_+D$!RgBCXRMG2;DY|&zxC_ zMJnQ0l|IIB9LJHlt7{ zR>sSQI1`S>q{W-7aaXf`Hjx~(l>|Me@IlY0_wHpNPqR~Lg2&?f0 zY12P!s6T&0!?G(fO+utEOsl<%CI&@^@psU;aif}j-~XU-0Cg)BW-r?Ku)yx`U`SFJ znxdoKlEeOS@am;WjObfEaX-QD29*7i)Ag^d+Xi8kq6qEH00G6WXz1c$o=+&u-HGe`j~Ay|VvbMtP#H zB@GIgeoxhG*5p0jKKuNo##4ZCOB#7|w$CbGd|^Oj=SsO7GBz;+#+uhYwVI^=`)s>b zOV#@Cv-Sw;sY{D}hL;JonyG&0$S0JvWC&J!LW)m3i1vDJX!J;&Z6AgGLFkX055(2jHqwDl|UYaw-k!}VEE{Ln(!U0{Ypmii2OVIX$|FusC zf?CZ!-eiGw)G1LOx(XrlJTF=;V;;~Y5N__vGXpL57$vz4XrTamM22H z3tJvhBr{R20JKa-AKJhttVS0&^xEJG7QI}wqW>jXEAq~kXRXNlOU#pH1}7hxW^nph z!VFHoGR)vI>MJui{hrL=(yOBxTx>QHW^e{=$(gyuSu3Va*ut$9zsYGbtQ93k-H$~= z<=lt!ca$&~C5}^3bx%%fwTQWm>|T0OH?ew@!SFrP?(=NhXVvGN7SmBDCQ+nYL1o>nC6bJYB#y8BF(v?15~t4Wi1O-UPRBFq zf26QuIh%RTb!pw~TzyJHh9k%G*u+;b!t zBlhkUPb!f0$rN{2#*pG`fn+_TYwp=cZ}RTt87w02lBWPlNAJrQB8Tu^ga$^chrcW& zPKDa$l{fZA(-BcZ-M@UxAInc@JpM4f_f}@4|F$!!Cb3r3^Fqk8I+jqqjjC>OD9h9A$Eko)~N!eEapn4D3t&AV)37W{BJ+@_^+9a^?p8M z))LqM7_@&rBA=Gj@jIpU`#c--zP)P}nYS^$gVHG&%Y05UNw*r=D*CAv>v>qEjIckL zI0l1mV=Qem?O@$VhdlZ%&7mt=v`;c=u=dtj{^F?x!Z~7f7#pI-FoEo|B;lc zs%)SPY~X~f>$+nRX3Xt3YbRsouuJ!bjlA&`V}79tgf{h%1{UNpExn=*dtVj&ON1X= z!@#xnO`+}V%qgx63VG#5tkDRZ8~-SyAKRVBF8@7}BIG|mh%IWBMA&*NLLIEkLbA<5Qt8LHY!s6I!4KRdWF=;b zG9&$$e0UM}f17)8{V$OJtrh)WN~v`ISJKz&{%`Jsf8n)X%KaW%Fw-CCCt>`B!HCI> z+_?IaH-730F#YQ9p6tIG!Y7bOLDBx-*-7gER_DLvl-T`GY6zdic8?p1Nd?e%yRS1Z zM;^Rh>pu8@{5qge|GyWv|JeZou-gC2C|`sBuk`(TQ7IR+x3BJPEK zc2}EK$4W@?<6)|so@_6w=7z%1j{nUc>Kp3UzrCoRzB#IIC@KsO>Kky*#Q%y6YfQlX z*+UOo=?cw9tXz_!`^!3HCUi4`a~Pky*8E}J4oC4+)pyM7Z^=*{6x|{}UPodizkJxi zfEKEY^!!fCnkw-S)=u~u9f>X2>7(*!=5#fe=3G9?IV?SURVOYhuUcZR>)@4<{>XTW#+J{k(qO#zT&u8v}VD>^S}2)55)Fg&XDCY)j3Ax-Z)?O=$NOpRJlb< zI7vTJtA_1B8i$+Phi#Oh!-l<;@>F`qs#$*51$HTV5(~Oh%~W^0d0%=D^8cds|2p%a zJ__ca|Js|K&Aqt(Z+mtATTZd#Xr$}f$P zn|}+FY1y9h!=k`7Vw{3BC0k?x0_lDEH%ho19iX-;4`A+oJ{0Y7rLxZt; zzVfZUPG1%doX*ZJKrb32Gve1m21;%c`a7Zbom*cldo)c6p??*@ zYU#sC`Gv7k_)BAzPJ^L2Ja#HQKF7wu#Io4MW;yxx^Jl=^S}3s`bMdc|bReKe*bPsF z!ZuM%jg=jTb8XGJ2(_IULLxRVC_JGQ3k`Lrs;lCh$fjz0oyNnSq%SY!Od>*@@G|tS z-LV^nr-9$Kv=&(HuWn>(CPZAwf$I#T!SD7fD}IVDAy8%P_Lq0>PS1=t81~$AhDYwu zxjo}&s(rS#X)rUV?>$J&;^!3=P26I|i8H6o0uqfiFKBP(a!q6ciSUN9IB55ekxXH0 zU%AKVB}A-9M@yBZ=S-ZgH-t~Mkz}kN_#nc3r~|C}Z^j!L7864#V!Th`Bg?Fvoe^o# zdZ{BWw$-a^Gd5_}P$!~@+5;6I++_74zMG_R@d%=Fizc=e-?J&h6&nK^B#_MnB=cEG zo?wDZqvwe}_;5Ee>SUmv6yVGx0I8CWz}u{tKKd#VLLL~E^*j|sN&*6l=EvUZhGu-% zyzY&9=@`UjE0Ho=*Hlu6cw_e)IO8j~3>aIa$|W0#2O=Kvemd@ElwxK=$=PHn`)k)~ zYW3ep-#97~eq66^pAGFR)jO3AbWIBUWlo^$No>r`2Lfnxd*lToHg(Du88*AJ{YAOU4GK2@AIj|ixc}$w~7xAWNV|Gvxpzq0PP_rI}0W;N-zZ28eVVT`j8+k|j-#jGXxLiDyW-(Qt7Wl{cL zbLD^OB<%n9wpa0=mr`=AnZB&zd}PM?_Jg&$dE9O$E%t-&w2kvkJ)6k42#i_sx z=znK-Ycn4IZEt6#|65A={JHf5yY^sjVX9^{vA}E|FGe^lurT)74=s}1T0hi|KTS|g z7{#(c({gFnM7;)HZFu7%n%>Zrxi-K2>ZZ~!XS4&2lM!09%1&kY1a+L zE(W)w&j%PoOeh$*JfXDAmFR_Rt$RyDbM*QQ>*AFU@`v?i?c`FjA`V1YMTC45MN;gD z-FU+x#?6Dy0Z+`hjK~XY%Z{|>DJf>l@}(MJStqkXsTn|GE`L0wui1Z5ev%D5)xdBl zHqTbLT2Ct@NH%tttp3Na@yD^neP5mukmE|8_U`R{1}dQdapNmLBBe zD+c#S+%2xugx`6Yk^Xc0pNxDD@ltsIyP1gpy}Q|2(f?(XYzwiRpl>+$-!Ea0>FRh| z%#Z4Hhzt>iQ3V4Lt__)*H#dmjJW6Lz?!U!-8M5lbt3?vY*)D$bOhA&Cz?J2{?ao$b z?~(8SRsOG){FiA4^3?>uI3_Fk?>jHq^50e9TsmW?#dSsHB)#-fDF4Od|8}<8J1hBb zDJ3T10aaE%_nPhIPOa~Ty}+ArudH_imkr6&?TSUdKV+AF02|j0Zt)2zG`$cN?7veD zZ{&(FC-hEUB-RGL^6cAh$%WPg>8a-Rup9X%aBiAcUNo3?rvL^|&=^;u=a1Cll>Z$$ zNEus`X?N)LTHffYHT19i^9YtV(3b$3oo{b$erisDBcZ6KKJtIt&F9U{#%68gc-sFL z2oU@p?z7*W@gVfv!C$WMH+HQkqI{(*2g7Oaqv!sm=Y>7rsvAW7m99H-e2^qzX!;{( z{FlJ(51hzqf)y@<8vh|av!)CL8+!C;e9{J`rtWEXn!C;IbXr=x|Ce&Eiy z#)|g;&Q|>Vx3#tN*zJEGNqNFfod{#zgs7Y6)68xL?wEC_-jFsr@aK;p6v4iI0tCPd zSvZ}LdoK%NX$;xb(C_jH7f^cxr7VzMu3hqRHJ$?n003jmO^TNeYm>me^gg+L9+BYR z)|(7{_?SPYmWUFYxB(l&mTcCVM`!0}us&S?ap;d=wX(k-p0U0cgf%1)E&7+EUu$-M z4_frEd@#6b;Xm?ccs*`uKp=O0oKEQOGpzm43~wgzZ`b(<|Dt=<5B~>M|Lz2yKMmQ* z(J^#*4g0$fa6kq^>8aNA`mWRB_2E(N&9ASI-<~}R;iY*0zdb%UdUf0!^=IxQfB*08 zb~a=7|DDdx=3}@2eI(@x`zxPk_6v}CM#5gL_5(W^!v_zCA>HELxLwwF!a>(}0wM|A zmzsSLZGT%sZe*}>Ke%eG*J@9IV7&a#qqnu%#l;1%?+{Ne$WG8+2*I;B%Yu5;Omr_3 z#0j+C`KqD5B_;BKKdp=Pi_vXEJh<4;?!VEX+PZQkM(@X77EV+7s)f0i#Vx1-Qpdzf z!9+CC)p?I7X^CWb@L?nW8f7T)-G(IsRG9$9L}zg)4E>(xM3SQF5keTeo6sDnCjYJp zd}*JHZ%lcpiUS(*1P5sL4bbs_f~Y4XidyYJJm4M3TWt7+p1^BE@1qOSWV6%UVvQf! zb*H)6++4>HXQbysESv~Y0bb*wY*_Qg_$9y@Q1jS@!|6xL2FT%!U6&Aq!2sEkIX&`e zCiG!}`D`1(v$X^G%&lg-(`>Kf_yJ&vSK$6@>cP>MukjyWuntz+)DU(MLap`>f64~V zHUI2BoIo2O-}dO|El6IBCTvOrrf0|DgUWRqmQf6c#Xq9YN1Mk?o^k`qTI~+FZvYDr zxE(7hckD=u;)S(&eSR5TwcOS28s$rsy0g?bTEci;$S_+M#ozyWI)aUYQ$ksC3hQ6A z3xQ^h7rU7F{Ua|7rZhc2P5W1F)Es%^gKH4?QJ=0r!<_rDA5~pUnTgho%#l?Sc#XZ` zESP2E<$QWSc4C+%@p3*9Uej?ZW^>}DiQ*aB6T4Tp8KCZrNOUX|b@QOJi_ff%TKW1u ztH1S$V!xmCpxn+()^7} zh3}wvD2^=DfZ_<#Cuy3@s131`Foe?wdGVQu&9j5z@xw9!-LVs_%8XEB`Ow)#ObRNC zqk&iCTotvFcwvmQwTo9EiKERUuxDb&7wai_?ZKO^ve=~J6%Go&M&bok*_uzp&>1GM zvG8i|^}7Ad=iNW;w0AE1&hzJg>N$Vf`IGyn{$9s*cQ3cLI(xn6m+j}<+s@Y3)^7i@ z|EHZ!du#i0>$%&xbT3R4bp*FeOeKm~6&4jmd&~c%i<8UOesl^X0k%!i2$(HxyhKcw zEC3c>p@{#IkJsm1nw*c9bU8w5p9|&A6q=<`BDTuLOWd}coK{26!V3vqdAuk9+zm;^ z5=9VV-A}MRT`P!?W!l*}MyD9sXLAQ6}ro$>k-c2(r;d2|AhPfoK(4c6CK zL})gKi15p(e}P=4DpGO0P=3t8Dr0@gR_S=nL;59NMqJT!Sa5Hj(isA9)NsByz*ulzf9(C>R(qEIMu zWjbD^gYmxyB0) z5jYVtT5mR>J9bP}LZJK9qzF2@AjiV$s9AWGpsNxeldi5^lNAm51W9X&{<^?x9{MHm zdT4Z2;)UnDTqwqP0a=)!l9H~6a`0-+gqDpLt=l{}DR^NUGFQpK>qDKCdky!K12c>? zvgZuzi`WcEL@+957RDM`s!AhByLAF5JG7XAKiz8=j(7MCA~uZBH8vR>elMp(ezzxI zp;q;SNVXx=s$6+|@aq{nc=?m+@K9N=b6r2)JZqE31~8*g+|;8zm~#_0oME>izRa+F zZ(U7+#I?kWmfk$AC!+uL=Awv8l)F=`@qG94%pR_c`g7r>tnQ0Iz$QL@-+JYa@T9I% zgrE}Jh2`8LZ^O{4Ki4KUqn+kLfkOdQm81pv6|e{)ijXoUQGYJHjQFMbKskl_n7xbut2Ac?c+E3jL=;Y-yF(>Cqyxis??r}?A@4f`;}=RF!gEo072(AD zIZMbtd8jQEFA)<}E-*XiMF_kInI!C1)IK6?d{w<9@Cv=(^YA)@*A`xC z%z8t|8zt&rv^W3i&45^P9>s<4A$Ai7$mh|#7C!y^A;}vYLdrbObyH=I7pxQK%1u|f zr_5u~cr6MqeyDwg*NI7ZckI+ySK|CT%D#F;8i7|VzXo39zJWHS2}TmHyaS7YSHvk9 zO?ReBXimCn;sxvvtwGbteimN3QM~@e2UfQ|ZD50dDvwnoFQey`qsQ0eJ@#|pCq#%iUa1&e2B?0}L&?`clbyNTl3RWYl#! zsloq`fSmSS*abttNDh_!Zv13^BbxW&T26QDYa(pO)<)vuo13={ZyEQ$qmu>QxM5@E zK(#J6CCXz$-w1OF?ctc@s)Ld-_f2-lPb^9$$pl4_pYhfm_uZiAL+~zX9Fm1zsg;Gs zaU}1Pjhy(}Qfo~g&p1vz9Zps&OQ$Xmh}=}k`;={u6I+XFC zb5P5}OQkc3VK~Qemfwwt+$4D;mWP+jZL$!wgg7{yUU@~TC63oAuPXK#UW(zG9{R8Y zNn0vSsAc`R<`EfODMjI(vL@Af5u-6%llyTH_|vNaizdVM*=W5`6QZAbt^y|;FV#4; z{#@)w8K$2G{J1Bcs= zmoqV13|=ow4H?I)a}5J+t?(PyXNgDiaooHyA57be*6# zAT5O}ftJb9lA^RVkEn>A zVJ5Til6_Ec8wK}{@kzE~&?@qpK#OVEXv4BYV8h~X1P z8;rsuU`=#0wGknuCSv^lWEM%k5HIVd`;N)=o9EPEKnH}p;Uf1Vh#f4_{WA#_A9DVem!`1_zPEi3Ti^J(EI3z%->0M{|48+oV`3gK25`r1jAik1y_+g+te!5V_pl#Dfny%+aZZpkCM?7GfHUVaU^1q>U0W4AQmY{TdoJ zKno1rhd#$VoF6Vy><)F#80L%h$e+IIB|z4IlTe!g0~;Ejt3x`B0mJNYe5{i6MS44% zbVh9bb5*+#*(@9_T4Uh&vm!Q9)Fpf+PVkoVJ2V;W#WwibbUeg+^|bzkp$iAkrEm;a z;zsLD9=U{UPGxX?VZcL+05hAnVj7#QuS)5K$y2tnz{d{#=f@xuIQ_EgD(j=TIHBUPUC60Axunzulrdo=xi8bC5V7tW zwC(^slvYTCpzbi5>_>b9>hlc56(odL)5t{5IdWQZ6AznCy{AL2T zBH??>4qm>bpBzPi?1&T!Jgef2Bc}AL=^|TMiA}3%%ZqHe5}U>=l`<3&28~ZC${?#3 zjb0{_sq3xUa?>b(Qwz=-GNm`q(mkv}-s{~>iFT7;C@q>OIZZqK}0du_MuL9h-n!7*p#$_h5>O2zQnI_V} ztHeZRj~BO_lH*l0ou;>=Oc|4XdvO{E~(j z7i-f#<2lyd%gS$wP#et&4AwTU&%N*IvyUZL7 ze(>N4f}rJvI2oV<;o>3_-*<4bP2!x3FYzeg;L#EgCr-khnRKA={OM9_03{DZ_w7#y zhdJusIoAN;rPyDtXDP=kqzuc19sVJL*Q;ZdP}<3Joe_eYn(*I7ymRj1W2zk~HXL4@ z8)_hp>Li>T7dydr5 zB09N%wGpskSzcL>rSU>q^)p7j0|xjp-`@S#fy>>PBn2Zv*PsxyZa+>%<|G|9UUYGm z4ocK*T*}H9iR;p4tbW&t!WRBh8o3mdaxX|TP=Yqi^!jN0+MFRWO4eAV-$!O5W?V@& z?fNs`M5d#b6ICn)wcKc8^V(hcH)Av%JTfo+(k!~O%%u4a)ke0YHIz^rrt(tn*nFI` z@JheO#dvUXzX4k;>U#0xb&_trfH4mOydvm*v>Z+{p#y1z22>Gq+ytemST0_P-I<10 zp5ekBhBw>WoMBJq;*~I8NW&}7aA8iPg)F=hE+}buF zl7`nfu2M7b(rH~tBNju^3uX9a?&GkS)2PIY;x}D8sY=OT{2Le`ygwXA!&|&FmBS%8^y%&nI1rD{f>@UJ8o1+utB-jE8YTjs zaOFC#vs#Vr(xm{u+uY)M|E_;c;l(kTPtCBm#za)y(SqmZ>id`tWuNJ!08JU~hNmcD zaJuxPb0F9Itp3L}binm{{%{>#vHrNmo3E=B0(ELZ9h@V5IuEDabHsC>uFq=%f9zXO zJMn^1ARCb|tikH(_#k)=t*(0%VcYc}fy9#V+^MO-Xe3`^uMLrmMfi#k9&~MdO8vD! zIBN~PuF92Q))Owq`{LFhOs!=3-|wrR4N?x)ERDn(M00PO})S?Hi# z2eu&ZXJ3!1?gj@_=ur41+gAP#Ty7JkpXmGAeS=@nONyYC93Y}D#i^k1 zcS|1%WGW~F$=FxRo%7Sd+41hSwQ~$doSwA56E2Lfl9V?ZU2FDz*cq@Q;aj6=FlPUC z_U5&i2q5;jWegpnC#&IX{{%uIbnK2Xi%g$S`I_5=gZf`l&WzS;2b6PRqH+Ta9ON19 z*!J;6X&EL7{J}Px@{i(VcbTECW7%A>4%0TpShM}@s;`~#Bf@;C7Mz8MzdZY>s ziGg{j72hhF1Ve2#htKs#(v;iAMW2&msiJ>4HWKa1Hnd%+P^TVsPMT=6;IA_Q1qVb2e&;&u!E z>FBLfldFU;B&eP@WY{sFg_!b7?NDhfZW}q*_(F4y{gG=? z%`Y@IaQnvNG~qjbp40BuGV#mA?+dFjU7f5PMJAS>bhS;`0$8RPVvr-WA3&LvOn}EO zm)2?ycTPcu+9!Q1p^10@76yg(Xr+dOG|Yw&og$<0an!n_2to*ckpMI|$clVI_7C$_CBQRBi~HNg@u%sf^X0JSEQDp{s+v022P$VNKSJ-`MyGd|py4Cd>Y07MJ8 zCV+Dmk~+HZAKb}imy(}}UeQMv?f7X)GfE95Ej2iAleQ2P@k8T5Nwn}wK`wyp8(?ZH zwJKEb7nq(A3?ZskaSE-?EK!mcXgp7GpX>1+)_c*6pH%Mn?g9d!(C7iC-SKVQMA=FVZJA zm<~K$?ta;fjy()q^K*OC#KVAi}Wbo4xi<<5vKiC8~M^`*Y*A3k3y~05Uceh5Fjejg9G@T(xa}d=w`gt`*d85mU0y0El-o9lZr7hTf^{=4JdznD4OBxL;W@Z zZR7+W1&^k6Vs4pN&L^Jqm6qj|XzGPWrn-n=0So#OXp}qb3xXq!oPd16qK^34k(540 z>>*g+_=pIlp=OdqQ53ne6uGOno9()O9}PpAAE}tMAEUbU@Zb<|uqqgHL0I`+Jf2Cy zWq*S^?gh6K5}A2px{G%ID}gF>DZ8qJ3|O~bzyW$3<-YuzduzYD)&xE_YYumG3q=@S zx9>$3#Wh^qB+^(17mUhS%;n%xDNxA!!yz z0fP@-oXM0m=Jn&tUgWLS5Z+lCW3ybTdxQkEUbcLHVJToQL!*xm$*^ges` z-~avJ&!p_dI%+3FC1*~#T0(w7f7TwR6*1P>7*+Wo+F;E$u+$W90S;B(C0RR=?z62RH$!oEhP+vabGBb z{kXotjV~>Yu*~(#m9KPAYU+)Ub5&_vPx1M*V^Yej6g>=S4IFrU<&8ga9!!5WWd*xg z;3Bnm8$2`GK5IQ~7q$U9)d<`x_Y-u3$kl7=hEx%U|8K4N!+QLJ_2ctUU99%q>ssC& zvAzIKNa~nzO?CwHPvn?qB;h8gfsR5Iz43Q{N$#D8SR>5J~BLlw6Lt5t@Jb7OJ|>b z_^pPLU;`D(lww;yW7>D3X zaf3`GxR~9Np)%dZq~C3!p5sV$^%Hfq&pv-a#NkMEAhq6zETJXoJbaGU05P zN$s(k$V1PCRU!Q9EcE=Tk9sncR%^APckRy6o{<{EbB0Im(78S1;f40uF20GlwW@l! zg%2-b=wa^O4Pd2Wz#Eu?O_~Fda>q$#7T929BUDGd=Er)o{K}CU03h>15n(JId8yt| z{e&$54U5Feg8)YfagNg!;aovh`Zz|~0BfHKo+3Gjyv)L(aIW^*UbEfY!PCUR0jOlX zsayf}nQ79G=N9z)D}^zvzTrwE4;pr*TCDA8&hNV z`Td4cU$yX48iY|pXp!(JhU%Bw7QrWCWMop`7u2c2Mz?Qy&A+*~{3Q;2t!6nirJX$a zB(S<1cl0xB;6HUa?aOgAC4fL2UA7J(3E=p;f z+SF*cz1NWsh>FW6m*&q}EiJme!2`G&qUVC((oot!F|ww?E+(^;f=w6>TcV1#)ddJ# zlL0f{3nF-{-C{(c{ZLv5-{pDU2JL*OTHH}!H2ts&3<1WTD`sMV1+9Pkv;4m%Az zpC&~n(^454Fe$Se!B(Hds{n(`@Y~7S?AoQO(c@QnVzZ-1Q_0<)?2<3{YvN=USBKyD zkr>|B2vLlmV#O@BDsp!QUWfn9UmIb2_tm`tHcAfy4FH^!9(ej^%k^7^JrJR7qf=PJ3_g0D;nsi>$$w zCe4d%u98jwQ4QYUd0Yid&N0Lf&7&1IHOVXK2A8X{PEF>CtK59N-G1I??|c~pN2~Vm zHrvkI7}LD*g)-E$%e&@tD=@4{RE1B+J}3Nm7X|wj4F%7v_w4ZP5!sXp#({E=ljdZ_ z;V8vC&xeZ|N6aYWhb_a_+G=9bbSXj$kwZB8a5|t^mFb$n*qY$X%C63iHbnY2ZYOTu zlSTe|e59oB6p(XtI{X@A8SO(^(J)F+i7k!x9ft~sszxIHFMvS zTk4NHoTTc3<;*={f9Hm~y;$0v)TN5`b2Y`J=}oN|4a0`hBiW3rdE*P8FQK@WHzj>F zU%1CJWR;da3{xY!G|DNS%#EVI7_AOq-AS6!lt(*Cd2P&zK>G(V`fxz~2x#cZ5CFuM z4u>FMaqE_N4Zf;S8?KS4(N(xU6*j~jBZp=UO#>=QkZJ&V2N|PSvl$fBf@gTrdH%}7M>4W$nd(TV^RqFRIUg9L9J4?-LP`UTr_0)tnwb|`aXFo7 zdDcGFNzhtJEu`iVOjN(2^F9+>G15SDf`hV+%&WXm6gUtP=<(ZIPh_TNLdzLPUPC@X z#N^+6Y*Ml>D|AI(5FiI<;{0NmE{tOgE!3N8%`}{hYS^&)!i?qQSG9vK{ z&hO;o9$A|-y#9;W6TaWnQ{JlK2Ujot{O0Xn&oRFGkMgBEf@5-n`xCzSK>_mpkDeO` zg!A2iAwt^uLP#$ldgA}>qdXz&O($@~a-C5Fq*Ph2-Pxm>ZMwUvNk%1iqCIGh8@DT- zGd+=7aG@zr%NR|fj2AavF>RU9-o!{PP2rN22uf@$HEA_1v?m%(o+PV*Vxkx&jxYaP zew0P|_}{Si8q~Q7jRHzFfW$U9T;5z}Ii6N{UtUhvq_HEV_LZE{O3sS{k@q|5$~OP%5ws*T*O_b8m1<75 zT8@%Dde*u8VS9w4q+w*q)RL-918b*#H5U=j4XZ=;@TNpsh@5a&DAWB-h0pNTjBvyXNCFmBi@$8|pq0$+pA0&rf7yD|66tPr~D=~O-R^d&oj+2Gz zBO9q?+E6?TaX!uKzb(BcK^B}$Ny8)9zEbhnf&hsPQWOv}gy!zzfz99Pp%w_rH9|T0 zK%4uZO`Bn|NwOI(4!$i@!ac5qE*eb1;#jYd(vYiY=ubTL;(wLJD6Ff%A73fU(%O?m zx^Mwj#t+~@5^?;R96X87R+vgLry@qA=(-`6oe`l?zA<`#QV`L~2ws&I+=>J$*F~E$ zGU`SAFRn@9Nnv`l#g?)ew8V_AGydK2fMHJibmZ#}{VNdV$sbR&Xn=&{qj(WE2ykm% zU`^&RurKSd>zd)99< zvT`%kTGMY13A$a2ujR(t74WOYGU=+pESa9RCMj4*lD=pmGMy4Hmgcat+-)S%=_WML zLIfnE;0(R9KtO8E4f#>t^`roasl#I$cQIilQ{|?QkyS-}sujv3{;5<$inGa29gU-w z^)mGnVzE1f(9I)ukjfdU7Rgv5eJncX-{6T(hd&}GS2TBSk}%6F8tC>h7gcWn!cZ3$ zF4s9soUuC;?{%CI;0)po_MMvl3vayiDeO=;+?7?L=t zc=i`F*brYQ3G3yoMV?6KJMUswQ3p_pdBQGu94|?D6A^$6Yso)L9B8zD zR3o}K%c%n`1Ksa z%*c!Al*mH7Zt3_xPgr^cAP&Zi>cgMdaeer+%*a0YIwiKx6Ps*@G3$IIln*K#O-y6J z8eNK1QypfbySr_|Wk#eNg8{tNIj?;b8Sn^YWEQiQL6eSJY0H4e30IBe8n{-o562{pehEiXIN^u#JskG6nG<75lFJPdXY!gH%MQ9XbcVN)*Atk*S-SV}9KQct zr14RLDImhDp#L|;o(ugUzEJseq)nT(S>zy$T^dhGfe-9^25|-wnm>LfvAt)+%=tRH z3JfdW>6)%1JoXthqu{R7?$GN2gXv*=j4*_B9BC>pUhbp5!ByvY=#qDRA}Ae-4I#fX z)*dPNyR>&4e4)6h$0Is^n7oqk#@cf237z&t1hRe6VO+t?Sv3yDIbI~4qxF*cD(v|a zoGNlHC)79aV6jhL&%7~oa&AwIHX?wj^~NoqFvfrU!24Z-rekQimL&e3Qv=!S#LH~T zRd2ix*BOCS819>2>h{lhLet-s>l4>h(q#_{k@f?11@VL@d|%KCQ=~&XgTdNDBTKSw ziOBeY`xd_5HCNP(PU^zMI2Yt8Uja1yXZ=RNLtm%Z}*!faZ^!Y{CL11IjHnWeLS zf*BVO8lfYCXwj_~21{2ne_<=1bdUmSA=EeG(oQZV)r0&=fm@_ayC1seu*0wL!(Qmy z7I2udK7qSL>!FIQH#RJ&==V3UMV1>YnyXhQroxU*U zgrObySPb%VnrB&!hkfJY zC8M{6jzzSHFy&CUkw~s-oa994h5h1NNSOw{VWffASCN~|cC)?H zj@?8SnN}yPgKYDlxWSLU+}qsb210QQA>Lvq(O_p&+#p(cjAu<*oP?yf9p6ek=lajE z2DsUr+V^(+-xN~Ln9eV6*p)vK%S}a#h_B07&_N6@Bepmf%(3-;GPIrmez}PB!`Zop zsTZkbi6s`UY3X;4RKXSU0`r4R9M^p|hGi;{xt|oj0{B8wU`j;iNrcJws+|qg8U}R; zw@5Hw8biEnk%uA`xWm*w>GNFQJm#2j!nDRn2TGgL))CdkH4GmNxh)hZU`ZZb7#K`V zUk;0ERLKnGqu06~?qnKpBd|*nrlByDP|1co_F3Ykp-hyuO>H9Qg~%58`sUp>{PFM> zuoyVk9*{`U(rRZC4IWs7f)nBK7uSnAFWcMI2vH<)ErnQ>pi2hp zDMOfy=zdkVVk}I|H?tS55GAusgOTpIcoNi=N!2Nk4Zp1kKq0L#-wj??1lx>NOMUR8BCE?2Hm^`;m=$@9F}r}iY-1-_o2a!@uf5Y=(f?(XIQ>seK8TC1(P&uo-^j(qy<6$J$Ov$50!j&VUV;?Y z1nbB|PfO5>#%n5Fu8qYcW@lQeMJBGoPtT|;*;a1-jD7^lDDLw+lK#Z^RMIl-$D2J4 zvQ9bdEmvUKB<3HS-B)UBYvl1}V(bUfD_>~>xw~)@a#K2W%jQX1oJ_x1?o$m1XW78? zc`iA9CY1a+WbB`Q_a#4**6{<(w4qP|HOrxN!{k@{n1$x0nG67f&E|+EYCDOKLGam~ zsU32b?De(ui{@fV9D>?d#`k?~3b!hGr3(K?p9m4)MI`PnCju1l|LxtaIRD?{4IXyeiyH6$fPGnfj>EPCQjEIdXXm? zlype}+Gg-^w3n$L~&# z#E-w7ynHGCgvWnX&*8^=^T+Ao!KwK5`uN@XPbaUB&d-kD{{7_e*m(T*;8)q?A7|%> zzr20(=AC%(>Tj>#NO%YDk51m5|N8di-LdZBXWoNwh?dHOXDUL~Gx({d6)Jx~QCXh9U@LR#h2LEbG1W@xef4c$XdC!k3OD zvfrveQ-%KD$EI%jks4>iV{gh;4nH`VR+A zXJ;3{>0XU4v?{rQE*p)iU8c9MghJR$xg4yFNa0Om8ZKhDqEVDZ%gDj6Y1>V%+g050 zb@Q)3gK&2E9t5m^oF5#$I(dD5dT@63>zlVn=jT74ygaVdWIcUwq+fW+Vc_+1KiD8I z2BnI5qURvf;1LumA%tzpA{F0Q2R7L&y}Kl>%iQJwJA*)di(=ctN)`Dp@Q3a!c>oIU ze>UU#pPkLEy_Nj8jFP5R5XPsCm?%f@q~j3}|A+~L;OuYfgD^(_qY>{GEt84y1bI43 zrM89)%6h3YD3Bmt!WJXFS|Xpf-Hn};VV%qB0VPw2^N$oYpp|EV%7_drV^IOUUEMSmJ4DfnlWIojEzp*E*UdIK( zl>^tqO8=7k@`@-awB|qgQ7eBfk8v+i7&U7bIPn| z^4v|^uz>y=hOS;B7?UJvgRo+(kGxdj|LAgc){H(y75gaQ|2sSFy%_)B-rZU8|D}|6 zll>JA2$b^BH2G5D|Io6F{L7R}8G54%%jA7Z$SyO+0Ev>WZHT!IL}V zRsM_mXQIbVI}G5LI#4to6#`HIvW*dv|C71BfnTe2c+OhsZzjS^36EnHod4Q$xF2MO z(E%djk7G{BN3YMgtA`nxpT<;#$m0W5;v<`7MynZKgOtW0i_p_tk0%k9A;b;)9q9h# zl6>pY6H_^}L_T}IxxprMhtJ(9TqFL15mACzYTyd5NRqcOeIv_A8Di%6*fgGqtRCXg zrT&c%R7gX*ZvaLZ^_)pv{CWm|WB7t|awQdW^5Q?-$un7_H4TGS2(MM@88ONK{_nC1 z21XQ>Wt>F)Ax9vzdc%-AZsO2nMiI#K4W&TDxKzkg|4pFA`i6XMoZ*dgi^&8);%L%W z|D2HzVngL^0BqjBeYqB{qeBCi)_`zdxrqsS*sSsg=^V`SudVlR=>xFIohKhfTL{pRTS z{PfM+cQ2l(-@)%I-DC_4_XkW z7>{R)#8|}2!e`>gm%79Uh?|`0rvj_}r)nhs|MtGUt&QZ^`~0m>(GesVACH8%dP$rU z)@FBk;tQ`~lat5siw9|dSxXx2jD*b^-p~GaRo^djlZ3FdnseesGkvMPRaaM6{YnnC zF)n(bk>asoe%420G6-+TIQ$4sTNlwM2r4!K;Z}gV8lg*$js@(a2r(uC#1rx_%7TFD zq9n^E5VjKh$+Wq)X6!20-6=ZtQ}#T(N=M%ZW)|0J;1=kc2t2+(eI4h9pdKR$iZ3`Zl&jsQ|UE3ssI z;$}mJOnd8@&!{bTeF-fEmMvG5Xj<(Sp(`U@5O8l!Rz+vAAUFQAQ)8<|SI%WTR8S{U z%tBd$4$p{mWV{{`g5J35(Pg!UH~^R2=0Vbxc|W{F+J*l-c>DV3^^f}s{Jo37t=v+- z_lH0H0T}^$w)G)y5=u*mOocerfTL}cC?9>J0^e zs$l=NXyQLNSQXb1z&3voVh<;Yk~w6-A2QORi-6T}$MV3AE^~;E;PnBD6su_v57_3M z{aIXtCzodo3lDxltQ4~LZWZkA&hT(ZPdlqju6R#Y(`b;4BZOLo_xvXw@K-s!2zj&$ zq?|GQnsj}Qw}~*!T+xU#9@vzV*xC5AkqYdotR#@?sg*3FoYPIVVoOS!etq5msQ77lO7&LA(<`3>uD#>m(^9&cLDLb;%rIr916;21Zx z=h)0u5iW`s!uV)e8JIVC&MG8LhH=@{bJd(5?cxc7i|}eZ=ubN{=nOlVod1k-qPb?h zXf@Z$rj(jdt#)o=nvU`bDsDmY{igWaXc`zJihT$X6j81E|48fczgv&~XaAS%mNKE+ zUq+X=z+!GGbGfB#jnx7|s4d->aKc6|x|`|Wlx+P+OLFX{iTZ$CxngZ0&QV>aWd z7O}|m=R0%i-8JmL?)aAd(30DHo;vcsP%_pv0V%Wp-RNxC_8&XjyG!|h5s!88Z(ke) zTwSpWS}Rni>_2m5bX}z-b7(<0Aya{3iYDguqM4bNSdfDvolLBvhWgTKUjt&b8bpqr>keF-#@eg zwCLg@Lue~afo*S2;l)Ncq7Cf&W0gwoPsl2R^!3aIr!2gKgIx3{>%UQ7#he+(qrK@ZZIL&-(RMEZo;NAWicRJ3=1Syhh>!Hieh#yDavdX zd)I&%bv_KYg|6sjJp7O5+466M?EBjq}pD1omceYj~uaru*)Nr6-?Klh&~` z7im=NIy(i*jzwvoyMd;Bq%jj^b8WwnCzZ^GQkKad=5n{f&8Fl_h3W zH`TdD6MMggW;ERsmj_V4q$m{#T)K^UO%q+)L}7Rcw)jveSl9<|;a|h1#we^MOR-w% zO^0@l&`?^Y9TW;J{dJcB@3~QLuS}{~%C2bhwI2DjAr3AaT$~OH3&qYJE$XRDmBW>^ z702VZ>PHP3(pBe5{w#iD7^^ys0~zZUkSV}EDzMPk?d&|+3z_O@uIo3i{M^Z(mmzl@ z7q{RZ*7BU2RC`V573Z#NZN0X^-Z#7AYbZ=1Cfhr@db_aF1|NHIN`g_9D3s(+er8VJf++13R;}Bj!ljFWzRT5Ho>FN}wHC!nX)0w`Q!Z01jelb$Thdt>50Ta$ z9u`ue+gyI(Px#eyE-|@H)teJ%+Z`6DWoYS!wC2EP`BP7$qEJH;@ynyF%;%{^BAmfw zODr%0^z&DNpgsIoR5f3z$t*ROF`3D7IjoPyd*G`x5M7&x8igD?j1xJGIUQdep8mvP zrZoQW^62E$O8D~N`@@$$K2kKhSf~cYfJ9+Gym|S8!)xiK3(!B0ivoayNeVdSpapI;ySpPvsA2m)++PpWi7UeP*5hOWHAVzq)cxP&5g#|NIy zC>bcX`_yim*7PStLk}`+KQbRunNf__&cw^r!S*{uYMu`Cpo_~b=s#%- z@=B6&#-L;8t7v?c^jw}(;|w7SthrYe7j_Q;S$=0bpRT2u^J%1@;N{*Y4cgd&qMz1rTnuK1M$0E3uN>qmpZ{d%ozZPF(%VEU%i|>T9m^wpHLcdPpm^ zh}PlJ7Rn!U)ctC~*gXng?W=zgLu`5ryhI}czLt}KWsH+S-$Q`>R>V|1dfn#&r)%D- zT|)yc)XldtMs%}TT@UPO&DX0#FTC>8E<#l7#H#Pdvqhx zHo?)Vx$e9MpA?RBZFa5(o(oqiGMu!3COG}AUr1T`+v*ypg;cqn-gJ`WUk6x!dJKIO zDbf?z>eff#GFhDdmSjmfK7g1PrM=afvX@%Ky1OcxS}HWNLrqn-mZ#Ly|7OUz?hx5Y z3TRdFi|0eBEKmKFN2Qsd%2E}9%IDXu>S9*>DdS`2cdj>OrJFGSQP<#`_a$|e5OnhV z*x@2xnyeV?Q*^anTxo9`P~5JPVTx- z{3_+8YRx$00d(fs5UXayC$j}^!>r67`Vbze(>u-!m^cp8%V=ynna~+JPP$2dpPW8F z&aZlu^p4AGMVzDjk~Q@bUx(#*`aho>zI8j>pUynP1E`+vrNe+JsU-I{x-h+W{CG-M zzyNJ>Ju32lG=Tr%p@Nd9aKPIDsZyJ=49OBcXp=Wj+u;N`C<{k0MYw|s-7d0xOIEFfOB%^i}_EZH7b*l$BfmQWq zgYn270PjqAb$UGCWmj0Ue?&2hXDwN)$R>O4({@_YbLL|CEG)MXq-*>iqE+7Q3XhAH z$E(#BN`J}Ax12pK!YUEv(lWi3qJ3pIyau|>{^u{%zRHHx8dJ5rM*W=f{Hik_5x&qX zb;&4Mo?p|Sd z&{MnMg4HMo5LrbaV@RO?&WY(zT4s200p|E9LW;kqEo+?gqg1)5Yd~f?lgql?>K45YH&=P3(5Ackfn+aEWRp$RzAwr|s-TIAyH@d4Jy$e5F zr$e0v-nE#mmdq|Yf94hfI#)!C&!RDF=?a`NuP9XwbA)~E7cp{a3k$X5RgGlww1!SS z^^}0+3c%@kK1cG@J*z4y*DJdfk8_I`>?XHCuyM&w!}Tbrw;yuP$kYC z|7~yA!GGJ?SmHk{;_>1?pRj@cW`g(`NDyp}7D1F*X{yI;78&OjyID6s&;%PJ1cMf& z0YY#C^YkVZHVN?eK9QMR;agxlQ3^t+>>AR+oQ77^S zRx3&sSjLhFx>-h@c>$JP9S~ppvyz8rxadG9lwo(^d74E;-)jNjb%wKpicoDxo$yt0N zoY1;%6(n8)EqNIj9eFd5$yJ|6Nrs6tl?YDXk9-o4mU`V`KGu9UBf@)mZc*fPEb@0R zJ$?I69r=&%0ky+Gm&kve?HwEcizeS$%72S^Jc=bf2DEW)Y{k( zds~~!_ zhy5KswdDWnZtc52c*^+y&ZZszb$fSjbIJb~@hp`8qXAML-#_+QD0~x#2$tSp|9ac? zt)SLk;JKm7t>hvehW+?Au#{z~)r-nihz*CuDFrJOC*YE|eJZ)Q|KL~yMe&q0D`EJ? zL;lG_0yoUccPFP!Gt0LRKYC(Tm;sG1tH^=VFU{^;&+)$>dPUcJrm+7ASu}>~TR{o` z-`H{V|9hRzQvP4a;6wD@oP$f zCF_5Cv$JF0|7~n9*Z)Eu@4A-$0^fxA#po;Y%H%(gmS2*1NSaTYzLW-w&_Igz$!&pi z8_@Du6sPC~=p!Ndyi+c2?`;nbdQcxcVgI2;AV!UFc#|F=@R9x|&*U#i>WWp`pC$Mw z9>0=u_dN$g<%*pR_O6WLKIE z(nd7EYR|(g+TA8WPiG{2K>j)xbTXYOIcsj|jPaE`wc>wXMSakV)QtgJCjakl+voqC zo$Y1(&xJf+zO)~c>v*t_dpv*}f~xk}0J?=vjD7OBjcc_1xN-P-1ZrY1_Cj~Awr_q4f%Bv_CX-*!FGg{w;KP9Sm~I440YhnM9!mbIH6oUODI`?pPWZ2 z-72WCi|wUl^y$_erV;7KgLq6!94E93;*2~xzrntE@%jYP(p5x2nY!L;99@u<%IlQd zvO+jyQpUQCy^F`>Q{3;<+Q|gAgOFB&#B*wMyH*{$JnnPiqwG{L=;&mdiCe zUBjT_;PRQmQsJ4lV1O}IGq*Wz(Vz2v-B= z6Yo=``5bz^Dn}(XRCOfJDNlHw8gs)cxyk=%Rw^X#&{f|4(Cd+roeYkB)=OxN(iiFsXV=BF)c>DmO7t*Bm*jiaYa~ugM=Oo zGE#wTKo9RsWJC3qGch;|X$h~Vazha{J;92c@s)$oNU#>sB|6}FgKn*@k8;061An1a z)GpOjmRozv&?<0o>HRefDEXIBFF5DGTB6tat%N-%Stm;)Xpv?ZOv)i%n|LL<_|BHA$_FuF4|9#J9#&m9gQ@P#ox%l=t<4*##s`1w=H|2Ma7`EP4) zssCNbW66Iy?++~DuZWB5zJU5J@GaPn+z0R1m~9mXDOhq{UaajgxjW2aP2H9({@Z$L zo&S~l);#(D*4BnC|I_5l^Z!Dgug3o`9F4NJ(l79oC*P1C`F;8S!A(xw4KqWPDqh~J z&ovR3J(XdQb^l9|mJ_9oB0PPAz9}et>h1SY(tGK1;#b}L)aqtdy)it3CdwJRAG67T zTRt0#UVam^+B)UUY<(YQ5r+3^T9(pH2FArAmeS&M(==IyhQ$q5G(p`e{rPK=;6)U! zO^B@6Q&=u7nhlyl`a)9j03hk?IxrV@G#Kdr7&F)_SG7S67~=lgE{7W z9%PKTL@NWtSS=*L26< z-Y6=jD40pfWaQI8MEY=JkuX82y!LzD?CS9UVi7aHjxzqgvt!{uY;`(I{GY`<`QAcI zxLpO4VCM4jLoAUMr*)8-x3{4u{E`*Ls0QO+t;x7oT^tBP+%pfe6ws*>t{G?R``{0|QbKx0;`?SO`Ha$_9FXNM}r6y`rOTgNE{B zfiIqba3-vsk6iNz_J~i{){l|&Wr7!EUDL9-W#@*sL6<128yI)a%NPWKdw5>g(>(^syHsO|}#VVMbwH3ScKKl2Rr&kRg(cekILfZ1_3_3~iQ zj}h#*v}Bc3mC;QGgAlmHyJkBXjoarT-8{gr9R2`+?*Q?>`L2>qhIHvR-}B7ZT3|Ch zdg1`y9Al(JmQm9lvYxWvLb%#D!#-^Th%Zu~YQ#%bd1eTm$A=@0U_%*;j(Z(lN9k8A z228jAS3dgTQ)d6Yx7V@pzdL)K<^I2jXQussMw}S2WEKw=LzgM?n|(NjKp}qvQb-eh znSP4G{`jg%zHk;WN&C+bU|_%9uFxvP9k^m;G$b$VMbB0reF8Z30O6DAlB1krM0bY> z-i+{U7)Z#5&IbHQV|w83kkv1gggdhN*FSY=bHYy_$y)pW67tjO>2doDKZ$MLt*!IQ z-jU`iRM;fXo{{F}#zvDcw(3(QO}YMSLBW-+|LvVETmQ4Uy^R02kjG>H;pYKg5kg!| zn>IrV{||(4o9UTy{ns)DF4O;R*!O>18#_z<$HhFg*FPGujxJ zCX;G0`~?_ypTe|vaD0TnF)Z$jIK>~MG=Z%v>ftYDGPc}8zS?I7`M>fdV5$DkiT|N-P-$x5$#ldG)1I1$}lAlcq*TFYm+Q8%0Sql zeTEucsYl*V&tS{fzlQwTrHdsQD1#fc+bFN2Z2i+;_WIx6S^EDj07?BAzzSQ99HPfIM0(@eBx@n#Ut|5Zz`iQJ942X0ua2_y zzq4iIzwK=9?k?B=BAyj;OqWcQ4l{t^WTQ(yT}4B3K8gFFq9=60ehe?E=-*f&r+{`0 zI);Q!5t7jv(I=Pvxf_!2KAn<7FxhCy2Qy2E}GFr{F$C0(2nX4 z>n#FiIwTolP9TYlq7>F})M~U|oSdD|`5Dn7I8Nq2o}Z9joMw&IWjt=-@L0 zjsJ=lSC?)0NBqpLhiz35J+OSF3mz?p8;@JrrxE@4Jp4%i9S`7dx-2dmkN+Rd@sBW# zlSxL7UL4YTxvHblihEJmX36QRM(a9*`}g*@pzEly{@)%Rym)ok8uaScQM~>;n_GKM z{Lk&q&T{=P;#qMwrp5tz%ieL6YKRrlqYG2MekZoM_m5=Y4Z4UY=NNZ`7uXhw*6H3E zjsahuZ>%qjjWw*Xt%^+*hzWIoc8*EbYBY`jTD9NL$UD1Xg~aknKTe~leR&m(fZ??T z=X2J=IxtIa`ry!pt?hhKj?;pF*SLV0-D&k~^o=`oV&Tc+ooqzu}g zN=4y_0f5s|)3}?F3t9n*!tRws|CfzUlgZ^3zGLJ!8b4>Seb9~&aJMW|EWqz^D~ZRT zM?%PF$a|51q8$PByU`HXE$UwWl}u>Y8DtqGg#>maKGCj{Nxz5A8|M)pgc#~bCgTjC zn>pz)BIHrjx@@r`q0$f0xZC?6%Z_21QCg`43{cZ-lC2lhgHsdBMrt5j0FV-W9woSp z6cL@xz19Z(zm7u%palomjgppHYV9$eCo*^kT3*9Q|UWFSh`G8jrbbJ0# zp=o}x6V8O)mCelech%*ei1N9BUkC8wEfZre5yy_1n z&4m>Mc5-5g(bX8T=01vBQHwCGCHX*S9_ZkrlaDb-{qe;OExB>3Oe8KVdmqET(vH6y<}7_!WkCH zHH!@%g`l_{Lx3z!s?ECi+T)QtC}R>p+}BLM3k0l?AL)co!#@64A#d3@_ZqiUTI3aw zTgu1fxrzQd{2UHOl!RNFDu9RZ{|4qSOz=TYr4RH2j)!<5nbCO!&E-bMynZ_590EZ%$6nj*kDj{}-*M zzp5z;6j9;jJ6bvKs5jUdwBL$4>ILucY8{ms+*_#QKVUhqjY6!DIcyW{b1KER2O%)H z_KT!D!7D_J+(mg375Y{dcJ5}&4|s{%Qpf@9T0Plr zf%J~WjFK1`Qv!Fj1hnsLUxn};HEpih`VB>TIA@0SBvWq;xWMbRw5Wizllf&oe7>fPmH0|w&APrn(?WA z+#TbQ5|59R`0uuMzq8u`L;Z8whqj1l3v7G@rxGbZq{QNAUy4O5*j%7FtSHuUcgJ?s z7P=$3VH)o4=-IH_64GQp>4tsXXNG0Q&b_;9eozzagQA-EBbzwQrq#Mh7QKX0VT7TD zsBQ|$ML)cRp=DEqjh3c=qCHJl6Yk)AJ!O1DX8~?Hk;QB517}qq@Q0Kupn?x*RbWwp ztU;f`>^3h`Q&KEfSb(}r!51U=GWW>o%M&hS@U;Ycl4u38-@^K7UzlcX&uJs+_n77Y zqUijCpj0r;=yZSL%;c^J_+-l(I4qW^!P$_KFyyL(>Eji0TIAHK5n@AmV&Ks7KSo2< zFG8{rauI#Ss~4z8gs&Z~-h<<#;_mXuG8HRa_km?29;sIu106 zk#iL_^l;KS2LWX=?6sJJ2sJy>xdsnXN6#znz z0tYme52ol7q?Q2l7<2U&JxAp9?!6HCF}f+D5xn*vn#6ASysRg~2kuLGrO)}ayq{;` z-!guN=L=dKVENjUj+{{RmpiLy-H(-(4uA7iFhuyZu@H2OO_lBbPI;QMDHexY(2eec ziu8$6XwG-uqjC7;xB7ehud zrrKlYR4MY)`k!t*-7rX*ZY&vr{-I>$RvAcD5aX1VC})*eVJIH~G=*S|>#B3KK27Y3 z*sjGTS|ChKg2v<1c(jkB1d9#UAzKvgO8W~ewOh(RZrS?%D_g)_)bTKb8ajHtZkV#b zTwxcEqK{jo(Kv}BrIJ(H<~bL@= zV9h!}@4vHCWdE}v@BcTpcHsW6)7kznvU4vjww~X){=dffa|Ka-1CWyY-`$PvEeHQ` z>HoEuXGN-`*zh6;wTE8b{KCZn`Pad#mjO*SfLq!g?irBaMbzzsmg721V|JKiyAVL{ zfeZ%ff*ZQ$N|Q#^HOlG{M?&niaMCEwGlqu>F(}bL{B?yRoBYPPVlm` z0}XqfjH7)JJ=wuIq?9L_G^a_Q(1|dNL?*07Y4pdIK3A5r4z;5C79>S^LlBvQlefg*#m zNE4;t0H1=DL;t4Ha1`%g*%0=*UDUYGk<6K)5}&tkQBF+(BBj~DWl}|z%`YivgVq}| zH7!E^Ez80V&{l=6!N$@>^OZQ<(A1dwWOHxpJH2UTfIBA)A^`ljGjPg6zm^4hK z^gf~e!cP#~AEv=aVc+>e$cnC^1UcC-tuj=VAkND#O7;hL8*Ch?53xi#PbWh<1D-Hx zk7+(QXW>)n=eI8{!JfBbpSZe1IS`u05R}HFjGjt!w1n!=gBIs2T#$5eu` zd20&%lFbbztMmIomTbb#KvI#*2!|DzJt34qM(L+GqlcIXmJVIh!%4r7&PYrfiL;XT zPob8Gb_{s*(DiYn9fOQx)zL9zm%2q(EYFT>nz1KAp{eK6XOUEp(js(qsB(a^79tKC zzsL2dCc%da89Xjex}_xi*u`5Yt|>7Q9+%|ByeRB{Fsq!Yf{-d*SFD8$d$e-+uB#(~ z3qhGo@5}4qT#gq_tE;GNq=)HvTtVfC)fA~*>ovPTuZShM+Dfzh7pT5YQoNAH3C3o* z()mes8gv)vtlY~aUH8cFo0uwy&wHo`PN-;iinEC65rsM_9y&Xpp-~e1Ys#Qnkk0~D z{N5pxRYE1QPOg2Ezm=+sZ4yA$TT}gDI*@$1V~N;pBGXkDqK+ZoS)=tOIBMoxV84IF-JzJKT=%JR9#XDa=V zwY0MUo&Ita110DGZTf$<|NrLp(*AQHkA?pxc;nrj|3e-mTm`RBJ=|=G^XEt$V0pDI zBNhX9<<#T-xH)RMbLM$+R&wIZ^WQ}O_sY%k_~CkQta82<$#sZJO?Q={*uLmVC_`9I zE=D!A7QJg;MzB{~nAX#ebw!|`dmZxWpnFQ=BNx#;eembvp0ItNTRtNeXUMAHvDGG} z3L&!&o!yZ6z>7S5y9BIADQXCpYRf@Gym%gK0?=d44;*5CFN6+Rdqr0RCSPN30smQI z^9E!PgX3C5c(o70&--L|XJ>224`?z=aRSo!ZIa-ziYeqoSIo#s#nDfTy(Y1k*96kZ zns~wRP2^8uB?B)|9TN3^;;%R-fZNq$^n7BWXoSH+^EK%4l=4$q%doStFf@bXwzP}L zgqi@XQg1d^-F&$n#D-Z z8B{mW0t%X@9?FS5;mz%d&uhliv2#0t6Hry9>$~!6*7I6D>IC@pNmcOlhMBhK14fq){anEx}fxao}xalj<>JZQR&~M1}&I0o3x1cXR7WHgS*`_>PHNAVYW78#4 z1Q|^dTw|K4$tzQB=oRDDSO7Biv-WkELR1kRwKi*il&1EesxSfU+n8}`5-kZ^QqyOj zp0%TKx1D8u6r9+^)&6Xa5cb5(_c6LD$rjKg-mJ`Ux-54$3?P|NLQcD_SJCiVU!{zJ z@g=G)eY7X~Ax#E)glBpdjH7;!Yh#@EEV2s~wZ;?Lw|M4tYJyd4SF=xi9F1GCxFrZ~ z;TDs_(8Yba!Oh(OOj=RgA!E=( z08jDgfp*-9G{s7hYE?b0etnj^%d4DfkMC?0PSSaIq~WdNY~FCGiG8Tz4$WiVHt$Ny zH*hO`*-jpi>`LbyUG2xMHWQ-mRYIC4QJ5l-i*}8Uo8jn2cx9li0=pk&)2`{10-dx^ zR=+$ye0z#HdEBufk-E)nSPTPMKP2_3h-%&u^a}QeohN&Llpy zk>)lD0FjAY5JZ_GO_xeK|1w}H0f@O*^sGpelFqtTkEFLwHC7|bYth?Ut36I1mDi>H zi6L@=-;Cj7)!&gn{fUpr4`JMAQVUJbtzVp*uyF*uF{^blEW(}nJdsMfY>@= z%dZgluj8hxd|AOovQ!-mT63RdWU!*@#HmR&BW>Jt%14^bysA_8{9vBFCylwhL|U`L zC9>90z#5e4%JiHQ+#a2>Xx|~CvQVt70kOhbl4`&f%j@lNHzvT9FmeI8fUHJ|Zzi(K)n2=wRbG)Hs{+%)|Virn1OdBKI1eO+aVB`y+9bsG{--pUpv4qi@W`w=&1ne|8o%MJ5l zY?cckMqY{8hMuUt(FV&syUB)kNa|np+4(A5^vzG8`wCc3t~fUuY4fT~o>LC!rZ~qK zm>etlgZd0ALdK-wh3~TyKPrTL;Lu ztQN@c0&kcnV+qSrAu0XL%H+BYX{mjUuqi*5TXZsf$vG$_I4C{lVV(S+4Avj2=cQoGWr*f9C4j6^YDmH76NB(?NgvH}6>BY!Ih%O-i` zXe^k_#g1zA5ww zE-5{&Bj#kX7RPgDQ=B)$bbXe+PNj7F$1IRtuLjzkU~wj;lcqcW)+JK=WE^NnYk`QB(G_H~X2Ug3)U2H>+GdZmqAETR3N!mkj z2D7k0tB3xO?+0P5)H3uv{Y}rXmvJ~uC+BhUw@Y{dwMrF${MHaB?CY!_CzD|uM%O%2 zXWqnb2n7bsTdQH$sz*DW*5+3g7I2F7Upo$H>H6>3@jvOmOa1>so@M;c()gd%1AjjB zU{3K&vHokv0WH)2>}=ZlpWThUrTx!B9z5)bE&Mfr)E$cLuAzMqgO8g&1VsD<(4}y9 z@a9CB(W>wck6$1CFZl>sg?{#gd`janm=VN7@?*lI^YkZ|mk1!qa+7Y-XS!s7g+5h~ z{pU$C&c%VXvpl9uk#W3LCzU zE#6>=)J{tZ*y7bnos4?)hygV=8fO@UL4I?HZ}*aJhClG1Gf32CK^4SRQBMyI*E++- z@sO(o4+ci#R+zlF)mSB1Ys^!=dwclu@Zf}5a=-VsI+y=6M5&v0sR8qJnW=ECpSn5* z?fXY7#_x4PPiV;}=mD))IVGhX%hOfp+n{TOi5Sm2cBl=~!u z_&33PuubIq=mNwwzW$78Dh3TPfUUQYb)6wSD_vDyK+9unBRI$ML_;Bl%vGsp+9xUbmg*@K)FL^_MZ*gEGn6($mno?u&SOI3;;gJYNlYU>I z_#9olPR7S6-A3TfOT>6+2&X0v@`Jz5h6nxr(U2B! z5uz;~gbEiBGJ**YEMzd;{qoRv zB94bL4`WeWc+?9F_<<2dK{Duqng)yRUL_DUL4^F6(3!x)lZFsQIvzsc1_=F3`Q5M^ z@$+UTqt*RmE9?;TY&FyTwig^oJ)CeO($IY+>85$-w7Rz(O!+d0*PQ=^)(1M>8 zaepXtU_mq>h6DS{g7e379S>-4mBD-*SsQ83!`#8p8sOH?B6H9YXCW*?R!*!(j#B6O z3(7-STyV~p#HB%lTXP=M1Sbqkh=K5XY-t73DPomwH@NMr@11RGs~Op{bPYf##;(MM zu_o{){R#a#-+q7aT+Jy=>FL0{+{a0e2-sZ0n5R{kR6Ll_NqD57YpolNKulnWyrZNS zi2expJK(U{=+F!dw1O*AX<&F5BaHoIsA=4gIEe_JgB<(`vSb$WDo%k(QtDwnLl}{U z^2frVT0u>b6;Or8dq5Z3A%li%xG-_RDi5+Oz64FtC5$8xLWO}Cl{4UI)tdnGLuA{G zCU1z3$mUkK8T5g8iEoI!xqgA?yc1c>5h|(q>%-5qPx0=J=Q2&IPoorkzQiX4&IN`0 z4*;fQd|)3DRz(=b;+3_PgwS&xtPC*eJQ_M5nT%kU%gSc^X8;|DdKl>R1GOy*n6w@b zkc|N`WnghoVBqNP!_8}}6{78u#^4!d=5&K&O=ZE^u5QlLxF_Zo45AZ; z0~!sm(=Bs304~lx2?xF1?YtxjC8iJ9%Z-L^nT~e8(ZvO=VxPQD_!MA!z8Z!@h^n5M zEjdo(1UXNi3RP%XKsy7PFZS&fu&OYV@CaqJ6e&(

65lp&A0`Zvk)?RFq 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 TSw73>TYUaME0C6T0Ng78SOUV! diff --git a/assets/rancher-monitoring/rancher-monitoring-9.4.201.tgz b/assets/rancher-monitoring/rancher-monitoring-9.4.201.tgz deleted file mode 100755 index c32b52596777aca51cf88f22baeef5f88297a7ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 221201 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 z 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%0DQ672e7=ar*GbRiIW^7@vcQ^qRdHdTAymsB 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 diff --git a/assets/rancher-monitoring/rancher-monitoring-9.4.202.tgz b/assets/rancher-monitoring/rancher-monitoring-9.4.202.tgz deleted file mode 100755 index cbf9ea87261b6fd7ffb56cc7576cf4868056b259..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 217389 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%0AREs{i% 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 diff --git a/assets/rancher-monitoring/rancher-monitoring-9.4.203.tgz b/assets/rancher-monitoring/rancher-monitoring-9.4.203.tgz deleted file mode 100755 index fbc6ea9f3a29093a9ba73b937cc0cc1badfc71bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233970 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�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:a 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 diff --git a/assets/rancher-monitoring/rancher-monitoring-crd-9.4.200.tgz b/assets/rancher-monitoring/rancher-monitoring-crd-9.4.200.tgz deleted file mode 100755 index 107ec904c701839fbae36c9d8f27239138aa3821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113776 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

    ?wsBRSBw-&)t=7jr9GH9w?t=_P= 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 P00960KcKQ`0B#Nd+Y!QG diff --git a/assets/rancher-monitoring/rancher-monitoring-crd-9.4.201.tgz b/assets/rancher-monitoring/rancher-monitoring-crd-9.4.201.tgz deleted file mode 100755 index d44bd338eb9e255db43781e0c672a3c7e1ee632f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113735 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 diff --git a/assets/rancher-monitoring/rancher-monitoring-crd-9.4.203.tgz b/assets/rancher-monitoring/rancher-monitoring-crd-9.4.203.tgz deleted file mode 100755 index 61abe98a2bef94637f8af12e34a8c25641dd93f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113953 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

    %_Z8W%6@uu5MGjuZ0I<#ow3)vcI0>vq{Ufi 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 diff --git a/assets/rancher-sachet/rancher-sachet-1.0.100.tgz b/assets/rancher-sachet/rancher-sachet-1.0.100.tgz deleted file mode 100644 index c3eeb2de19b08d20eac48a0f412c46bb9dbf84ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3599 zcmV+q4)F0GiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PH;PbKAIb`OLp!AJaEZ(vYHL*}ig`52=%0Gw2xv> zxsq@O0UQ9z)^psyy#s)xC`z)G#LvlHgb%Re z^5U5x4j#kLGpd1VAn^B>Z-0s=LKVaq%wa+qT7XxWF`^LWL{TzksKE#rBS@mHuu*OV zEJUfmU?CYXsN*1*GBGBs(l>^o{RE&F+F((U^B$*E8?{IwwA#dqpOz%UcXL#V=IHvJ zRJM9N-C-~(8S4y%L68YPq0{%s1j$j^H5E#ssS$RWN)UPlRZ1w#qu*#z(0riRg=DCEo){;hmJTK6G)JXVxV{P8o-(9!*YQ998w3iSayk_yH!1XkfEHwm zcW%B#Os(wh-m_Q5euYuV*g0kjO+|Yg*f-wR<Y5%zao^nB#bTWA&a6wo&y)ga=ez9(a8exN|>72KzMEe z7?L@HvEoFmIAwzCjEYh_)Y(kX44v#b+oVy&UiJvn0w~XvHICZaG@kjt%4oY|YtN9+ zsS>6G%Q-_^VZb3-?TdCc6VHe<-Sq4&z=WhQB3*mN;kd=xpV62Ecn~6aM2g{>Ah%2N8 zHQEaeKqgCfpGEb(z``+YfAGUwT5a+767{Y#0(;lz$S^ZPc}6sXp{hC4ax0lkD5qxO zhQGFs{%5w1{cp5%@9f>rug_z1WxjlkyZrybVb}g29UUF-?f*lx)%&-mo{LMMTpPmJ z(p%2F-uz22a$dSOWma9RxYD`EN~j{l*jKQ;>r)hbb zZZxu^Q4702%m^;fhBocwhz)aG43<`NZ3j*!n3)v9GjU!KV7rC1_^kI5zW%)=EbJc5 zMly8e^Q>H`#$t}@R20&NapAxB=jrwqEf|>ux$bQ>BQO!C)0@3Loa>=xt6>GDD*!P>zy`g?ElA zhfEY>$}z8eXn%7nV&J3S20?vX4Nt}IJt6T~vqp!j*TPk3ZLQha>nrJ^gPGqFh>5qg zE(d!nUCSG6X!4m`OHo5iI|PQ0HcH|d93Q%mv^Xy(6M6+<6mBH$R3R}4q*=iR)eErP z=F)*cq;zD*!LR6XJ9uMPuv^eD#*CC2L5l+6Z_VZV%}yw?T!Upg=kC{nMKwGbFWf=A zIy<+pluun$@-z8+JJ|fXJK@|QotPg$LT-UI_x7Tl*|fo_^%;^AHuuu&IaVH z%$Ky(n)RoOrnq%I)p9SJoV6VzQg(D^lR3V=-Z14O{9X#vRU_+I3c|@0^Ju*Ai0XSf z_lb~=l3s_xcO7_llhH;Be4>2A8F|@?H`DC`4wo5gQ|+#+L-IZXgz zfZBO6L`~87Sic|=a$$|UFo0K7n;05}LMN{K2@~R?ln~DQA%v%n(cTgn!jnxpqw>LG zc)C8mwAt~~r(UzP9t!)x1?71P%?d$*hUCPMwEd*8Ra-SH-`rI28$nw{cu22DH^Q>U zKzsyFd5+w`(9i0;!~%r1RhtQM5vI_R!{_cxDW{6$xDFg$BAw1mm_m3Mt`66^)=0WU zewe}qq73RoX+18a@G)|8tDCd8{ls2h?T%DiYF;3oZX9mjBcA$g0z3wJFG(bi3wC_K zb`P)vs25dh9U4s#SCk0z!vEw$%9ad;IR|B?Qm3CjD_3>+~xqaKxw%Y$? z)cnQO0C(8`qv1)n{^w+nBzyb+5Up)6iIlq6Sj|@r1FV_N-OS*p8raVXe5l`tX`EQOy>N3AhN z=g3j(krHEEUC*xbqpz-7!9>g~gWuu`!XmSxjkuRl16lQ@a{?Gve#d~BH;Zf+dwSH+N@%Hmr$b{miT zFB_EeHi5|Mw9hIjyF0MURM(G$^ryTM`SDF?&FFNsWAx_LvSV3r?6Y4b!xRqQmfE~;6&@eBi1H^JWURnB zn3sIv#!D#~x_l;crOA3TN}mo?gin_$E`oyc6#9)SD#%p|$45tpM*+a3Ds{dmbk>h~ z$JxSe>^~_(Z%~&VJ<;y7hlYCrA6=|2#-* z>wh&SSxibZ6N>)BDbo1j2Va~}TZ8w4;TITyhe!!pRp``I1Vqxd&b3|M##L_`KGtzn zTuX>u_tK7}TIlmSjBzVb)NX8!YTN=VHGU&n^H%vEQ=U^k{Zch>m;4_Oy7GT=nC$ES zAEbST{QrmNif>&F2!`)*Vu`EOz%4rr09p#})Apmw@o$)!O6Pbq=PMb};8WtxhrR!; z@?VAf5%F925*=`t{0~l!JM}+Fe_#LeFl}SOOow~F-RHlreR_ZVc9;C$M+k6N{wGO} z)_(sp+}r;LX}8J$H!S#dR>=RVdqbAm4tVsfcdDp*nc1Gzu3wa0MdPUZjI-&9YVF0V zTa_Q4RX;5cZy^$({S)*J^won~9x(OB7yBJ*0QPG1`)(cmAJ32#bjpRo`&;AA{Lf)m z{|^VpM|=JM5bZIHh%u=A?;icl``YhuNtuoFK$7f&Oi?%gAB--gQ>vh6$QVqS82ef( z%BRmkAtQ#)(LIs3`U%g2$G~yw%Xptig%f&(xqr0&%hMR%akc=#-AqdoNOV8j#5jmw zoqsqtLSgV2s-Fk_a(WIqRXT{L)b!lHp8Oyl|3mfMzjeoK+Oz-EU-g{#mWakAyC|hA zfY-sZSYOKESv)2e!L!&D_OnoQ8a(^I;4%C{6cwe0H?LmnAeKtlz%Phtj-=zx~1STK;!9*vtPzwEOyBi3~EFDpEL>`6Dp?zU|w- V?b~Dc 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 C3twsg diff --git a/assets/rancher-tracing/rancher-tracing-1.20.002.tgz b/assets/rancher-tracing/rancher-tracing-1.20.002.tgz deleted file mode 100755 index dbf8472965fe416daa8dca5c2776d003aa36191e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3273 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 H073u&&3kJ_ diff --git a/assets/rancher-tracing/rancher-tracing-1.20.100.tgz b/assets/rancher-tracing/rancher-tracing-1.20.100.tgz deleted file mode 100644 index cb218dfdb14b62e201bc45cff2654f95563025b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3690 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 ItN=~`05L{HbpQYW diff --git a/assets/rancher-vsphere-cpi/rancher-vsphere-cpi-1.0.0.tgz b/assets/rancher-vsphere-cpi/rancher-vsphere-cpi-1.0.0.tgz deleted file mode 100644 index 72891015573f6533fe65d36a6e2c7116a7355c36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3594 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 QF8~1l{~+pC830ZI0Ne5eBme*a diff --git a/assets/rancher-vsphere-csi/rancher-vsphere-csi-2.1.000.tgz b/assets/rancher-vsphere-csi/rancher-vsphere-csi-2.1.000.tgz deleted file mode 100755 index 09c7044fd2c03061a838f93e9e57c4dde9064eea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5776 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 z 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 diff --git a/assets/rancher-webhook/rancher-webhook-0.1.0-beta500.tgz b/assets/rancher-webhook/rancher-webhook-0.1.0-beta500.tgz deleted file mode 100755 index a106cea127a1abd5f4d72fd1f2b59f12e5357a28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1224 zcmV;(1ULI1iwFRF@!Vek1MOMgZ|XJ_?sNVM3u(GfNs|C!X503l-zVAA z^RlPy_VQ<8#OV&afitlC{QU#l*D_QnQdjFeJsd(&#p0K>*Q^bhJ#M)94b>IjETWFeG`Qsg_E^ zywO<#2dcnK8Zue7m+P(#95l>BYbm_342IHw_5xcC}ZueRk_wmAV!`$hoDmn_y< z#Ute`z;%eGH^H2#)ccP-7zu?W<9q-_FJn+f^PmaOs2~O^MV*|{lhf^tBgw#XQ>vi!xq>LvL zDx#Z4LIRf0srF}O>D^xm!(LMI+rI=j2^PRz7=o`+xZaB>?MJgYh(tetFQNd8oi~?{ z`|%$@%*Aq!)A&{jID&u2?b&twdtI-^|2b?6|8cC=IR9Mbe?O)xu&EgQv{vD<%|{WD zLot4)aF84RT z-93zMZttoZLNXcrlN9seMj_�T0FyZkHD2ql`<+v0D}MRKB^^BA-^PYQChC)6r9q zE1{=?dY2tyk(U?rv>tOso;9}CDh+FgJJl%9u>4aM@engM2)E8ohcy@Myi+w#iBat? z=S=HZZLCj~hfzkPKjcihLE|^RFOo>#H;(nv`1rrue*Q1Aa|Zp_b-O$I&l$A*e-6vJ z{vprx_RX2|3f?~;uu3kjXu{l*Qt4SzPC?gLA(lc5U+^LM{dQ!mIjm%r?G2`JBe?XE zzAM|0e>tK4Y3_lJ;lI~)YxsA%UW@;;*e2q$jMGHVgk=9TAO3DRt{2F$;P4|B;34o8 zBq7ne5KS2FXDO2SKrr;$iB)y&=VfMkYK#n(O#aNyPk4^pBCjVL;f@Jr94wXe1P_8!^CQBePV>Gf=_wbojDFZM6zbeH1*DgXf0_2Os0=(K2n*>P|pY&j>*IlEpf! zc%+;KxDL_uCYUpodjF9JBcYIFoDYELWemz_9@L^Ch-Dd<&hTNY;~(=8bE-j|a3}ch z{O|R>Ud#XIuzLO%lqaB0y8#^If5)-Y{P&$6?gW;d=HGLjmjBOTY)+?;GQWgaD5iy6 zR?K$2OS_s*kyAHWl#r~8QNsC1aOPw4U&4E#M-mi7+AyYEOeill7v$>nj*y)CKSM|p zuE#KCN~e)Kol7ss2ebYBUzD7H3Xb7_fSbb>{*e&u7XN3lO|3*r zYGE7CEDAQ2QX!CTMHI4WlDivoWCg6IDa^NY(pst+#jAyiv%3yDh6RH!#b7cq+9en? zzocA~-us*(spJt0A_2Kze!(iWkQ>BR*6k6Xsl`;!h6E>iy|Ec)Q^jc&E<)-daorw1 zhm`R|LPdJhNJzl)Io1BGEWP_HVc1Jbg!`8RC&2=^3q$ZVir9M*rTu6&2a)Ip@I@40 zvHd1eazFk9h`CtKap>Pl0Y~s}JFZp7|G??B_&SAvv7`_-rY6u%mS%i}-OS%N2#k!Yn zF_-(B-|ikpH@A0H4I!Bf{z;1YaH9}0&wvMG2)9d%@=?Yg<=D-NZ7SbfYmrZ@RW)DI z$tmb5$d%AjLA}ckG0DpddYX^9BF`F|Yn6tz!<}lBXITEJig<_(8-!bDr^A{HcHXI) zr(~#hmvg3dtTxuC%EKrl&mVI3+@S6o-xo=w?;FQ@X?*p8t0{b#u? z|DVHhu7AjLz5V6Peg*Fz5LG1?S2WSxl27SbQcgkFSRs}|3t#Xd`TcfetU0V?mF*3t zaU;0&lD;e3kAFF#{%O7g9mBudb87gv@vg=HIcyX0S;lFiXF{@nnh$@s9M=ovSaA3e z3-A#53X+iMU5F+O_p=m9d>|Nl?Zm3O_VcoCdTNXel}!H3&P;fY+#<3hnPUSEu}l+4wi7Y8Fct r>5z23Q`eoZ>HxTc>Y=k94@5!z{?hB&T5GMf_Fn8?wwd%804e|gYNd9h diff --git a/assets/rancher-webhook/rancher-webhook-0.1.0-beta900.tgz b/assets/rancher-webhook/rancher-webhook-0.1.0-beta900.tgz deleted file mode 100755 index 2535be4fb46ff874cf8d1dd54ac54329f34ceb3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1215 zcmV;w1VH;AiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI;?Z{s!-&9i>Rz`%!nvMkA$e5o{|nBSN<9tkmrRqrX0f<=H8_sr zOh%*P*KwTouQMKbH}3HEc06{+BiFrg+>tkNZ@_uIDI7;?i0K>W#kSfn_eQ{^RK$oY zX?zPHV8n!4*a0IFXmd3PP!o?hhCWn#rL)a5i$kQwafLpJlO_prqh{t30=O8T(!ES4nAU&nTBr$0wx@2wC`pm{Cupp0v#Smxj$>W=3qOxG|5r?;XkJ$UPVwLK z+&2Hm?v?*%0gu@NbLMMIl;NcGy4l%-_6`Riw(w!K%OZech-oUsR0$reefT+gR5aCS zP?BXWgqkx^i3^Fs7(hw=4;Zmj&yxxJ2lcoctV?r2MQaR`#HuWmevhM__*{4~UZ0^^x4k z=B8Vsxughs|1*Q$Hw}QoVDqQ9oe#>e{e0>5d}}z){}2O22xS$Gcx2K2GoMADS9~ z!VUgWtJvQu1c*3_aE8%-X;nUDwDg;~+s$>SXyFb?6e0CkT-ob#aCXi*lrhB3^nZxB=5+!D5eVXquRhoQwKN=0I zT7!DU1H20Yl}dW-oa?3e@n6Sr{nv9Ayv{xFl>avxw&On&*Bf5-{~XxW|Kf|Yl$J{K zzl)fV{q%ohbG1Db?nP<{^-Kx;fydux{(Fw+-Cp^B4zw8Gd5WHvflI%|72k^E{I5#R zaQ;umQym zFV$o!hhgPbKXW9OKL>)Nq|#!QNGi3ejzc^b@pvWyUAP`a{ARFn2Rq5o;#HNjwjqz& zfr%Iwsm3PhwUA2Z7nLIDRhK^ener7Acz74tSq=chLwty$;w}S^O6KDbk5Q%c5d$Sd dDc zVQyr3R8em|NM&qo0PI;!kJ~m7-Lrnhz(A3cWl2_?Mz`%|TNG#)#->P*0WFPeHWaCn zBd1$K|Gm(sZCPFiS;Iyey^Cdj%up2H<8Y{%3|FYfpK-BL>eJ+I#WdMZED<+ngX1{P z%=gP*$8oy9&THShaec>goSEyn&W+>x-qgDR=X^srj?56#H_nTFbzklq0h3Y@Bd(+g zEP#*^6KZLPj7Xr()g(ksJmwe$P_LEVW-A^=C<7Rg&T!P*M6v`;%0djFDjb_9Lzwh7 zRwe+!W%f^Rtww>&;J7f^j;mS27EAdD)P^e=z}mA|nznx(+qIqX0*Sq~A~d1qDU}r; znBWm3E|<4a!cEco&&nLcO2cF20_Z74WA(dT_c(D}>)K!Vd35=|W+Fp#UI948f6sHf z{P$-A|1Scbuq77E*O)59N$IC{Wly>*9Dvv|fb}km07?_{Oo+J>JbVh^*Z4uvT%$or zmbDaW!9*=CBuZxh74_d?%rZfbxa5Wk&!f?`C*(Urm;Z!GDj1=ed|aVOQ5&1m7fQh? z{!cxp!~faLeKYX?64-3U5Mj(E!l>fp$EYIZM_sdW1mirniiSJ}`$M%sRIF~cy$aDxA?=Xd%4X6jD| z{$B#Su`)|jGg-UVCoZD^-nHM~N|0E@h!tCRf9z{g42xQW0z*=|+T;^P;p#WGKw+u^ zD103D256RD-EYTV0kLP|s1bl>7zIKliE)X#?O2G!dTV7|zstkz@AvQLw|Dn#4L}(N z|EyIK>=XjT97Xhq@qTGtK4-KF+Oga1ai?ut#ai%cvuWS=8PT;N&o`S^FU!vMHcEp$ z4-Tq{Eg{cewI2IF*4}t_1GmwE!A=v%^HJM9RhrDak>10%|R=HwP>=G|DsivKI6;+IPle)4y&>;ixMs^ zlP&(jun?hf-RJ$Dq#PYlRbD5fHXHk~$|u|*n|E34$KX2gw zMX*Pk{miNR1=QXn(tcLAiN)G5VO%~2&;$U)^b)BP6{K2`3Y7@pkGr|GjbWOoVn4v_ z4Fs<}rQZ}z@}E^w`Vtv9#edhC?epI&o(KM40v*Qp?xLq<;M#97;A?T5|8>a)_W#-I z*9ZImaQ}N5?B#!&o6kB4(SHQk-jvoCq<2cje3@0vkBi0j`qrwKRvEXqP9Jg2@pC&TUnEsp)#M?b%XmC<0bPb3W&UQeb|*WRq2;S8X>C&;O#l-! zE;5bnrPop_T^v-(q*qgV|98gMOyJ>JWM?`643F?Wj?1$QJSbV%A)cVh=sku?MkWB) Z8Dw_AfC1;ke*pjh|Noir!$bfk002P$Sa<*c diff --git a/assets/rancher-webhook/rancher-webhook-0.2.1-alpha+up0.2.0-alpha01.tgz b/assets/rancher-webhook/rancher-webhook-0.2.1-alpha+up0.2.0-alpha01.tgz deleted file mode 100644 index fa405c403636e912b8df3b707bdcd1110fff437c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1489 zcmV;?1ups@iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI>_Z`(E(&b5BUfq@sjcp;gxWvA0!nr1_RHZYQ+y9^lV$mT+k z8cDg!4FC5*pO$6W?i$ZQQ9U=ZDe~}0IuCh1sHg}QsO+!!xRCN`c)g&?IL|cZ7bgQD zgiJjzzY;>)S2CSWFI?Fht?Qz^D`lom~WtQ71G&ABsj>KWl?= zXJ@H>;7p`{b>3CTk!rLvk+oix4O=u}Ur=c#g%8V-MU$ldOPrBIY|4`bwL(l#geU@r z+P7>7qzIYGy9G314hs6nF|+`RX|hHOKw%;^Gg3YKFc?@N>Oiri825#87E;5+{3?u@ z&gT5RPzoZc;I2><%yWX;>Q;W)RMjn1{ePM?6eq5Ay6@lS|B~_)^=TJ?WBeaYyf*(Q z#OwKg4zQTc(Qlb`X%xe@Z2}lN_hGqhi~zZiS<3lLauz)M@FBXDW~NZ1FqSpv@{#g# zc`-bn4xk|adyHtx%^l8}HYKI3jA>b?l7T)%lxsYp)%U2-=D)!>;nbiWJ}i(YsI+5} z7cK?I_&*+z7XPQy@wn&zIj~yU5Msmx!k}Q}Ls(GqL6w{wfW2N@Sw|Lu^QG7z3QkvB zawnJTVToeGL@@ZD9uB@s0CJ7>pTR~S6k+@KYroGQ4g2{YV#4KfjN--Nz!CnB$hf`# zUyi44&;N6v=_}JD(Zi){Juwmb@V@^3R*Z&*)KI_nh1;HiPB6&sYUCIgsfsN=rY2Z? zq>spT(E!;TyQ2Xrvn$6n=F7mhMC=s;P^pn&DR~-WJ<2XMH(b|pGzJRIMsC$|+x3k0 zW@I3Rp-iA^NJp{U2&yK#|9tgn))1e2*FFqZt7;k4hQ`TyJ=hs~b9?pf$Sgg+t4|z*Kg_>yG?ORpQckf*b&(30?qfANM-cy7hM>W z=*Ii0O<^XL@!=QG8}E$CK9PN7;M>c~%ld9%x}Rh!x>RUdFhHF3Dn8E8#L4jKt*$Lr zqgtXGW)~*rb{5K4L-V!(uYw>O-)Zo@zx@+n|NgHYX>gi6z%l>d8;{!lzw45I|33$s z`+xq$X=)ZyvA^@2p!4)rJ4|kzf@_{?gX&Ile8)t{#QYna10^|@+X_wCZ%U@gfypd@ zow+tSxT4LbVa$Z3)5kwBFnRW_7<0e1tnJmPXfKnItCe$C@|zMRjSM9B z;q!IjIdA)2+W|&rAn@9+^oPPx{?lS9eaSL#jQ=ia)&E9h zJbzRvtW8p=a$q9Lc&e~2dCrAYS)h_9J*(E6KU21(9Cu@p#_IskEX12A%3~S0l_Ha4 zSd20?_ZUbKY9CzkUo5k2{s#-Hj2;FwVJABabd3Mxa>xJoy#D;pS#a>I3~`9nIQz2P zzVq6u_c#F#@&8o0fTQvMv{nBfxy0-1e`mqJjQ^XJ1(p|oS_cRL1Y&5@yx7ns^LA&CzKYdVEPx|CQj~+dGd^7$D009601LITM05AXmj*s;6 diff --git a/assets/rancher-windows-exporter/rancher-windows-exporter-0.1.0.tgz b/assets/rancher-windows-exporter/rancher-windows-exporter-0.1.0.tgz deleted file mode 100644 index 0ea9fb066bcc03b6af01cfa436915b81b4b4641d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5416 zcmV+@71!z?iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PK8wSK~Oc`26ipQNO_c0)1j9;nh9aWzS`Snc;3fxP+bAJ6=Ohob3~&ESqExLWLR4W!es}X z{FL51$Sk?3m##Tauk z?U9uJh(c1%Ixuc~Bu$HdTR|(>@gkI=ps6yCx~L>%DNJdA1eKtngn{4*{AAGs;}J?2 zQv#=gC#Xi4NthcuA(SaX84B6)e87azxC2CtDT@L+K{h1fzjBsBt{Ju55chJ+Tfv>0 zq#8U;V;Y(j^~O`~+Cj@(wEj!=e@x;GHDOAxV#wndLsenWuo0!4YM$WYqecEb>IoGH5h_As37o-5sZ@5F%^_8ztgmfc zGc63JAMzy07*&%w#ykKbh8DRVY}|p{yXov5TB5knEHYFLE*oy?8dhE!VVX5U*@*d& zh9vGqR9-bym^KnjxR^9T?kuyLnKP6;6CpxO6RNaN6Yhz0LmRLU#!ndWmT2b1O&bSA z#1NIyr9vulLCD1m40snU@ftC#!F#T-1Gj(aqawjyud+T0hFV3cZuU-VVB{2+un0oq z$F-XAF$!UPwg;eijKX<$xcCUg2vo1J0%>G`V$?8VkYnVAGd+glkV%A#Tb^n}n$F`J zDwVu*3w@%66i%}^hAxIeyUc;nCL9&Ui1Mer)&X@%w1n#QrVP#Jk#?9I!n`rvhuXO39Y~}nfJJ~eN)Xt7ZHOSDLLnOK zx9xB5?r-e{-m9it#9ZQ>0Xoh@O+9WdZY8mqGgLJQ&g`@X?=`8jvaxCmlW$JtI+vIV zQUgrJQ0 zO9da(2t@~`Va2Q(9U8ZMKmFEq2j$?UViqJOV-z|r*7{NVOFL-q_^lcQha@F^8dF74 z23nyw8$T`?rz>n zA=yG}nh#lm%e7z$ab?JypnQIOm<`;PThRv)k8E6Xc) zQ{b-|6&OM7Jz_LRvc{@Src1|orr>&n0`)T;IF}QQ+Tz}y;Ma_+Lf;q6;9PzHCBl#2 zAN=j@@lo&a!`rvVhvy&8x)u6YMavbI?!WK_9 z{}Ci4nN()xD1&;l4qQO}^0MB50nbuYY|q61?bdGlCH{Yow%B07-QDf&JvLPvsF}_5E6Spd+hTi1QZGS8BBDsA*vNih zjN{uac z=6$F+x|*+Qo56v!oWdt?J-4d%yJX3K?f(d65pL`m)LjU)+ciMCMzxR^= zKTCVM{@ zmpS)&Vo)5XXzqNo3+*8C6PfBzOLxiwt3nsIRWH_Z+Q=KG4E6YVK zy_Ta|18V+2{|r0L+&dYHePl{Zf>gF^AB*0auY%nv!y~2A;$dlKPR&`=v*dCm7VYuQ zYB4dHXjwektp)klbOWq3MEN*jX+mbEvDAOjK+eDCc*i`>5`3pca=|oTQzreCrn52y zkmw%TQg-0-GPu+*m(DHsbgy2u!?--O>dD@1-*Oz_&{_O$zzvz?jv%Ujdb^gEIp56az zwc0x``TujYFSGw=M1*8�CAgN#261H|9ugx-%GOQlU8GF@B91zQ|%UAMTQrelK{I z$_`xAHOt79``*^^T>n`8V(g->_!TmNV~W?(yd9(Hn>Y42z5a0#;@P>J$1Ah`FBmEk zhA8Eu@TWYc;bb0T$|H$kCa9Vi5Q-Iqx?R*WiItw_h+Ox6;3{fzeE%~9=x>xolnuX1 zIpQ&%;XqTIFUURIdjRv=^H^S;lo;u?*t(Vdlh2;K1>Z{C-OVj=v5+&Pe}#*j83%A94H{Bk-Kl^n^3x-^nk&;QNS4E=z_F~7#>2lvSI@lDc^e`&ugTY3Ogk^NL* z!_MN|{Uy@>QtbipzuRqpdJ3>2{%^Niv*&-U-R+nAf6vmKD!zIyNRVQ!(?r|=FB^cvF})XqzC3tL95~FkDY#i0bIhFyY zS3zwoZ+y}sziIzIL&F+n!-7t`rIgRgMX#r6>-F*zCxJt}=|KHDp}mdZ)n>hTZq6+d zbNiv5Um;y@=kL{&><;8eA2no-Gm-MwxTgeRl7!|vm7e}R#-8Ge#P`y(wC@whw5eMI z7!7AA)${Ua{iFC?CME6;Kz-pr5t>-dzOjULat;>pv)*3cdeYp5vX@`NO$858N-pHW z8MBG%LTZ!zdj+vTdP=Nz^4=91i?q4d(}tusy+P7TdDPPxZ;z%cpo))VdRoGJEKB;u znOKEZ%A_JJ#6N88wAB9xBa9O|WL)6qjeeI5RypNsyv|m@*8!;HcZ{DlX8JaYz!*;K#!*L{vyG7*f?V zKP~xQ(Eqn+nxFZD(Xgq1+ONjNz=mR^tw{tJf63uuI-X~6~m#S6wVQLME!F?CSZj&SgTz;fsn*Hf4EMlKLs?mlclTHM5bSo10UptCM--yn61ZwbM=|-EA7M?kn$by z&>qGGdWJ4aHJ?7XtCkCywuw!d_xxt&=4?5d!!wgxO);NkF`B0Wfy9y*x3JA+^Wp;d zf(k7f4~Zgsja^{Kg)!;oG+Vzss9-y3X0NNWHmx6;6v9ZL&l||A(-`VIWI{H|^y5v6p^`vAXD$(((iCCi z=Yv#(bhD zjKD>y?v7lz!exL>^Nl)+oHm2sGZ*X4DPOf1isrrn7t1R8tQu`$r_F}uB+N@5nFqg)t>?_V?qqB`hbZ>-5O&q%>?PEo-M- zodpsLB+&#$WQ?=Rn6KQQEk&+}f$SqPZ7XcqiPVrffD4VF&$*IHkkk}1a+#Z{^FyM@ zvWFF$3B0KCWms@b-YdxY?|#ht&4g(9rjzAd7@7qkK`Psufvdn(DIC^CEOfP0KJeb5 z&BDm05{S*=$WL{&n~yD<^T;+W?+oyUBx#I#qDK6>QjCMJyoyKgM~(xR#((#J0sN>j zR-ONC@6GN1w)S4`|2|7wKNfc~uoLu?pbGsTv}ao1s2egkv!2S-J?LYJg4@k$n{`rp4gCOA`+Wtt7+8Qt{T&*pL_t}7hO%;g{19zS|^5181T%f%3N|$kU zwCa_fzQ=1fki)P4F>DkoQ5my@|E{!p=YlXfK;eIr+I1Cb*XF1*yN=m#bEDXTMB5o=)7&Pg^Zr$HU&N`Z+{8CDZROQH7WD zMIS564!#~$_gDlx_rPR#;2%kK|0s()F66|X`5CQhfHXVBCiu^Heye&{+B-FyZtnkL zJJ%~0s@sQp*tx7v1D5$K_eI=N>9z#eyR!kx5fwS$M*X&Rw`c}zz)~tISIL@fzlF0j zO;+46o8Gd8E<=5RWi1HQ>vWbeyACFyasi=S91*V1mqOfsMBVk8x1NxjGyF9}sZ7`1 z&yF&S-t$Er3nYuEUec$6^4-BdduPZ0^N-{1`4m}|gE_c|MZU*o3t6s;e5Z(fpX~R+ z_rv|jp*Rpj*WdTUg0uW9yZzhN9r(V&7!%a#8;K&Z-??p9pC;tS7ml0#+pX$Lt%v(f zxASeOo14i-nc_xeb~e4a&^-i^F&(@YLTx>Ok8VCHljHlQL`SV)xAqd?zqFV3(q7sZ SY5x}h0RR77on0URZU6v1r?oKv diff --git a/assets/rancher-wins-upgrader/rancher-wins-upgrader-0.0.100+up0.0.1.tgz b/assets/rancher-wins-upgrader/rancher-wins-upgrader-0.0.100+up0.0.1.tgz deleted file mode 100644 index 957f8aaf74501df84f00f0affdbc1448918c9c4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5854 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 diff --git a/assets/rio/rio-0.8.000.tgz b/assets/rio/rio-0.8.000.tgz deleted file mode 100755 index 691ae46eb7fcb2f17b22152920be1a00cb2b2894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3663 zcmV-V4zTebiwFR$@!Vek1MOUGQ{y-i-p~FOy3AC~?i6tnlE7A~w(2;B-J=#53Ygit z+S&reRuUbK<&)$A3Rll5=m`nR`Rt?x+vWyC3$|MT^y zaV#{|T*Rv55fV^MBhmNaQ%B5)%@HuEd5^QOLnMuZ0h4pdLavgCj;k>pvJN@pVlEZC zO_=0E7Q=%Msc4z9%3Q($4?`9|NP<17ga*(ZY~rdKE6s*;DJ6>-Rm{mI7sw{rzfvxl zs`f{+Lt>_HguLc)-{%UZ2PpgzmpY}9VsgX-RvR_COw-0(W#yDYw#eE(#(i4*Wns%8437PT+ z0>?DaI#HckO&UQx9w4u*GC=iKzFR$%jw;2ps)5KtnKo+F_a?J5DhXJxd#}AoH|50& z+JAq*q9O0cLb4a>V~PE*x3_oD{06p6rLfmW3Hp8w(e@?3*#z+ztv zhrrvR3S;e4V!#~+iHHvE!MqLLGmp50HMQpeU&#haV20!$gXIvOs%24;iglI;isekqSh}YTuB-MEyTI*!ysN z;19zW>SKxigUUCj^uN_^Z}8t*${T~#yx-yPAK#Z@#18~?oyL#CBfjSu6Jan1Xf~J! z9>dhZrv_*Pj0s>9EkzVDxdn!X2Lnr{(dHCsK_X&79WXr+nn5kq<`GIu_KyxH5`*#& z(ykwfVa?$j97Klvlo<-PM5Du`1gqn^vcr-h)ohC>#>f@Qn8{HcT$uq5(JJy7z79(3dg|OT7pK@|10SDw#o?iX)8ka6}mbEzBor_>DFJ zMlrhqV;DrRT>--x4u=Kap0_UZ3x z@362N%!Vonf}mxxP}RA8*lM%w{F-I@8|B(8jp3T_MLhjr_b`$s=BTp!k;N*738dM? zlTZvPj}5`$DPgzZ8>qR{Q;kbwg+5@5;S_5)MXVO#4y{fkfW~&~^@NoamiSZ5ON)GA zgiIpX8gNvm*;BK^Jt>A{EK=#TrX&_}&dIaM3mGzkNlH@LH?w3qer=PqDQhffC1JCG z?+(`Hg(88EkN>rsjn*dqw~m7AUpTa0q>p9szh+|^|Fv5?jSc==N8v+o?efsx^pT`# zze7eQ3`DYG5F>FhBI7i=Qw0tabr1(~oah5MB{9HPu?TWC*UU zJ+`+do-3T9Lkf5=p-2=u+~$R>o5F~D7~~_R4i945jTkWmBoh5Tdd7eR3X|o{5vvCv zDV0{FkSpY|Tnb=xh%rZGJ^`54Plj%Bkbq2(SLkIOVDOfvTBv}6#|&dIFp5|&KK~U0 z8t4kZcy5eP1>U=u{DQXEtoYajKlApk_X0hvIkQWc6XA@zA09aS?1qldZOHV*gcuFW zs$=B{<`BBruBCRs5|;Rk4Z#<1`{HLF0V;Eyy|yZSlcjwAPu#obJPnrl|IOBJ+5T_W zo9+6>{;#7HuP4CKSG7^YyXG-ifDidz@Pqo)d%=Ze#B5h<|1sZ$DRL za)0lkQA8FB9tK)S{7!6y@Cf}xWh=-O_rfhuwo_fpf>>Ch5|anm5R!?41xes^fLX|D zs)WjZfl+mOymxn1!h6L3Y>|^a6<~yu2Gy#mG?Way#i@sx*)CL8D${IdZQ?W=M^SZG zQpVdY5a3EY$g3dT(!TR$Tqb}aTvdvk>zs*V@u;{4?rQPV$>rYZ;pOMOqr(q-7az}Z z3S!SsSm%qgPY0FRmWLlNPxg)v&QJID4`y2}+_o8=gG!accuW=0bP9EVnV_apZg!eR z(W!`dFz%4O2&Q1N@(UEo$tI$7$c_;jmGge(wAFnSny&(CixZaw!bDm$4YVz%TCxOqi+3yQRY2=-y8AX3PBG>!DJ z2%#+;357>ChK9Gt1!*T-CX$x>dTlfN)t2)4fAaC-;M~`@`dRx}G5@3B|LyEj+I6nK5Y?BaX#Q=I>!@gm-G}CAldERb9+;5>WL$(9`#1f53w4 z>9A`S!9?e#Q;eQ2GRLdMQYZagWkJ;|l*k2i$07v}Q7;PYnm{YCO2Nfa10ggCkXOf! zL*^F~=m;uPw~FA{VIo3hxZ|$V)3+;Hj*ammV9rT3AwSlUVF(@%!ONCg&-=M}8G-i| zDARkBHX?dG9&j2Fyiu4*32{WB2-M`+f?E?U8LJH`&Pxp&Y^>-1ZYkS;ccwpcC~#T+ zM{~yh@9u1G?tj-(rqa`_>*w(K0>5t>#XZLLGjT8ck|9H5imI(v(?B_V42UoLC50A& z0IYYhe`;!AslbY!7O2X;PzY$^W!@4%a^_yq(W2!@k`hXRtvQMTIOym4-tedoqpC8>|A%;lBW&N}Tdn z&_9+;iBty6)xCTF4n9Xrb_*3?Cq#Va2tS=2Jxn{*3;ZnJC%Dnf_6&6HIoClt3w*ozDZ_& zDw{%rcfNE}GdacA-B>VH{#CP%$SQM$keTe#eLDvO2s{bZR?$Nf?w&y!_)4kqBw z+~6F;#`t1h?j~$52WKn*pV*|)l`PR@Yb~7h08FPCW|bl9@tCh_18`kImz^t_zqIhw z;U^|oIolc?SQey`>#-r>D-B

    CwI#@+tzsxnhAGMF-YUuEY{RADDoJbLpN35p^oN zbo1EQw68>D-}cy^S8eMeAqo{wnqbYYHLTNIL#U~`wpPZSrjrW%CR1nV6P_^4k1qe3 zd7N`Eiv>v9?Q~_o*pxo=HBG|otIZO#44nb15~F619~6pKgIx_~>`y=)Gh&yYy{@bU z!(Lv8VtqcSLS4Qp^C}k+=K{<Sj*p{p``nj$RX{t_#gNIn9f+h^g+TFb9 z#T%TWVVVO?z$DQq8PKLPOb57=Z0k9O>9*IaY6(+c9SEaHkGVs_t|LLi^U~E%Ir-0} zEl(vG6PHnaYJx-)RgT6NKzwp=@!Q9_WVl0)56*tc zGTCevTiyZqWh}h3!!34O`71uD;MEv>`h6k#Fx3fHCJVsIVq5vn4!Ff$B%wdr_Wur# z_VXvlMbT{mZ}3u@eRWB*jQ*+oE!Yy5aXP#-+X6(#jnN^ELSEo&tIGdmnS1~5a{8X@ z2v~Oi-`L%rvj2_7?&kh)E#;y6f0zBaH2r%v6?7GI{@Nqo6f9Hs|HkqUY4WTYK+E*M zz1yC~e~soQ|7R^_uKwG9Y;a7I#i|d_SJd;Yxx*sl-Cd>dreLLWN2W07^m~M)dVdcv z3BOi4#q9eT!u$IQ$?yU;y5Fie=r^aE{N+N+AH(iE*vsA_taN_AtMH`U;iL)lbpJ=O zulp^W0UifY8ZuJJ-tRa9fLO`f=Whd|Z1?ZJ1`}A;|H}c30A4CzC+p1r+ilF||84xg zwG`aK=AwCK(^lO}Id3Bo(1>(?A|VenP;rTm5xyImyjiAWlE!^T-d=B!wGOZPzO(uNZ)+(}k2n9#Zjj~Pf!j$Q?y57^ zL%J-Q`aqvRH5=kyoM@=hF8)h46X2ff#B5xbxn9 h!2ic>@ODc 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 K|D$36UH||i%?Zr_ diff --git a/assets/system-upgrade-controller/system-upgrade-controller-0.7.1.tgz b/assets/system-upgrade-controller/system-upgrade-controller-0.7.1.tgz deleted file mode 100644 index 1ca455abb14d939cf82ddd247eb9c49dd8ba70c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1667 zcmV-}27LJ+iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI<9Z{s!+&S(7!!iPhFqLwAcNm>E-L9vxot>PHA6QC#-1}%+j zUMNyaQoi+h{ofCI@tfkeWOtLjg`Y37B@UkI`jPPfq&DWMK4Ya~ zY1L{YqQ=Qk_jyz+rmj|~>ZiUXYsF)?{)fgVc_Ms}mR9|Wq?5%Ir88t|?`@$cd`s+( z{}W6TkY8g1I1vAhbMvAc|1U02@&8RQqI`&H8v1ifXhDb*s=6>DQi-XBDiux3KRx6& z(p;KIDn%kZg7gPM0%9(S;;B?A^lXVTsf5C#Wgym`k|Fqt9?@yha;*zfH-FWQQ>c15 zcKg4AD5mN5RvV0g#vr7w;#Y-&gZ_U}%Kz%dRsG`R|8IfWtoAdSkjO$36bcCiHI3n4 zQ93RD7%cR2Z9dnu*{q5J2nhpJ$xUVu4b5X#gyE_WQkO`uoH&{_oR7DiDHG7!no`HhNiBaLE4~jmwh% zpPN_a$^YL1>lKn1VqeFJ8goJZo7IH+)2}kEwglRGv{u_Lil|s2p55$D{VEaB# zm|BYM%Sd)ssPDZ>-wsFlKW8BsML2$CF>t{D>*jf*iJ^`k}RH%7+=12K7pTPH&Sbod7r&vR{J0#x%nBPYCg@*r&xfL ziz~e{s%Z8EQwvqn{;Fv~mhFXtfr6~qi*Q<3RenJ{27%KhL@xUU<@W&=`a9p#KFo{0 zNMB&WK&)w4J)%HcAU_~}U4F1513Z*3>=#?+4;vb;k|7JZVVkRt00~(! zx&W}rjo{JdLRFE!$iRzYc@sxw;u|bwhP;p6$#dJjb4tXS1w7X_MM!`KTXikIb+8&+ zOJCJ)6e2sQ2=OV6FXx(@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local diff --git a/charts/fleet/fleet/0.3.200/templates/_helpers.tpl b/charts/fleet/fleet/0.3.200/templates/_helpers.tpl deleted file mode 100755 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.200/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.200/templates/configmap.yaml b/charts/fleet/fleet/0.3.200/templates/configmap.yaml deleted file mode 100755 index c546c4b97..000000000 --- a/charts/fleet/fleet/0.3.200/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: fleet-controller -data: - config: | - { - "agentImage": "{{ template "system_default_registry" . }}{{.Values.agentImage.repository}}:{{.Values.agentImage.tag}}", - "agentImagePullPolicy": "{{ .Values.agentImage.imagePullPolicy }}", - "apiServerURL": "{{.Values.apiServerURL}}", - "apiServerCA": "{{b64enc .Values.apiServerCA}}", - "agentCheckinInterval": "{{.Values.agentCheckinInterval}}", - "ignoreClusterRegistrationLabels": {{.Values.ignoreClusterRegistrationLabels}}, - "bootstrap": { - "paths": "{{.Values.bootstrap.paths}}", - "repo": "{{.Values.bootstrap.repo}}", - "secret": "{{.Values.bootstrap.secret}}", - "branch": "{{.Values.bootstrap.branch}}", - "namespace": "{{.Values.bootstrap.namespace}}", - }, - "webhookReceiverURL": "{{.Values.webhookReceiverURL}}", - "githubURLPrefix": "{{.Values.githubURLPrefix}}" - } diff --git a/charts/fleet/fleet/0.3.200/templates/deployment.yaml b/charts/fleet/fleet/0.3.200/templates/deployment.yaml deleted file mode 100755 index 25c505ad8..000000000 --- a/charts/fleet/fleet/0.3.200/templates/deployment.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: fleet-controller -spec: - selector: - matchLabels: - app: fleet-controller - template: - metadata: - labels: - app: fleet-controller - spec: - containers: - - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - name: fleet-controller - imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" - serviceAccountName: fleet-controller diff --git a/charts/fleet/fleet/0.3.200/templates/rbac.yaml b/charts/fleet/fleet/0.3.200/templates/rbac.yaml deleted file mode 100755 index 59df51b1f..000000000 --- a/charts/fleet/fleet/0.3.200/templates/rbac.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller -rules: -- apiGroups: - - gitjob.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - fleet.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - serviceaccounts - verbs: - - '*' -- apiGroups: - - "" - resources: - - secrets - - configmaps - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - clusterrolebindings - - roles - - rolebindings - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - namespace: {{.Release.Namespace}} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: fleet-controller -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller-bootstrap -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller-bootstrap -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller-bootstrap -subjects: -- kind: ServiceAccount - name: fleet-controller-bootstrap - namespace: {{.Release.Namespace}} diff --git a/charts/fleet/fleet/0.3.200/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.200/templates/serviceaccount.yaml deleted file mode 100755 index bd99d9958..000000000 --- a/charts/fleet/fleet/0.3.200/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller-bootstrap diff --git a/charts/fleet/fleet/0.3.200/values.yaml b/charts/fleet/fleet/0.3.200/values.yaml deleted file mode 100755 index fb3e231fc..000000000 --- a/charts/fleet/fleet/0.3.200/values.yaml +++ /dev/null @@ -1,38 +0,0 @@ -image: - repository: rancher/fleet - tag: v0.3.2 - imagePullPolicy: IfNotPresent - -agentImage: - repository: rancher/fleet-agent - tag: v0.3.2 - imagePullPolicy: IfNotPresent - -# For cluster registration the public URL of the Kubernetes API server must be set here -# Example: https://example.com:6443 -apiServerURL: "" - -# For cluster registration the pem encoded value of the CA of the Kubernetes API server must be set here -# If left empty it is assumed this Kubernetes API TLS is signed by a well known CA. -apiServerCA: "" - -# A duration string for how often agents should report a heartbeat -agentCheckinInterval: "15m" - -# Whether you want to allow cluster upon registration to specify their labels. -ignoreClusterRegistrationLabels: false - -bootstrap: - # The namespace that will be autocreated and the local cluster will be registered in - namespace: fleet-local - # A repo to add at install time that will deploy to the local cluster. This allows - # one to fully bootstrap fleet, it's configuration and all it's downstream clusters - # in one shot. - repo: "" - secret: "" - branch: master - paths: "" - -global: - cattle: - systemDefaultRegistry: "" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/Chart.yaml b/charts/fleet/fleet/0.3.300/Chart.yaml deleted file mode 100755 index a6b88e2ff..000000000 --- a/charts/fleet/fleet/0.3.300/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: fleet-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: fleet-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: clusters.fleet.cattle.io/v1alpha1 - catalog.cattle.io/release-name: fleet -apiVersion: v2 -appVersion: 0.3.3 -description: Fleet Manager - GitOps at Scale -icon: https://charts.rancher.io/assets/logos/fleet.svg -name: fleet -version: 0.3.300 diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/.helmignore b/charts/fleet/fleet/0.3.300/charts/gitjob/.helmignore deleted file mode 100755 index 691fa13d6..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/Chart.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/Chart.yaml deleted file mode 100755 index a1d0b9a8f..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -appVersion: 0.1.12 -description: Controller that run jobs based on git events -name: gitjob -version: 0.1.12 diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/_helpers.tpl b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/_helpers.tpl deleted file mode 100755 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrole.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrole.yaml deleted file mode 100755 index bcad90164..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrole.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: gitjob -rules: - - apiGroups: - - "batch" - resources: - - 'jobs' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'pods' - verbs: - - 'list' - - 'get' - - 'watch' - - apiGroups: - - "" - resources: - - 'secrets' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'configmaps' - verbs: - - '*' - - apiGroups: - - "gitjob.cattle.io" - resources: - - "gitjobs" - - "gitjobs/status" - verbs: - - "*" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrolebinding.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrolebinding.yaml deleted file mode 100755 index 0bf07c4ef..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: gitjob-binding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gitjob -subjects: - - kind: ServiceAccount - name: gitjob - namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/deployment.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/deployment.yaml deleted file mode 100755 index 93b549432..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/deployment.yaml +++ /dev/null @@ -1,34 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gitjob -spec: - selector: - matchLabels: - app: "gitjob" - template: - metadata: - labels: - app: "gitjob" - spec: - serviceAccountName: gitjob - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.gitjob.repository }}:{{ .Values.gitjob.tag }}" - name: gitjob - command: - - gitjob - - --tekton-image - - "{{ template "system_default_registry" . }}{{ .Values.tekton.repository }}:{{ .Values.tekton.tag }}" - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace -{{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} -{{- end }} diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/service.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/service.yaml deleted file mode 100755 index bf57c1b55..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: gitjob -spec: - ports: - - name: http-80 - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: "gitjob" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/templates/serviceaccount.yaml deleted file mode 100755 index 5f8aecb04..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/templates/serviceaccount.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: gitjob diff --git a/charts/fleet/fleet/0.3.300/charts/gitjob/values.yaml b/charts/fleet/fleet/0.3.300/charts/gitjob/values.yaml deleted file mode 100755 index 650f62af2..000000000 --- a/charts/fleet/fleet/0.3.300/charts/gitjob/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -gitjob: - repository: rancher/gitjob - tag: v0.1.12 - -tekton: - repository: rancher/tekton-utils - tag: v0.1.1 - -global: - cattle: - systemDefaultRegistry: "" - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local diff --git a/charts/fleet/fleet/0.3.300/templates/_helpers.tpl b/charts/fleet/fleet/0.3.300/templates/_helpers.tpl deleted file mode 100755 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.300/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.300/templates/configmap.yaml b/charts/fleet/fleet/0.3.300/templates/configmap.yaml deleted file mode 100755 index c546c4b97..000000000 --- a/charts/fleet/fleet/0.3.300/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: fleet-controller -data: - config: | - { - "agentImage": "{{ template "system_default_registry" . }}{{.Values.agentImage.repository}}:{{.Values.agentImage.tag}}", - "agentImagePullPolicy": "{{ .Values.agentImage.imagePullPolicy }}", - "apiServerURL": "{{.Values.apiServerURL}}", - "apiServerCA": "{{b64enc .Values.apiServerCA}}", - "agentCheckinInterval": "{{.Values.agentCheckinInterval}}", - "ignoreClusterRegistrationLabels": {{.Values.ignoreClusterRegistrationLabels}}, - "bootstrap": { - "paths": "{{.Values.bootstrap.paths}}", - "repo": "{{.Values.bootstrap.repo}}", - "secret": "{{.Values.bootstrap.secret}}", - "branch": "{{.Values.bootstrap.branch}}", - "namespace": "{{.Values.bootstrap.namespace}}", - }, - "webhookReceiverURL": "{{.Values.webhookReceiverURL}}", - "githubURLPrefix": "{{.Values.githubURLPrefix}}" - } diff --git a/charts/fleet/fleet/0.3.300/templates/deployment.yaml b/charts/fleet/fleet/0.3.300/templates/deployment.yaml deleted file mode 100755 index 25c505ad8..000000000 --- a/charts/fleet/fleet/0.3.300/templates/deployment.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: fleet-controller -spec: - selector: - matchLabels: - app: fleet-controller - template: - metadata: - labels: - app: fleet-controller - spec: - containers: - - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - name: fleet-controller - imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" - serviceAccountName: fleet-controller diff --git a/charts/fleet/fleet/0.3.300/templates/rbac.yaml b/charts/fleet/fleet/0.3.300/templates/rbac.yaml deleted file mode 100755 index 59df51b1f..000000000 --- a/charts/fleet/fleet/0.3.300/templates/rbac.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller -rules: -- apiGroups: - - gitjob.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - fleet.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - serviceaccounts - verbs: - - '*' -- apiGroups: - - "" - resources: - - secrets - - configmaps - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - clusterrolebindings - - roles - - rolebindings - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - namespace: {{.Release.Namespace}} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: fleet-controller -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller-bootstrap -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller-bootstrap -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller-bootstrap -subjects: -- kind: ServiceAccount - name: fleet-controller-bootstrap - namespace: {{.Release.Namespace}} diff --git a/charts/fleet/fleet/0.3.300/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.300/templates/serviceaccount.yaml deleted file mode 100755 index bd99d9958..000000000 --- a/charts/fleet/fleet/0.3.300/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller-bootstrap diff --git a/charts/fleet/fleet/0.3.300/values.yaml b/charts/fleet/fleet/0.3.300/values.yaml deleted file mode 100755 index 36af75dc9..000000000 --- a/charts/fleet/fleet/0.3.300/values.yaml +++ /dev/null @@ -1,38 +0,0 @@ -image: - repository: rancher/fleet - tag: v0.3.3 - imagePullPolicy: IfNotPresent - -agentImage: - repository: rancher/fleet-agent - tag: v0.3.3 - imagePullPolicy: IfNotPresent - -# For cluster registration the public URL of the Kubernetes API server must be set here -# Example: https://example.com:6443 -apiServerURL: "" - -# For cluster registration the pem encoded value of the CA of the Kubernetes API server must be set here -# If left empty it is assumed this Kubernetes API TLS is signed by a well known CA. -apiServerCA: "" - -# A duration string for how often agents should report a heartbeat -agentCheckinInterval: "15m" - -# Whether you want to allow cluster upon registration to specify their labels. -ignoreClusterRegistrationLabels: false - -bootstrap: - # The namespace that will be autocreated and the local cluster will be registered in - namespace: fleet-local - # A repo to add at install time that will deploy to the local cluster. This allows - # one to fully bootstrap fleet, it's configuration and all it's downstream clusters - # in one shot. - repo: "" - secret: "" - branch: master - paths: "" - -global: - cattle: - systemDefaultRegistry: "" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/Chart.yaml b/charts/fleet/fleet/0.3.400/Chart.yaml deleted file mode 100755 index b62e294de..000000000 --- a/charts/fleet/fleet/0.3.400/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: fleet-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: fleet-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: clusters.fleet.cattle.io/v1alpha1 - catalog.cattle.io/release-name: fleet -apiVersion: v2 -appVersion: 0.3.4 -description: Fleet Manager - GitOps at Scale -icon: https://charts.rancher.io/assets/logos/fleet.svg -name: fleet -version: 0.3.400 diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/.helmignore b/charts/fleet/fleet/0.3.400/charts/gitjob/.helmignore deleted file mode 100755 index 691fa13d6..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/Chart.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/Chart.yaml deleted file mode 100755 index 5724324d7..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -appVersion: 0.1.13 -description: Controller that run jobs based on git events -name: gitjob -version: 0.1.13 diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/_helpers.tpl b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/_helpers.tpl deleted file mode 100755 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrole.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrole.yaml deleted file mode 100755 index bcad90164..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrole.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: gitjob -rules: - - apiGroups: - - "batch" - resources: - - 'jobs' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'pods' - verbs: - - 'list' - - 'get' - - 'watch' - - apiGroups: - - "" - resources: - - 'secrets' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'configmaps' - verbs: - - '*' - - apiGroups: - - "gitjob.cattle.io" - resources: - - "gitjobs" - - "gitjobs/status" - verbs: - - "*" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrolebinding.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrolebinding.yaml deleted file mode 100755 index 0bf07c4ef..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: gitjob-binding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gitjob -subjects: - - kind: ServiceAccount - name: gitjob - namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/deployment.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/deployment.yaml deleted file mode 100755 index a12a30d92..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/deployment.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gitjob -spec: - selector: - matchLabels: - app: "gitjob" - template: - metadata: - labels: - app: "gitjob" - spec: - serviceAccountName: gitjob - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.gitjob.repository }}:{{ .Values.gitjob.tag }}" - name: gitjob - command: - - gitjob - - --tekton-image - - "{{ template "system_default_registry" . }}{{ .Values.tekton.repository }}:{{ .Values.tekton.tag }}" - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/service.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/service.yaml deleted file mode 100755 index bf57c1b55..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: gitjob -spec: - ports: - - name: http-80 - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: "gitjob" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/templates/serviceaccount.yaml deleted file mode 100755 index 5f8aecb04..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/templates/serviceaccount.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: gitjob diff --git a/charts/fleet/fleet/0.3.400/charts/gitjob/values.yaml b/charts/fleet/fleet/0.3.400/charts/gitjob/values.yaml deleted file mode 100755 index 051e88b83..000000000 --- a/charts/fleet/fleet/0.3.400/charts/gitjob/values.yaml +++ /dev/null @@ -1,26 +0,0 @@ -gitjob: - repository: rancher/gitjob - tag: v0.1.13 - -tekton: - repository: rancher/tekton-utils - tag: v0.1.1 - -global: - cattle: - systemDefaultRegistry: "" - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule diff --git a/charts/fleet/fleet/0.3.400/templates/_helpers.tpl b/charts/fleet/fleet/0.3.400/templates/_helpers.tpl deleted file mode 100755 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.400/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.400/templates/configmap.yaml b/charts/fleet/fleet/0.3.400/templates/configmap.yaml deleted file mode 100755 index c546c4b97..000000000 --- a/charts/fleet/fleet/0.3.400/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: fleet-controller -data: - config: | - { - "agentImage": "{{ template "system_default_registry" . }}{{.Values.agentImage.repository}}:{{.Values.agentImage.tag}}", - "agentImagePullPolicy": "{{ .Values.agentImage.imagePullPolicy }}", - "apiServerURL": "{{.Values.apiServerURL}}", - "apiServerCA": "{{b64enc .Values.apiServerCA}}", - "agentCheckinInterval": "{{.Values.agentCheckinInterval}}", - "ignoreClusterRegistrationLabels": {{.Values.ignoreClusterRegistrationLabels}}, - "bootstrap": { - "paths": "{{.Values.bootstrap.paths}}", - "repo": "{{.Values.bootstrap.repo}}", - "secret": "{{.Values.bootstrap.secret}}", - "branch": "{{.Values.bootstrap.branch}}", - "namespace": "{{.Values.bootstrap.namespace}}", - }, - "webhookReceiverURL": "{{.Values.webhookReceiverURL}}", - "githubURLPrefix": "{{.Values.githubURLPrefix}}" - } diff --git a/charts/fleet/fleet/0.3.400/templates/deployment.yaml b/charts/fleet/fleet/0.3.400/templates/deployment.yaml deleted file mode 100755 index c64f94ddb..000000000 --- a/charts/fleet/fleet/0.3.400/templates/deployment.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: fleet-controller -spec: - selector: - matchLabels: - app: fleet-controller - template: - metadata: - labels: - app: fleet-controller - spec: - containers: - - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - name: fleet-controller - imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" - serviceAccountName: fleet-controller - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.400/templates/rbac.yaml b/charts/fleet/fleet/0.3.400/templates/rbac.yaml deleted file mode 100755 index 59df51b1f..000000000 --- a/charts/fleet/fleet/0.3.400/templates/rbac.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller -rules: -- apiGroups: - - gitjob.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - fleet.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - serviceaccounts - verbs: - - '*' -- apiGroups: - - "" - resources: - - secrets - - configmaps - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - clusterrolebindings - - roles - - rolebindings - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - namespace: {{.Release.Namespace}} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: fleet-controller -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller-bootstrap -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller-bootstrap -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller-bootstrap -subjects: -- kind: ServiceAccount - name: fleet-controller-bootstrap - namespace: {{.Release.Namespace}} diff --git a/charts/fleet/fleet/0.3.400/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.400/templates/serviceaccount.yaml deleted file mode 100755 index bd99d9958..000000000 --- a/charts/fleet/fleet/0.3.400/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller-bootstrap diff --git a/charts/fleet/fleet/0.3.400/values.yaml b/charts/fleet/fleet/0.3.400/values.yaml deleted file mode 100755 index 726f35877..000000000 --- a/charts/fleet/fleet/0.3.400/values.yaml +++ /dev/null @@ -1,47 +0,0 @@ -image: - repository: rancher/fleet - tag: v0.3.4 - imagePullPolicy: IfNotPresent - -agentImage: - repository: rancher/fleet-agent - tag: v0.3.4 - imagePullPolicy: IfNotPresent - -# For cluster registration the public URL of the Kubernetes API server must be set here -# Example: https://example.com:6443 -apiServerURL: "" - -# For cluster registration the pem encoded value of the CA of the Kubernetes API server must be set here -# If left empty it is assumed this Kubernetes API TLS is signed by a well known CA. -apiServerCA: "" - -# A duration string for how often agents should report a heartbeat -agentCheckinInterval: "15m" - -# Whether you want to allow cluster upon registration to specify their labels. -ignoreClusterRegistrationLabels: false - -bootstrap: - # The namespace that will be autocreated and the local cluster will be registered in - namespace: fleet-local - # A repo to add at install time that will deploy to the local cluster. This allows - # one to fully bootstrap fleet, it's configuration and all it's downstream clusters - # in one shot. - repo: "" - secret: "" - branch: master - paths: "" - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/Chart.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/Chart.yaml deleted file mode 100644 index 5088c18e0..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: fleet-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: fleet-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: clusters.fleet.cattle.io/v1alpha1 - catalog.cattle.io/release-name: fleet -apiVersion: v2 -appVersion: 0.3.5 -description: Fleet Manager - GitOps at Scale -icon: https://charts.rancher.io/assets/logos/fleet.svg -name: fleet -version: 0.3.500+up0.3.5 diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/.helmignore b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/.helmignore deleted file mode 100644 index 691fa13d6..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/Chart.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/Chart.yaml deleted file mode 100644 index 62e1e0255..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -appVersion: 0.1.15 -description: Controller that run jobs based on git events -name: gitjob -version: 0.1.15 diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/_helpers.tpl b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/_helpers.tpl deleted file mode 100644 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrole.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrole.yaml deleted file mode 100644 index bcad90164..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrole.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: gitjob -rules: - - apiGroups: - - "batch" - resources: - - 'jobs' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'pods' - verbs: - - 'list' - - 'get' - - 'watch' - - apiGroups: - - "" - resources: - - 'secrets' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'configmaps' - verbs: - - '*' - - apiGroups: - - "gitjob.cattle.io" - resources: - - "gitjobs" - - "gitjobs/status" - verbs: - - "*" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrolebinding.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrolebinding.yaml deleted file mode 100644 index 0bf07c4ef..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: gitjob-binding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gitjob -subjects: - - kind: ServiceAccount - name: gitjob - namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/deployment.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/deployment.yaml deleted file mode 100644 index a12a30d92..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/deployment.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gitjob -spec: - selector: - matchLabels: - app: "gitjob" - template: - metadata: - labels: - app: "gitjob" - spec: - serviceAccountName: gitjob - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.gitjob.repository }}:{{ .Values.gitjob.tag }}" - name: gitjob - command: - - gitjob - - --tekton-image - - "{{ template "system_default_registry" . }}{{ .Values.tekton.repository }}:{{ .Values.tekton.tag }}" - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/service.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/service.yaml deleted file mode 100644 index bf57c1b55..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: gitjob -spec: - ports: - - name: http-80 - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: "gitjob" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/serviceaccount.yaml deleted file mode 100644 index 5f8aecb04..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/templates/serviceaccount.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: gitjob diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/values.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/values.yaml deleted file mode 100644 index 90ca446a9..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/charts/gitjob/values.yaml +++ /dev/null @@ -1,26 +0,0 @@ -gitjob: - repository: rancher/gitjob - tag: v0.1.15 - -tekton: - repository: rancher/tekton-utils - tag: v0.1.1 - -global: - cattle: - systemDefaultRegistry: "" - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/templates/_helpers.tpl b/charts/fleet/fleet/0.3.500+up0.3.5/templates/_helpers.tpl deleted file mode 100644 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/templates/configmap.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/templates/configmap.yaml deleted file mode 100644 index c546c4b97..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: fleet-controller -data: - config: | - { - "agentImage": "{{ template "system_default_registry" . }}{{.Values.agentImage.repository}}:{{.Values.agentImage.tag}}", - "agentImagePullPolicy": "{{ .Values.agentImage.imagePullPolicy }}", - "apiServerURL": "{{.Values.apiServerURL}}", - "apiServerCA": "{{b64enc .Values.apiServerCA}}", - "agentCheckinInterval": "{{.Values.agentCheckinInterval}}", - "ignoreClusterRegistrationLabels": {{.Values.ignoreClusterRegistrationLabels}}, - "bootstrap": { - "paths": "{{.Values.bootstrap.paths}}", - "repo": "{{.Values.bootstrap.repo}}", - "secret": "{{.Values.bootstrap.secret}}", - "branch": "{{.Values.bootstrap.branch}}", - "namespace": "{{.Values.bootstrap.namespace}}", - }, - "webhookReceiverURL": "{{.Values.webhookReceiverURL}}", - "githubURLPrefix": "{{.Values.githubURLPrefix}}" - } diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/templates/deployment.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/templates/deployment.yaml deleted file mode 100644 index 3319aa0f3..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/templates/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: fleet-controller -spec: - selector: - matchLabels: - app: fleet-controller - template: - metadata: - labels: - app: fleet-controller - spec: - containers: - - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} - {{- end }} - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - name: fleet-controller - imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" - serviceAccountName: fleet-controller - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/templates/rbac.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/templates/rbac.yaml deleted file mode 100644 index 59df51b1f..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/templates/rbac.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller -rules: -- apiGroups: - - gitjob.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - fleet.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - serviceaccounts - verbs: - - '*' -- apiGroups: - - "" - resources: - - secrets - - configmaps - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - clusterrolebindings - - roles - - rolebindings - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - namespace: {{.Release.Namespace}} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: fleet-controller -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller-bootstrap -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller-bootstrap -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller-bootstrap -subjects: -- kind: ServiceAccount - name: fleet-controller-bootstrap - namespace: {{.Release.Namespace}} diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/templates/serviceaccount.yaml deleted file mode 100644 index bd99d9958..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller-bootstrap diff --git a/charts/fleet/fleet/0.3.500+up0.3.5/values.yaml b/charts/fleet/fleet/0.3.500+up0.3.5/values.yaml deleted file mode 100644 index c07d7bd72..000000000 --- a/charts/fleet/fleet/0.3.500+up0.3.5/values.yaml +++ /dev/null @@ -1,53 +0,0 @@ -image: - repository: rancher/fleet - tag: v0.3.5 - imagePullPolicy: IfNotPresent - -agentImage: - repository: rancher/fleet-agent - tag: v0.3.5 - imagePullPolicy: IfNotPresent - -# For cluster registration the public URL of the Kubernetes API server must be set here -# Example: https://example.com:6443 -apiServerURL: "" - -# For cluster registration the pem encoded value of the CA of the Kubernetes API server must be set here -# If left empty it is assumed this Kubernetes API TLS is signed by a well known CA. -apiServerCA: "" - -# A duration string for how often agents should report a heartbeat -agentCheckinInterval: "15m" - -# Whether you want to allow cluster upon registration to specify their labels. -ignoreClusterRegistrationLabels: false - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local - -bootstrap: - # The namespace that will be autocreated and the local cluster will be registered in - namespace: fleet-local - # A repo to add at install time that will deploy to the local cluster. This allows - # one to fully bootstrap fleet, it's configuration and all it's downstream clusters - # in one shot. - repo: "" - secret: "" - branch: master - paths: "" - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/Chart.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/Chart.yaml deleted file mode 100644 index bb3bb0352..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: fleet-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-fleet-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: clusters.fleet.cattle.io/v1alpha1 - catalog.cattle.io/release-name: fleet -apiVersion: v2 -appVersion: 0.3.6-rc1 -dependencies: -- condition: gitops.enabled - name: gitjob - repository: file://./charts/gitjob -description: Fleet Manager - GitOps at Scale -icon: https://charts.rancher.io/assets/logos/fleet.svg -name: fleet -version: 0.3.600-rc1+up0.3.6-rc1 diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/.helmignore b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/.helmignore deleted file mode 100644 index 691fa13d6..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/Chart.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/Chart.yaml deleted file mode 100644 index 62e1e0255..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/Chart.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v2 -appVersion: 0.1.15 -description: Controller that run jobs based on git events -name: gitjob -version: 0.1.15 diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/_helpers.tpl b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/_helpers.tpl deleted file mode 100644 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrole.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrole.yaml deleted file mode 100644 index bcad90164..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrole.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: gitjob -rules: - - apiGroups: - - "batch" - resources: - - 'jobs' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'pods' - verbs: - - 'list' - - 'get' - - 'watch' - - apiGroups: - - "" - resources: - - 'secrets' - verbs: - - '*' - - apiGroups: - - "" - resources: - - 'configmaps' - verbs: - - '*' - - apiGroups: - - "gitjob.cattle.io" - resources: - - "gitjobs" - - "gitjobs/status" - verbs: - - "*" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrolebinding.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrolebinding.yaml deleted file mode 100644 index 0bf07c4ef..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: gitjob-binding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gitjob -subjects: - - kind: ServiceAccount - name: gitjob - namespace: {{ .Release.Namespace }} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/deployment.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/deployment.yaml deleted file mode 100644 index a12a30d92..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/deployment.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gitjob -spec: - selector: - matchLabels: - app: "gitjob" - template: - metadata: - labels: - app: "gitjob" - spec: - serviceAccountName: gitjob - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.gitjob.repository }}:{{ .Values.gitjob.tag }}" - name: gitjob - command: - - gitjob - - --tekton-image - - "{{ template "system_default_registry" . }}{{ .Values.tekton.repository }}:{{ .Values.tekton.tag }}" - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/service.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/service.yaml deleted file mode 100644 index bf57c1b55..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: gitjob -spec: - ports: - - name: http-80 - port: 80 - protocol: TCP - targetPort: 8080 - selector: - app: "gitjob" \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/serviceaccount.yaml deleted file mode 100644 index 5f8aecb04..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/templates/serviceaccount.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: gitjob diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/values.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/values.yaml deleted file mode 100644 index 90ca446a9..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/charts/gitjob/values.yaml +++ /dev/null @@ -1,26 +0,0 @@ -gitjob: - repository: rancher/gitjob - tag: v0.1.15 - -tekton: - repository: rancher/tekton-utils - tag: v0.1.1 - -global: - cattle: - systemDefaultRegistry: "" - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/_helpers.tpl b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/_helpers.tpl deleted file mode 100644 index f652b5643..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/configmap.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/configmap.yaml deleted file mode 100644 index c546c4b97..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/configmap.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: fleet-controller -data: - config: | - { - "agentImage": "{{ template "system_default_registry" . }}{{.Values.agentImage.repository}}:{{.Values.agentImage.tag}}", - "agentImagePullPolicy": "{{ .Values.agentImage.imagePullPolicy }}", - "apiServerURL": "{{.Values.apiServerURL}}", - "apiServerCA": "{{b64enc .Values.apiServerCA}}", - "agentCheckinInterval": "{{.Values.agentCheckinInterval}}", - "ignoreClusterRegistrationLabels": {{.Values.ignoreClusterRegistrationLabels}}, - "bootstrap": { - "paths": "{{.Values.bootstrap.paths}}", - "repo": "{{.Values.bootstrap.repo}}", - "secret": "{{.Values.bootstrap.secret}}", - "branch": "{{.Values.bootstrap.branch}}", - "namespace": "{{.Values.bootstrap.namespace}}", - }, - "webhookReceiverURL": "{{.Values.webhookReceiverURL}}", - "githubURLPrefix": "{{.Values.githubURLPrefix}}" - } diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/deployment.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/deployment.yaml deleted file mode 100644 index 4d9558589..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/deployment.yaml +++ /dev/null @@ -1,44 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: fleet-controller -spec: - selector: - matchLabels: - app: fleet-controller - template: - metadata: - labels: - app: fleet-controller - spec: - containers: - - env: - - name: NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy }} - - name: HTTP_PROXY - value: {{ .Values.proxy }} - - name: HTTPS_PROXY - value: {{ .Values.proxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} - {{- end }} - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - name: fleet-controller - imagePullPolicy: "{{ .Values.image.imagePullPolicy }}" - command: - - fleet-controller - {{- if not .Values.gitops.enabled }} - - --disable-gitops - {{- end }} - serviceAccountName: fleet-controller - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/rbac.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/rbac.yaml deleted file mode 100644 index 59df51b1f..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/rbac.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller -rules: -- apiGroups: - - gitjob.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - fleet.cattle.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - "" - resources: - - namespaces - - serviceaccounts - verbs: - - '*' -- apiGroups: - - "" - resources: - - secrets - - configmaps - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterroles - - clusterrolebindings - - roles - - rolebindings - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - namespace: {{.Release.Namespace}} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: fleet-controller -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: fleet-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: fleet-controller -subjects: -- kind: ServiceAccount - name: fleet-controller - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: fleet-controller-bootstrap -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: fleet-controller-bootstrap -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: fleet-controller-bootstrap -subjects: -- kind: ServiceAccount - name: fleet-controller-bootstrap - namespace: {{.Release.Namespace}} diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/serviceaccount.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/serviceaccount.yaml deleted file mode 100644 index bd99d9958..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller - ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: fleet-controller-bootstrap diff --git a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/values.yaml b/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/values.yaml deleted file mode 100644 index 0ea1720b6..000000000 --- a/charts/fleet/fleet/0.3.600-rc1+up0.3.6-rc1/values.yaml +++ /dev/null @@ -1,56 +0,0 @@ -image: - repository: rancher/fleet - tag: v0.3.6-rc1 - imagePullPolicy: IfNotPresent - -agentImage: - repository: rancher/fleet-agent - tag: v0.3.6-rc1 - imagePullPolicy: IfNotPresent - -# For cluster registration the public URL of the Kubernetes API server must be set here -# Example: https://example.com:6443 -apiServerURL: "" - -# For cluster registration the pem encoded value of the CA of the Kubernetes API server must be set here -# If left empty it is assumed this Kubernetes API TLS is signed by a well known CA. -apiServerCA: "" - -# A duration string for how often agents should report a heartbeat -agentCheckinInterval: "15m" - -# Whether you want to allow cluster upon registration to specify their labels. -ignoreClusterRegistrationLabels: false - -# http[s] proxy server -# proxy: http://@:: - -# comma separated list of domains or ip addresses that will not use the proxy -noProxy: 127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16,.svc,.cluster.local - -bootstrap: - # The namespace that will be autocreated and the local cluster will be registered in - namespace: fleet-local - # A repo to add at install time that will deploy to the local cluster. This allows - # one to fully bootstrap fleet, it's configuration and all it's downstream clusters - # in one shot. - repo: "" - secret: "" - branch: master - paths: "" - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -gitops: - enabled: true \ No newline at end of file diff --git a/charts/longhorn/longhorn-crd/1.0.200/Chart.yaml b/charts/longhorn/longhorn-crd/1.0.200/Chart.yaml deleted file mode 100755 index 7dc68d42b..000000000 --- a/charts/longhorn/longhorn-crd/1.0.200/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/release-name: longhorn-crd -apiVersion: v1 -description: Installs the CRDs for longhorn. -name: longhorn-crd -type: application -version: 1.0.200 diff --git a/charts/longhorn/longhorn-crd/1.0.200/README.md b/charts/longhorn/longhorn-crd/1.0.200/README.md deleted file mode 100755 index 3db83649d..000000000 --- a/charts/longhorn/longhorn-crd/1.0.200/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# longhorn-crd -A Rancher chart that installs the CRDs used by [longhorn](https://github.com/rancher/dev-charts/tree/master/packages/longhorn). diff --git a/charts/longhorn/longhorn-crd/1.0.200/templates/crds.yaml b/charts/longhorn/longhorn-crd/1.0.200/templates/crds.yaml deleted file mode 100755 index e63cf8c72..000000000 --- a/charts/longhorn/longhorn-crd/1.0.200/templates/crds.yaml +++ /dev/null @@ -1,172 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Engine - name: engines.longhorn.io -spec: - group: longhorn.io - names: - kind: Engine - listKind: EngineList - plural: engines - shortNames: - - lhe - singular: engine - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Replica - name: replicas.longhorn.io -spec: - group: longhorn.io - names: - kind: Replica - listKind: ReplicaList - plural: replicas - shortNames: - - lhr - singular: replica - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Setting - name: settings.longhorn.io -spec: - group: longhorn.io - names: - kind: Setting - listKind: SettingList - plural: settings - shortNames: - - lhs - singular: setting - scope: Namespaced - version: v1beta1 ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Volume - name: volumes.longhorn.io -spec: - group: longhorn.io - names: - kind: Volume - listKind: VolumeList - plural: volumes - shortNames: - - lhv - singular: volume - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: EngineImage - name: engineimages.longhorn.io -spec: - group: longhorn.io - names: - kind: EngineImage - listKind: EngineImageList - plural: engineimages - shortNames: - - lhei - singular: engineimage - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Node - name: nodes.longhorn.io -spec: - group: longhorn.io - names: - kind: Node - listKind: NodeList - plural: nodes - shortNames: - - lhn - singular: node - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: InstanceManager - name: instancemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: InstanceManager - listKind: InstanceManagerList - plural: instancemanagers - shortNames: - - lhim - singular: instancemanager - scope: Namespaced - version: v1beta1 - subresources: - status: {} diff --git a/charts/longhorn/longhorn-crd/1.0.201/Chart.yaml b/charts/longhorn/longhorn-crd/1.0.201/Chart.yaml deleted file mode 100755 index ba1c26d89..000000000 --- a/charts/longhorn/longhorn-crd/1.0.201/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/release-name: longhorn-crd -apiVersion: v1 -description: Installs the CRDs for longhorn. -name: longhorn-crd -type: application -version: 1.0.201 diff --git a/charts/longhorn/longhorn-crd/1.0.201/README.md b/charts/longhorn/longhorn-crd/1.0.201/README.md deleted file mode 100755 index d9f7f14b3..000000000 --- a/charts/longhorn/longhorn-crd/1.0.201/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# longhorn-crd -A Rancher chart that installs the CRDs used by longhorn. diff --git a/charts/longhorn/longhorn-crd/1.0.201/templates/crds.yaml b/charts/longhorn/longhorn-crd/1.0.201/templates/crds.yaml deleted file mode 100755 index e63cf8c72..000000000 --- a/charts/longhorn/longhorn-crd/1.0.201/templates/crds.yaml +++ /dev/null @@ -1,172 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Engine - name: engines.longhorn.io -spec: - group: longhorn.io - names: - kind: Engine - listKind: EngineList - plural: engines - shortNames: - - lhe - singular: engine - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Replica - name: replicas.longhorn.io -spec: - group: longhorn.io - names: - kind: Replica - listKind: ReplicaList - plural: replicas - shortNames: - - lhr - singular: replica - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Setting - name: settings.longhorn.io -spec: - group: longhorn.io - names: - kind: Setting - listKind: SettingList - plural: settings - shortNames: - - lhs - singular: setting - scope: Namespaced - version: v1beta1 ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Volume - name: volumes.longhorn.io -spec: - group: longhorn.io - names: - kind: Volume - listKind: VolumeList - plural: volumes - shortNames: - - lhv - singular: volume - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: EngineImage - name: engineimages.longhorn.io -spec: - group: longhorn.io - names: - kind: EngineImage - listKind: EngineImageList - plural: engineimages - shortNames: - - lhei - singular: engineimage - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: Node - name: nodes.longhorn.io -spec: - group: longhorn.io - names: - kind: Node - listKind: NodeList - plural: nodes - shortNames: - - lhn - singular: node - scope: Namespaced - version: v1beta1 - subresources: - status: {} ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.0.2 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.0.2 - longhorn-manager: InstanceManager - name: instancemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: InstanceManager - listKind: InstanceManagerList - plural: instancemanagers - shortNames: - - lhim - singular: instancemanager - scope: Namespaced - version: v1beta1 - subresources: - status: {} diff --git a/charts/longhorn/longhorn-crd/1.1.000/Chart.yaml b/charts/longhorn/longhorn-crd/1.1.000/Chart.yaml deleted file mode 100755 index b9dba3761..000000000 --- a/charts/longhorn/longhorn-crd/1.1.000/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/release-name: longhorn-crd -apiVersion: v1 -description: Installs the CRDs for longhorn. -name: longhorn-crd -type: application -version: 1.1.000 diff --git a/charts/longhorn/longhorn-crd/1.1.000/README.md b/charts/longhorn/longhorn-crd/1.1.000/README.md deleted file mode 100755 index d9f7f14b3..000000000 --- a/charts/longhorn/longhorn-crd/1.1.000/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# longhorn-crd -A Rancher chart that installs the CRDs used by longhorn. diff --git a/charts/longhorn/longhorn-crd/1.1.000/templates/crds.yaml b/charts/longhorn/longhorn-crd/1.1.000/templates/crds.yaml deleted file mode 100755 index 836264585..000000000 --- a/charts/longhorn/longhorn-crd/1.1.000/templates/crds.yaml +++ /dev/null @@ -1,420 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Engine - name: engines.longhorn.io -spec: - group: longhorn.io - names: - kind: Engine - listKind: EngineList - plural: engines - shortNames: - - lhe - singular: engine - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the engine - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the engine is on - jsonPath: .spec.nodeID - - name: InstanceManager - type: string - description: The instance manager of the engine - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the engine - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Replica - name: replicas.longhorn.io -spec: - group: longhorn.io - names: - kind: Replica - listKind: ReplicaList - plural: replicas - shortNames: - - lhr - singular: replica - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the replica - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the replica is on - jsonPath: .spec.nodeID - - name: Disk - type: string - description: The disk that the replica is on - jsonPath: .spec.diskID - - name: InstanceManager - type: string - description: The instance manager of the replica - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the replica - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Setting - name: settings.longhorn.io -spec: - group: longhorn.io - names: - kind: Setting - listKind: SettingList - plural: settings - shortNames: - - lhs - singular: setting - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - x-kubernetes-preserve-unknown-fields: true - additionalPrinterColumns: - - name: Value - type: string - description: The value of the setting - jsonPath: .value - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Volume - name: volumes.longhorn.io -spec: - group: longhorn.io - names: - kind: Volume - listKind: VolumeList - plural: volumes - shortNames: - - lhv - singular: volume - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the volume - jsonPath: .status.state - - name: Robustness - type: string - description: The robustness of the volume - jsonPath: .status.robustness - - name: Scheduled - type: string - description: The scheduled condition of the volume - jsonPath: .status.conditions['scheduled']['status'] - - name: Size - type: string - description: The size of the volume - jsonPath: .spec.size - - name: Node - type: string - description: The node that the volume is currently attaching to - jsonPath: .status.currentNodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: EngineImage - name: engineimages.longhorn.io -spec: - group: longhorn.io - names: - kind: EngineImage - listKind: EngineImageList - plural: engineimages - shortNames: - - lhei - singular: engineimage - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: State of the engine image - jsonPath: .status.state - - name: Image - type: string - description: The Longhorn engine image - jsonPath: .spec.image - - name: RefCount - type: integer - description: Number of volumes are using the engine image - jsonPath: .status.refCount - - name: BuildDate - type: date - description: The build date of the engine image - jsonPath: .status.buildDate - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Node - name: nodes.longhorn.io -spec: - group: longhorn.io - names: - kind: Node - listKind: NodeList - plural: nodes - shortNames: - - lhn - singular: node - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: Ready - type: string - description: Indicate whether the node is ready - jsonPath: .status.conditions['Ready']['status'] - - name: AllowScheduling - type: boolean - description: Indicate whether the user disabled/enabled replica scheduling for the node - jsonPath: .spec.allowScheduling - - name: Schedulable - type: string - description: Indicate whether Longhorn can schedule replicas on the node - jsonPath: .status.conditions['Schedulable']['status'] - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: InstanceManager - name: instancemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: InstanceManager - listKind: InstanceManagerList - plural: instancemanagers - shortNames: - - lhim - singular: instancemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the instance manager - jsonPath: .status.currentState - - name: Type - type: string - description: The type of the instance manager (engine or replica) - jsonPath: .spec.type - - name: Node - type: string - description: The node that the instance manager is running on - jsonPath: .spec.nodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: ShareManager - name: sharemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: ShareManager - listKind: ShareManagerList - plural: sharemanagers - shortNames: - - lhsm - singular: sharemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the share manager - jsonPath: .status.state - - name: Node - type: string - description: The node that the share manager is owned by - jsonPath: .status.ownerID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp diff --git a/charts/longhorn/longhorn-crd/1.1.001/Chart.yaml b/charts/longhorn/longhorn-crd/1.1.001/Chart.yaml deleted file mode 100755 index 2ce321e37..000000000 --- a/charts/longhorn/longhorn-crd/1.1.001/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/release-name: longhorn-crd -apiVersion: v1 -description: Installs the CRDs for longhorn. -name: longhorn-crd -type: application -version: 1.1.001 diff --git a/charts/longhorn/longhorn-crd/1.1.001/README.md b/charts/longhorn/longhorn-crd/1.1.001/README.md deleted file mode 100755 index d9f7f14b3..000000000 --- a/charts/longhorn/longhorn-crd/1.1.001/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# longhorn-crd -A Rancher chart that installs the CRDs used by longhorn. diff --git a/charts/longhorn/longhorn-crd/1.1.001/templates/crds.yaml b/charts/longhorn/longhorn-crd/1.1.001/templates/crds.yaml deleted file mode 100755 index 836264585..000000000 --- a/charts/longhorn/longhorn-crd/1.1.001/templates/crds.yaml +++ /dev/null @@ -1,420 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Engine - name: engines.longhorn.io -spec: - group: longhorn.io - names: - kind: Engine - listKind: EngineList - plural: engines - shortNames: - - lhe - singular: engine - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the engine - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the engine is on - jsonPath: .spec.nodeID - - name: InstanceManager - type: string - description: The instance manager of the engine - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the engine - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Replica - name: replicas.longhorn.io -spec: - group: longhorn.io - names: - kind: Replica - listKind: ReplicaList - plural: replicas - shortNames: - - lhr - singular: replica - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the replica - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the replica is on - jsonPath: .spec.nodeID - - name: Disk - type: string - description: The disk that the replica is on - jsonPath: .spec.diskID - - name: InstanceManager - type: string - description: The instance manager of the replica - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the replica - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Setting - name: settings.longhorn.io -spec: - group: longhorn.io - names: - kind: Setting - listKind: SettingList - plural: settings - shortNames: - - lhs - singular: setting - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - x-kubernetes-preserve-unknown-fields: true - additionalPrinterColumns: - - name: Value - type: string - description: The value of the setting - jsonPath: .value - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Volume - name: volumes.longhorn.io -spec: - group: longhorn.io - names: - kind: Volume - listKind: VolumeList - plural: volumes - shortNames: - - lhv - singular: volume - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the volume - jsonPath: .status.state - - name: Robustness - type: string - description: The robustness of the volume - jsonPath: .status.robustness - - name: Scheduled - type: string - description: The scheduled condition of the volume - jsonPath: .status.conditions['scheduled']['status'] - - name: Size - type: string - description: The size of the volume - jsonPath: .spec.size - - name: Node - type: string - description: The node that the volume is currently attaching to - jsonPath: .status.currentNodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: EngineImage - name: engineimages.longhorn.io -spec: - group: longhorn.io - names: - kind: EngineImage - listKind: EngineImageList - plural: engineimages - shortNames: - - lhei - singular: engineimage - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: State of the engine image - jsonPath: .status.state - - name: Image - type: string - description: The Longhorn engine image - jsonPath: .spec.image - - name: RefCount - type: integer - description: Number of volumes are using the engine image - jsonPath: .status.refCount - - name: BuildDate - type: date - description: The build date of the engine image - jsonPath: .status.buildDate - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: Node - name: nodes.longhorn.io -spec: - group: longhorn.io - names: - kind: Node - listKind: NodeList - plural: nodes - shortNames: - - lhn - singular: node - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: Ready - type: string - description: Indicate whether the node is ready - jsonPath: .status.conditions['Ready']['status'] - - name: AllowScheduling - type: boolean - description: Indicate whether the user disabled/enabled replica scheduling for the node - jsonPath: .spec.allowScheduling - - name: Schedulable - type: string - description: Indicate whether Longhorn can schedule replicas on the node - jsonPath: .status.conditions['Schedulable']['status'] - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: InstanceManager - name: instancemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: InstanceManager - listKind: InstanceManagerList - plural: instancemanagers - shortNames: - - lhim - singular: instancemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the instance manager - jsonPath: .status.currentState - - name: Type - type: string - description: The type of the instance manager (engine or replica) - jsonPath: .spec.type - - name: Node - type: string - description: The node that the instance manager is running on - jsonPath: .spec.nodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.0 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.0 - longhorn-manager: ShareManager - name: sharemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: ShareManager - listKind: ShareManagerList - plural: sharemanagers - shortNames: - - lhsm - singular: sharemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the share manager - jsonPath: .status.state - - name: Node - type: string - description: The node that the share manager is owned by - jsonPath: .status.ownerID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp diff --git a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/Chart.yaml b/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/Chart.yaml deleted file mode 100644 index ad98a6016..000000000 --- a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/release-name: longhorn-crd -apiVersion: v1 -description: Installs the CRDs for longhorn. -name: longhorn-crd -type: application -version: 1.1.100+up1.1.1 diff --git a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/README.md b/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/README.md deleted file mode 100644 index d9f7f14b3..000000000 --- a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# longhorn-crd -A Rancher chart that installs the CRDs used by longhorn. diff --git a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/templates/crds.yaml b/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/templates/crds.yaml deleted file mode 100644 index 8d33bf24d..000000000 --- a/charts/longhorn/longhorn-crd/1.1.100+up1.1.1/templates/crds.yaml +++ /dev/null @@ -1,524 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: Engine - name: engines.longhorn.io -spec: - group: longhorn.io - names: - kind: Engine - listKind: EngineList - plural: engines - shortNames: - - lhe - singular: engine - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the engine - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the engine is on - jsonPath: .spec.nodeID - - name: InstanceManager - type: string - description: The instance manager of the engine - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the engine - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: Replica - name: replicas.longhorn.io -spec: - group: longhorn.io - names: - kind: Replica - listKind: ReplicaList - plural: replicas - shortNames: - - lhr - singular: replica - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the replica - jsonPath: .status.currentState - - name: Node - type: string - description: The node that the replica is on - jsonPath: .spec.nodeID - - name: Disk - type: string - description: The disk that the replica is on - jsonPath: .spec.diskID - - name: InstanceManager - type: string - description: The instance manager of the replica - jsonPath: .status.instanceManagerName - - name: Image - type: string - description: The current image of the replica - jsonPath: .status.currentImage - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: Setting - name: settings.longhorn.io -spec: - group: longhorn.io - names: - kind: Setting - listKind: SettingList - plural: settings - shortNames: - - lhs - singular: setting - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - x-kubernetes-preserve-unknown-fields: true - additionalPrinterColumns: - - name: Value - type: string - description: The value of the setting - jsonPath: .value - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: Volume - name: volumes.longhorn.io -spec: - group: longhorn.io - names: - kind: Volume - listKind: VolumeList - plural: volumes - shortNames: - - lhv - singular: volume - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the volume - jsonPath: .status.state - - name: Robustness - type: string - description: The robustness of the volume - jsonPath: .status.robustness - - name: Scheduled - type: string - description: The scheduled condition of the volume - jsonPath: .status.conditions['scheduled']['status'] - - name: Size - type: string - description: The size of the volume - jsonPath: .spec.size - - name: Node - type: string - description: The node that the volume is currently attaching to - jsonPath: .status.currentNodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: EngineImage - name: engineimages.longhorn.io -spec: - group: longhorn.io - names: - kind: EngineImage - listKind: EngineImageList - plural: engineimages - shortNames: - - lhei - singular: engineimage - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: State of the engine image - jsonPath: .status.state - - name: Image - type: string - description: The Longhorn engine image - jsonPath: .spec.image - - name: RefCount - type: integer - description: Number of volumes are using the engine image - jsonPath: .status.refCount - - name: BuildDate - type: date - description: The build date of the engine image - jsonPath: .status.buildDate - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: Node - name: nodes.longhorn.io -spec: - group: longhorn.io - names: - kind: Node - listKind: NodeList - plural: nodes - shortNames: - - lhn - singular: node - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: Ready - type: string - description: Indicate whether the node is ready - jsonPath: .status.conditions['Ready']['status'] - - name: AllowScheduling - type: boolean - description: Indicate whether the user disabled/enabled replica scheduling for the node - jsonPath: .spec.allowScheduling - - name: Schedulable - type: string - description: Indicate whether Longhorn can schedule replicas on the node - jsonPath: .status.conditions['Schedulable']['status'] - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: InstanceManager - name: instancemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: InstanceManager - listKind: InstanceManagerList - plural: instancemanagers - shortNames: - - lhim - singular: instancemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the instance manager - jsonPath: .status.currentState - - name: Type - type: string - description: The type of the instance manager (engine or replica) - jsonPath: .spec.type - - name: Node - type: string - description: The node that the instance manager is running on - jsonPath: .spec.nodeID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: ShareManager - name: sharemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: ShareManager - listKind: ShareManagerList - plural: sharemanagers - shortNames: - - lhsm - singular: sharemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The state of the share manager - jsonPath: .status.state - - name: Node - type: string - description: The node that the share manager is owned by - jsonPath: .status.ownerID - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: BackingImage - name: backingimages.longhorn.io -spec: - group: longhorn.io - names: - kind: BackingImage - listKind: BackingImageList - plural: backingimages - shortNames: - - lhbi - singular: backingimage - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: Image - type: string - description: The backing image name - jsonPath: .spec.image - - name: Age - type: date - jsonPath: .metadata.creationTimestamp ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - labels: - app.kubernetes.io/name: longhorn - helm.sh/chart: longhorn-1.1.1 - app.kubernetes.io/managed-by: Helm - app.kubernetes.io/instance: longhorn - app.kubernetes.io/version: v1.1.1 - longhorn-manager: BackingImageManager - name: backingimagemanagers.longhorn.io -spec: - group: longhorn.io - names: - kind: BackingImageManager - listKind: BackingImageManagerList - plural: backingimagemanagers - shortNames: - - lhbim - singular: backingimagemanager - scope: Namespaced - versions: - - name: v1beta1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - properties: - spec: - x-kubernetes-preserve-unknown-fields: true - status: - x-kubernetes-preserve-unknown-fields: true - subresources: - status: {} - additionalPrinterColumns: - - name: State - type: string - description: The current state of the manager - jsonPath: .status.currentState - - name: Image - type: string - description: The image the manager pod will use - jsonPath: .spec.image - - name: Node - type: string - description: The node the manager is on - jsonPath: .spec.nodeID - - name: DiskUUID - type: string - description: The disk the manager is responsible for - jsonPath: .spec.diskUUID - - name: DiskPath - type: string - description: The disk path the manager is using - jsonPath: .spec.diskPath - - name: Age - type: date - jsonPath: .metadata.creationTimestamp diff --git a/charts/longhorn/longhorn/1.0.200/.helmignore b/charts/longhorn/longhorn/1.0.200/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/longhorn/longhorn/1.0.200/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/longhorn/longhorn/1.0.200/Chart.yaml b/charts/longhorn/longhorn/1.0.200/Chart.yaml deleted file mode 100755 index 915d207db..000000000 --- a/charts/longhorn/longhorn/1.0.200/Chart.yaml +++ /dev/null @@ -1,35 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: longhorn-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/provides-gvr: longhorn.io/v1beta1 - catalog.cattle.io/release-name: longhorn - catalog.cattle.io/ui-component: longhorn - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.2 -description: Longhorn is a distributed block storage system for Kubernetes. -home: https://github.com/longhorn/longhorn -icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/longhorn/icon/color/longhorn-icon-color.svg -keywords: -- longhorn -- storage -- distributed -- block -- device -- iscsi -kubeVersion: '>=v1.14.0-r0' -maintainers: -- email: maintainers@longhorn.io - name: Longhorn maintainers -- email: sheng@yasker.org - name: Sheng Yang -name: longhorn -sources: -- https://github.com/longhorn/longhorn -- https://github.com/longhorn/longhorn-engine -- https://github.com/longhorn/longhorn-instance-manager -- https://github.com/longhorn/longhorn-manager -- https://github.com/longhorn/longhorn-ui -- https://github.com/longhorn/longhorn-tests -version: 1.0.200 diff --git a/charts/longhorn/longhorn/1.0.200/README.md b/charts/longhorn/longhorn/1.0.200/README.md deleted file mode 100755 index 068bb5d66..000000000 --- a/charts/longhorn/longhorn/1.0.200/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Rancher Longhorn Chart - -> **Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -> **Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -The following document pertains to running Longhorn from the Rancher 2.0 chart. - -## Source Code - -Longhorn is 100% open source software. Project source code is spread across a number of repos: - -1. Longhorn Engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine -2. Longhorn Instance Manager -- Controller/replica instance lifecycle management https://github.com/longhorn/longhorn-instance-manager -3. Longhorn Manager -- Longhorn orchestration, includes CSI driver for Kubernetes https://github.com/longhorn/longhorn-manager -4. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui - -## Prerequisites - -1. Rancher v2.1+ -2. Docker v1.13+ -3. Kubernetes v1.14+ -4. Make sure `curl`, `findmnt`, `grep`, `awk` and `blkid` has been installed in all nodes of the Kubernetes cluster. -5. Make sure `open-iscsi` has been installed in all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it contains `open-iscsi` already. - -## Uninstallation - -1. To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc). - -2. From Rancher UI, navigate to `Catalog Apps` tab and delete Longhorn app. - -## Troubleshooting - -### I deleted the Longhorn App from Rancher UI instead of following the uninstallation procedure - -Redeploy the (same version) Longhorn App. Follow the uninstallation procedure above. - -### Problems with CRDs - -If your CRD instances or the CRDs themselves can't be deleted for whatever reason, run the commands below to clean up. Caution: this will wipe all Longhorn state! - -``` -# Delete CRD instances and definitions -curl -s https://raw.githubusercontent.com/longhorn/longhorn/v0.8.1/scripts/cleanup.sh |bash -s v062 -curl -s https://raw.githubusercontent.com/longhorn/longhorn/v0.8.1/scripts/cleanup.sh |bash -s v070 -``` - ---- -Please see [link](https://github.com/longhorn/longhorn) for more information. diff --git a/charts/longhorn/longhorn/1.0.200/app-readme.md b/charts/longhorn/longhorn/1.0.200/app-readme.md deleted file mode 100755 index cb23135ca..000000000 --- a/charts/longhorn/longhorn/1.0.200/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Longhorn - -Longhorn is a lightweight, reliable and easy to use distributed block storage system for Kubernetes. Once deployed, users can leverage persistent volumes provided by Longhorn. - -Longhorn creates a dedicated storage controller for each volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Longhorn supports snapshots, backups and even allows you to schedule recurring snapshots and backups! - -**Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -**Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -[Chart Documentation](https://github.com/longhorn/longhorn/blob/master/chart/README.md) diff --git a/charts/longhorn/longhorn/1.0.200/questions.yml b/charts/longhorn/longhorn/1.0.200/questions.yml deleted file mode 100755 index 26566901f..000000000 --- a/charts/longhorn/longhorn/1.0.200/questions.yml +++ /dev/null @@ -1,346 +0,0 @@ -categories: -- storage -namespace: longhorn-system -questions: -- variable: image.defaultImage - default: "true" - description: "Use default Longhorn images" - label: Use Default Images - type: boolean - show_subquestion_if: false - group: "Longhorn Images" - subquestions: - - variable: image.longhorn.manager.repository - default: longhornio/longhorn-manager - description: "Specify Longhorn Manager Image Repository" - type: string - label: Longhorn Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.manager.tag - default: v1.0.2 - description: "Specify Longhorn Manager Image Tag" - type: string - label: Longhorn Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.repository - default: longhornio/longhorn-engine - description: "Specify Longhorn Engine Image Repository" - type: string - label: Longhorn Engine Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.tag - default: v1.0.2 - description: "Specify Longhorn Engine Image Tag" - type: string - label: Longhorn Engine Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.repository - default: longhornio/longhorn-ui - description: "Specify Longhorn UI Image Repository" - type: string - label: Longhorn UI Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.tag - default: v1.0.2 - description: "Specify Longhorn UI Image Tag" - type: string - label: Longhorn UI Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.repository - default: longhornio/longhorn-instance-manager - description: "Specify Longhorn Instance Manager Image Repository" - type: string - label: Longhorn Instance Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.tag - default: v1_20200514 - description: "Specify Longhorn Instance Manager Image Tag" - type: string - label: Longhorn Instance Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.csi.attacher.repository - default: longhornio/csi-attacher - description: "Specify CSI attacher image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.attacher.tag - default: v2.0.0 - description: "Specify CSI attacher image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.repository - default: longhornio/csi-provisioner - description: "Specify CSI provisioner image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.tag - default: v1.4.0 - description: "Specify CSI provisioner image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.repository - default: longhornio/csi-node-driver-registrar - description: "Specify CSI Node Driver Registrar image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.tag - default: v1.2.0 - description: "Specify CSI Node Driver Registrar image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.repository - default: longhornio/csi-resizer - description: "Specify CSI Driver Resizer image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.tag - default: v0.3.0 - description: "Specify CSI Driver Resizer image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Tag - group: "Longhorn CSI Driver Images" -- variable: privateRegistry.registryUrl - label: Private registry URL - description: "URL of private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryUser - label: Private registry user - description: "User used to authenticate to private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryPasswd - label: Private registry password - description: "Password used to authenticate to private registry" - group: "Private Registry Settings" - type: password - default: "" -- variable: longhorn.default_setting - default: "false" - description: "Customize the default settings before installing Longhorn for the first time. This option will only work if the cluster hasn't installed Longhorn." - label: "Customize Default Settings" - type: boolean - show_subquestion_if: true - group: "Longhorn Default Settings" - subquestions: - - variable: defaultSettings.registrySecret - label: Private registry secret - description: "The Kubernetes Secret name" - group: "Longhorn Default Settings" - type: string - default: "" - - variable: csi.kubeletRootDir - default: - description: "Specify kubelet root-dir. Leave blank to autodetect." - type: string - label: Kubelet Root Directory - group: "Longhorn CSI Driver Settings" - - variable: csi.attacherReplicaCount - type: int - default: - min: 1 - max: 10 - description: "Specify replica count of CSI Attacher. By default 3." - label: Longhorn CSI Attacher replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.provisionerReplicaCount - type: int - default: - min: 1 - max: 10 - description: "Specify replica count of CSI Provisioner. By default 3." - label: Longhorn CSI Provisioner replica count - group: "Longhorn CSI Driver Settings" - - variable: persistence.defaultClass - default: "true" - description: "Set as default StorageClass" - group: "Longhorn CSI Driver Settings" - type: boolean - required: true - label: Default Storage Class - - variable: persistence.defaultClassReplicaCount - description: "Set replica count for default StorageClass" - group: "Longhorn CSI Driver Settings" - type: int - default: 3 - min: 1 - max: 10 - label: Default Storage Class Replica Count - - variable: defaultSettings.backupTarget - label: Backup Target - description: "The endpoint used to access the backupstore. NFS and S3 are supported." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.backupTargetCredentialSecret - label: Backup Target Credential Secret - description: "The name of the Kubernetes secret associated with the backup target." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.createDefaultDiskLabeledNodes - label: Create Default Disk on Labeled Nodes - description: 'Create default Disk automatically only on Nodes with the label "node.longhorn.io/create-default-disk=true" if no other disks exist. If disabled, the default disk will be created on all new nodes when each node is first added.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.defaultDataPath - label: Default Data Path - description: 'Default path to use for storing data on a host. By default "/var/lib/longhorn/"' - group: "Longhorn Default Settings" - type: string - default: "/var/lib/longhorn/" - - variable: defaultSettings.replicaSoftAntiAffinity - label: Replica Node Level Soft Anti-Affinity - description: 'Allow scheduling on nodes with existing healthy replicas of the same volume. By default false.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.storageOverProvisioningPercentage - label: Storage Over Provisioning Percentage - description: "The over-provisioning percentage defines how much storage can be allocated relative to the hard drive's capacity. By default 200." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 200 - - variable: defaultSettings.storageMinimalAvailablePercentage - label: Storage Minimal Available Percentage - description: "If the minimum available disk capacity exceeds the actual percentage of available disk capacity, the disk becomes unschedulable until more space is freed up. By default 25." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 100 - default: 25 - - variable: defaultSettings.upgradeChecker - label: Enable Upgrade Checker - description: 'Upgrade Checker will check for new Longhorn version periodically. When there is a new version available, a notification will appear in the UI. By default true.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.defaultReplicaCount - label: Default Replica Count - description: "The default number of replicas when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `numberOfReplicas` in the StorageClass. By default 3." - group: "Longhorn Default Settings" - type: int - min: 1 - max: 20 - default: 3 - - variable: defaultSettings.guaranteedEngineCPU - label: Guaranteed Engine CPU - description: 'Allow Longhorn Instance Managers to have guaranteed CPU allocation. The value is how many CPUs should be reserved for each Engine/Replica Instance Manager Pod created by Longhorn. For example, 0.1 means one-tenth of a CPU. This will help maintain engine stability during high node workload. It only applies to the Engine/Replica Manager Pods created after the setting took effect. -WARNING: After this setting is changed, all the instance managers on all the nodes will be automatically restarted. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES. -By default 0.25.' - group: "Longhorn Default Settings" - type: float - default: 0.25 - - variable: defaultSettings.defaultLonghornStaticStorageClass - label: Default Longhorn Static StorageClass Name - description: "The 'storageClassName' is given to PVs and PVCs that are created for an existing Longhorn volume. The StorageClass name can also be used as a label, so it is possible to use a Longhorn StorageClass to bind a workload to an existing PV without creating a Kubernetes StorageClass object. By default 'longhorn-static'." - group: "Longhorn Default Settings" - type: string - default: "longhorn-static" - - variable: defaultSettings.backupstorePollInterval - label: Backupstore Poll Interval - description: "In seconds. The backupstore poll interval determines how often Longhorn checks the backupstore for new backups. Set to 0 to disable the polling. By default 300." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 300 - - variable: defaultSettings.taintToleration - label: Kubernetes Taint Toleration - description: 'To dedicate nodes to store Longhorn replicas and reject other general workloads, set tolerations for Longhorn and add taints for the storage nodes. All Longhorn volumes should be detached before modifying toleration settings. We recommend setting tolerations during Longhorn deployment because the Longhorn system cannot be operated during the update. Multiple tolerations can be set here, and these tolerations are separated by semicolon. For example, `key1=value1:NoSchedule; key2:NoExecute`. Because `kubernetes.io` is used as the key of all Kubernetes default tolerations, it should not be used in the toleration settings. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES.' - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.priorityClass - label: Priority Class - description: "The name of the Priority Class to set on the Longhorn workloads. This can help prevent Longhorn workloads from being evicted under Node Pressure. WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.autoSalvage - label: Automatic salvage - description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.disableSchedulingOnCordonedNode - label: Disable Scheduling On Cordoned Node - description: "Disable Longhorn manager to schedule replica on Kubernetes cordoned node. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.replicaZoneSoftAntiAffinity - label: Replica Zone Level Soft Anti-Affinity - description: "Allow scheduling new Replicas of Volume to the Nodes in the same Zone as existing healthy Replicas. Nodes don't belong to any Zone will be treated as in the same Zone. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.volumeAttachmentRecoveryPolicy - label: Volume Attachment Recovery Policy - description: "Defines the Longhorn action when a Volume is stuck with a Deployment Pod on a failed node. `wait` leads to the deletion of the volume attachment as soon as the pods deletion time has passed. `never` is the default Kubernetes behavior of never deleting volume attachments on terminating pods. `immediate` leads to the deletion of the volume attachment as soon as all workload pods are pending. By default wait." - group: "Longhorn Default Settings" - type: enum - options: - - "wait" - - "never" - - "immediate" - default: "wait" - - variable: defaultSettings.mkfsExt4Parameters - label: Custom mkfs.ext4 parameters - description: "Allows setting additional filesystem creation parameters for ext4. For older host kernels it might be necessary to disable the optional ext4 metadata_csum feature by specifying `-O ^64bit,^metadata_csum`." - group: "Longhorn Default Settings" - type: string -- variable: ingress.enabled - default: "false" - description: "Expose app using Layer 7 Load Balancer - ingress" - type: boolean - group: "Services and Load Balancing" - label: Expose app using Layer 7 Load Balancer - show_subquestion_if: true - subquestions: - - variable: ingress.host - default: "xip.io" - description: "layer 7 Load Balancer hostname" - type: hostname - required: true - label: Layer 7 Load Balancer Hostname -- variable: service.ui.type - default: "Rancher-Proxy" - description: "Define Longhorn UI service type" - type: enum - options: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - - "Rancher-Proxy" - label: Longhorn UI Service - show_if: "ingress.enabled=false" - group: "Services and Load Balancing" - show_subquestion_if: "NodePort" - subquestions: - - variable: service.ui.nodePort - default: "" - description: "NodePort port number(to set explicitly, choose port between 30000-32767)" - type: int - min: 30000 - max: 32767 - show_if: "service.ui.type=NodePort||service.ui.type=LoadBalancer" - label: UI Service NodePort number -- variable: enablePSP - default: "true" - description: "Setup a pod security policy for Longhorn workloads." - label: Pod Security Policy - type: boolean - group: "Other Settings" \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.0.200/templates/NOTES.txt b/charts/longhorn/longhorn/1.0.200/templates/NOTES.txt deleted file mode 100755 index cca7cd77b..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Longhorn is now installed on the cluster! - -Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. - -Visit our documentation at https://longhorn.io/docs/ diff --git a/charts/longhorn/longhorn/1.0.200/templates/_helpers.tpl b/charts/longhorn/longhorn/1.0.200/templates/_helpers.tpl deleted file mode 100755 index 5cac51cfa..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/_helpers.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "longhorn.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "longhorn.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "longhorn.managerIP" -}} -{{- $fullname := (include "longhorn.fullname" .) -}} -{{- printf "http://%s-backend:9500" $fullname | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "secret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.privateRegistry.registryUrl (printf "%s:%s" .Values.privateRegistry.registryUser .Values.privateRegistry.registryPasswd | b64enc) | b64enc }} -{{- end }} - -{{- /* -longhorn.labels generates the standard Helm labels. -*/ -}} -{{- define "longhorn.labels" -}} -app.kubernetes.io/name: {{ template "longhorn.name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- end -}} - - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/longhorn/longhorn/1.0.200/templates/clusterrole.yaml b/charts/longhorn/longhorn/1.0.200/templates/clusterrole.yaml deleted file mode 100755 index 491c3e6a5..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/clusterrole.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: longhorn-role - labels: {{- include "longhorn.labels" . | nindent 4 }} -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps"] - verbs: ["*"] -- apiGroups: [""] - resources: ["namespaces"] - verbs: ["get", "list"] -- apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] -- apiGroups: ["batch"] - resources: ["jobs", "cronjobs"] - verbs: ["*"] -- apiGroups: ["scheduling.k8s.io"] - resources: ["priorityclasses"] - verbs: ["watch", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] diff --git a/charts/longhorn/longhorn/1.0.200/templates/clusterrolebinding.yaml b/charts/longhorn/longhorn/1.0.200/templates/clusterrolebinding.yaml deleted file mode 100755 index 30c7fa78c..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: longhorn-bind - labels: {{- include "longhorn.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: longhorn-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ .Release.Namespace }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/daemonset-sa.yaml b/charts/longhorn/longhorn/1.0.200/templates/daemonset-sa.yaml deleted file mode 100755 index 1717aa4d9..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/daemonset-sa.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-manager - namespace: {{ .Release.Namespace }} -spec: - selector: - matchLabels: - app: longhorn-manager - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-manager - spec: - containers: - - name: longhorn-manager - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.engine.repository }}:{{ .Values.image.longhorn.engine.tag }}" - - --instance-manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.instanceManager.repository }}:{{ .Values.image.longhorn.instanceManager.tag }}" - - --manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --service-account - - longhorn-service-account - ports: - - containerPort: 9500 - name: manager - readinessProbe: - tcpSocket: - port: 9500 - volumeMounts: - - name: dev - mountPath: /host/dev/ - - name: proc - mountPath: /host/proc/ - - name: varrun - mountPath: /var/run/ - mountPropagation: Bidirectional - - name: longhorn - mountPath: /var/lib/longhorn/ - mountPropagation: Bidirectional - - name: longhorn-default-setting - mountPath: /var/lib/longhorn-setting/ - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: DEFAULT_SETTING_PATH - value: /var/lib/longhorn-setting/default-setting.yaml - volumes: - - name: dev - hostPath: - path: /dev/ - - name: proc - hostPath: - path: /proc/ - - name: varrun - hostPath: - path: /var/run/ - - name: longhorn - hostPath: - path: /var/lib/longhorn/ - - name: longhorn-default-setting - configMap: - name: longhorn-default-setting - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-backend - namespace: {{ .Release.Namespace }} -spec: - type: {{ .Values.service.manager.type }} - sessionAffinity: ClientIP - selector: - app: longhorn-manager - ports: - - name: manager - port: 9500 - targetPort: manager - {{- if .Values.service.manager.nodePort }} - nodePort: {{ .Values.service.manager.nodePort }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/default-setting.yaml b/charts/longhorn/longhorn/1.0.200/templates/default-setting.yaml deleted file mode 100755 index 2eb10b4dc..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/default-setting.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-default-setting - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - default-setting.yaml: |- - backup-target: {{ .Values.defaultSettings.backupTarget }} - backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} - create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} - default-data-path: {{ .Values.defaultSettings.defaultDataPath }} - replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} - storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} - storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} - upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} - default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} - guaranteed-engine-cpu: {{ .Values.defaultSettings.guaranteedEngineCPU }} - default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} - backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} - taint-toleration: {{ .Values.defaultSettings.taintToleration }} - priority-class: {{ .Values.defaultSettings.priorityClass }} - registry-secret: {{ .Values.defaultSettings.registrySecret }} - auto-salvage: {{ .Values.defaultSettings.autoSalvage }} - disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} - replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} - volume-attachment-recovery-policy: {{ .Values.defaultSettings.volumeAttachmentRecoveryPolicy }} - mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/deployment-driver.yaml b/charts/longhorn/longhorn/1.0.200/templates/deployment-driver.yaml deleted file mode 100755 index bee055d8e..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/deployment-driver.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: longhorn-driver-deployer - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-driver-deployer - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-driver-deployer - spec: - initContainers: - - name: wait-longhorn-manager - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] - containers: - - name: longhorn-driver-deployer - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --manager-url - - http://longhorn-backend:9500/v1 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - {{- if .Values.csi.kubeletRootDir }} - - name: KUBELET_ROOT_DIR - value: {{ .Values.csi.kubeletRootDir }} - {{- end }} - {{- if and .Values.image.csi.attacher.repository .Values.image.csi.attacher.tag }} - - name: CSI_ATTACHER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.attacher.repository }}:{{ .Values.image.csi.attacher.tag }}" - {{- end }} - {{- if and .Values.image.csi.provisioner.repository .Values.image.csi.provisioner.tag }} - - name: CSI_PROVISIONER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.provisioner.repository }}:{{ .Values.image.csi.provisioner.tag }}" - {{- end }} - {{- if and .Values.image.csi.nodeDriverRegistrar.repository .Values.image.csi.nodeDriverRegistrar.tag }} - - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.nodeDriverRegistrar.repository }}:{{ .Values.image.csi.nodeDriverRegistrar.tag }}" - {{- end }} - {{- if and .Values.image.csi.resizer.repository .Values.image.csi.resizer.tag }} - - name: CSI_RESIZER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.resizer.repository }}:{{ .Values.image.csi.resizer.tag }}" - {{- end }} - {{- if .Values.csi.attacherReplicaCount }} - - name: CSI_ATTACHER_REPLICA_COUNT - value: {{ .Values.csi.attacherReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.provisionerReplicaCount }} - - name: CSI_PROVISIONER_REPLICA_COUNT - value: {{ .Values.csi.provisionerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.resizerReplicaCount }} - - name: CSI_RESIZER_REPLICA_COUNT - value: {{ .Values.csi.resizerReplicaCount | quote }} - {{- end }} - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/charts/longhorn/longhorn/1.0.200/templates/deployment-ui.yaml b/charts/longhorn/longhorn/1.0.200/templates/deployment-ui.yaml deleted file mode 100755 index 0de0c9b3b..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/deployment-ui.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - name: longhorn-ui - namespace: {{ .Release.Namespace }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-ui - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-ui - spec: - containers: - - name: longhorn-ui - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} ---- -kind: Service -apiVersion: v1 -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - kubernetes.io/cluster-service: "true" - {{- end }} - name: longhorn-frontend - namespace: {{ .Release.Namespace }} -spec: - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - type: ClusterIP - {{- else }} - type: {{ .Values.service.ui.type }} - {{- end }} - selector: - app: longhorn-ui - ports: - - name: http - port: 80 - targetPort: http - {{- if .Values.service.ui.nodePort }} - nodePort: {{ .Values.service.ui.nodePort }} - {{- else }} - nodePort: null - {{- end }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/ingress.yaml b/charts/longhorn/longhorn/1.0.200/templates/ingress.yaml deleted file mode 100755 index e3e9e3eea..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/ingress.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: longhorn-ingress - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ingress - annotations: - {{- if .Values.ingress.tls }} - ingress.kubernetes.io/secure-backends: "true" - {{- end }} - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - - host: {{ .Values.ingress.host }} - http: - paths: - - path: {{ default "" .Values.ingress.path }} - backend: - serviceName: longhorn-frontend - servicePort: 80 -{{- if .Values.ingress.tls }} - tls: - - hosts: - - {{ .Values.ingress.host }} - secretName: {{ .Values.ingress.tlsSecret }} -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/postupgrade-job.yaml b/charts/longhorn/longhorn/1.0.200/templates/postupgrade-job.yaml deleted file mode 100755 index 1860be5fe..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/postupgrade-job.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation - name: longhorn-post-upgrade - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-post-upgrade - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-post-upgrade - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: Always - command: - - longhorn-manager - - post-upgrade - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.0.200/templates/psp.yaml b/charts/longhorn/longhorn/1.0.200/templates/psp.yaml deleted file mode 100755 index 66479b4fa..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.enablePSP }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: longhorn-psp - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - privileged: true - allowPrivilegeEscalation: true - requiredDropCapabilities: - - NET_RAW - allowedCapabilities: - - SYS_ADMIN - hostNetwork: false - hostIPC: false - hostPID: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - fsGroup: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - secret - - projected - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: longhorn-psp-role - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - longhorn-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: longhorn-psp-binding - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: longhorn-psp-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ .Release.Namespace }} -- kind: ServiceAccount - name: default - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.0.200/templates/registry-secret.yml b/charts/longhorn/longhorn/1.0.200/templates/registry-secret.yml deleted file mode 100755 index eeb9a8f4a..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/registry-secret.yml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.defaultSettings.registrySecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Values.defaultSettings.registrySecret }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "secret" . }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/serviceaccount.yaml b/charts/longhorn/longhorn/1.0.200/templates/serviceaccount.yaml deleted file mode 100755 index a2280b44f..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/storageclass.yaml b/charts/longhorn/longhorn/1.0.200/templates/storageclass.yaml deleted file mode 100755 index 3fee340f4..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/storageclass.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: longhorn - annotations: - storageclass.kubernetes.io/is-default-class: {{ .Values.persistence.defaultClass | quote }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -provisioner: driver.longhorn.io -allowVolumeExpansion: true -parameters: - numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}" - staleReplicaTimeout: "30" - fromBackup: "" - baseImage: "" diff --git a/charts/longhorn/longhorn/1.0.200/templates/tls-secrets.yaml b/charts/longhorn/longhorn/1.0.200/templates/tls-secrets.yaml deleted file mode 100755 index 7a75df09c..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/tls-secrets.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: longhorn - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.200/templates/uninstall-job.yaml b/charts/longhorn/longhorn/1.0.200/templates/uninstall-job.yaml deleted file mode 100755 index d32157145..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/uninstall-job.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - name: longhorn-uninstall - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-uninstall - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-uninstall - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: Always - command: - - longhorn-manager - - uninstall - - --force - env: - - name: LONGHORN_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.0.200/templates/userroles.yaml b/charts/longhorn/longhorn/1.0.200/templates/userroles.yaml deleted file mode 100755 index ba6d40643..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-edit" - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-view" - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "get", "list", "watch" ] diff --git a/charts/longhorn/longhorn/1.0.200/templates/validate-install-crd.yaml b/charts/longhorn/longhorn/1.0.200/templates/validate-install-crd.yaml deleted file mode 100755 index 4899b977c..000000000 --- a/charts/longhorn/longhorn/1.0.200/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "longhorn.io/v1beta1/Engine" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the longhorn-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/longhorn/longhorn/1.0.200/values.yaml b/charts/longhorn/longhorn/1.0.200/values.yaml deleted file mode 100755 index a29b9497d..000000000 --- a/charts/longhorn/longhorn/1.0.200/values.yaml +++ /dev/null @@ -1,136 +0,0 @@ -# Default values for longhorn. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -global: - cattle: - systemDefaultRegistry: "" - -image: - longhorn: - engine: - repository: rancher/longhornio-longhorn-engine - tag: v1.0.2 - manager: - repository: rancher/longhornio-longhorn-manager - tag: v1.0.2 - ui: - repository: rancher/longhornio-longhorn-ui - tag: v1.0.2 - instanceManager: - repository: rancher/longhornio-longhorn-instance-manager - tag: v1_20200514 - csi: - attacher: - repository: rancher/longhornio-csi-attacher - tag: v2.0.0 - provisioner: - repository: rancher/longhornio-csi-provisioner - tag: v1.4.0 - nodeDriverRegistrar: - repository: rancher/longhornio-csi-node-driver-registrar - tag: v1.2.0 - resizer: - repository: rancher/longhornio-csi-resizer - tag: v0.3.0 - pullPolicy: IfNotPresent - -service: - ui: - type: ClusterIP - nodePort: null - manager: - type: ClusterIP - nodePort: "" - -persistence: - defaultClass: true - defaultClassReplicaCount: 3 - -csi: - kubeletRootDir: ~ - attacherReplicaCount: ~ - provisionerReplicaCount: ~ - resizerReplicaCount: ~ - -defaultSettings: - backupTarget: ~ - backupTargetCredentialSecret: ~ - createDefaultDiskLabeledNodes: ~ - defaultDataPath: ~ - replicaSoftAntiAffinity: ~ - storageOverProvisioningPercentage: ~ - storageMinimalAvailablePercentage: ~ - upgradeChecker: ~ - defaultReplicaCount: ~ - guaranteedEngineCPU: ~ - defaultLonghornStaticStorageClass: ~ - backupstorePollInterval: ~ - taintToleration: ~ - priorityClass: ~ - registrySecret: ~ - autoSalvage: ~ - disableSchedulingOnCordonedNode: ~ - replicaZoneSoftAntiAffinity: ~ - volumeAttachmentRecoveryPolicy: ~ - mkfsExt4Parameters: ~ - -privateRegistry: - registryUrl: ~ - registryUser: ~ - registryPasswd: ~ - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - # - -ingress: - ## Set to true to enable ingress record generation - enabled: false - - - host: xip.io - - ## Set this to true in order to enable TLS on the ingress record - ## A side effect of this will be that the backend service will be connected at port 443 - tls: false - - ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS - tlsSecret: longhorn.local-tls - - ## Ingress annotations done as key:value pairs - ## If you're using kube-lego, you will want to add: - ## kubernetes.io/tls-acme: true - ## - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md - ## - ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set - annotations: - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: true - - secrets: - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using kube-lego, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - # - name: longhorn.local-tls - # key: - # certificate: - -# Configure a pod security policy in the Longhorn namespace to allow privileged pods -enablePSP: true diff --git a/charts/longhorn/longhorn/1.0.201/.helmignore b/charts/longhorn/longhorn/1.0.201/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/longhorn/longhorn/1.0.201/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/longhorn/longhorn/1.0.201/Chart.yaml b/charts/longhorn/longhorn/1.0.201/Chart.yaml deleted file mode 100755 index 7cf478dd8..000000000 --- a/charts/longhorn/longhorn/1.0.201/Chart.yaml +++ /dev/null @@ -1,36 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: longhorn-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Longhorn - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/provides-gvr: longhorn.io/v1beta1 - catalog.cattle.io/release-name: longhorn - catalog.cattle.io/ui-component: longhorn - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.2 -description: Longhorn is a distributed block storage system for Kubernetes. -home: https://github.com/longhorn/longhorn -icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/longhorn/icon/color/longhorn-icon-color.svg -keywords: -- longhorn -- storage -- distributed -- block -- device -- iscsi -kubeVersion: '>=v1.14.0-r0' -maintainers: -- email: maintainers@longhorn.io - name: Longhorn maintainers -- email: sheng@yasker.org - name: Sheng Yang -name: longhorn -sources: -- https://github.com/longhorn/longhorn -- https://github.com/longhorn/longhorn-engine -- https://github.com/longhorn/longhorn-instance-manager -- https://github.com/longhorn/longhorn-manager -- https://github.com/longhorn/longhorn-ui -- https://github.com/longhorn/longhorn-tests -version: 1.0.201 diff --git a/charts/longhorn/longhorn/1.0.201/README.md b/charts/longhorn/longhorn/1.0.201/README.md deleted file mode 100755 index 068bb5d66..000000000 --- a/charts/longhorn/longhorn/1.0.201/README.md +++ /dev/null @@ -1,49 +0,0 @@ -# Rancher Longhorn Chart - -> **Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -> **Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -The following document pertains to running Longhorn from the Rancher 2.0 chart. - -## Source Code - -Longhorn is 100% open source software. Project source code is spread across a number of repos: - -1. Longhorn Engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine -2. Longhorn Instance Manager -- Controller/replica instance lifecycle management https://github.com/longhorn/longhorn-instance-manager -3. Longhorn Manager -- Longhorn orchestration, includes CSI driver for Kubernetes https://github.com/longhorn/longhorn-manager -4. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui - -## Prerequisites - -1. Rancher v2.1+ -2. Docker v1.13+ -3. Kubernetes v1.14+ -4. Make sure `curl`, `findmnt`, `grep`, `awk` and `blkid` has been installed in all nodes of the Kubernetes cluster. -5. Make sure `open-iscsi` has been installed in all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it contains `open-iscsi` already. - -## Uninstallation - -1. To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc). - -2. From Rancher UI, navigate to `Catalog Apps` tab and delete Longhorn app. - -## Troubleshooting - -### I deleted the Longhorn App from Rancher UI instead of following the uninstallation procedure - -Redeploy the (same version) Longhorn App. Follow the uninstallation procedure above. - -### Problems with CRDs - -If your CRD instances or the CRDs themselves can't be deleted for whatever reason, run the commands below to clean up. Caution: this will wipe all Longhorn state! - -``` -# Delete CRD instances and definitions -curl -s https://raw.githubusercontent.com/longhorn/longhorn/v0.8.1/scripts/cleanup.sh |bash -s v062 -curl -s https://raw.githubusercontent.com/longhorn/longhorn/v0.8.1/scripts/cleanup.sh |bash -s v070 -``` - ---- -Please see [link](https://github.com/longhorn/longhorn) for more information. diff --git a/charts/longhorn/longhorn/1.0.201/app-readme.md b/charts/longhorn/longhorn/1.0.201/app-readme.md deleted file mode 100755 index cb23135ca..000000000 --- a/charts/longhorn/longhorn/1.0.201/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Longhorn - -Longhorn is a lightweight, reliable and easy to use distributed block storage system for Kubernetes. Once deployed, users can leverage persistent volumes provided by Longhorn. - -Longhorn creates a dedicated storage controller for each volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Longhorn supports snapshots, backups and even allows you to schedule recurring snapshots and backups! - -**Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -**Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -[Chart Documentation](https://github.com/longhorn/longhorn/blob/master/chart/README.md) diff --git a/charts/longhorn/longhorn/1.0.201/questions.yml b/charts/longhorn/longhorn/1.0.201/questions.yml deleted file mode 100755 index 26566901f..000000000 --- a/charts/longhorn/longhorn/1.0.201/questions.yml +++ /dev/null @@ -1,346 +0,0 @@ -categories: -- storage -namespace: longhorn-system -questions: -- variable: image.defaultImage - default: "true" - description: "Use default Longhorn images" - label: Use Default Images - type: boolean - show_subquestion_if: false - group: "Longhorn Images" - subquestions: - - variable: image.longhorn.manager.repository - default: longhornio/longhorn-manager - description: "Specify Longhorn Manager Image Repository" - type: string - label: Longhorn Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.manager.tag - default: v1.0.2 - description: "Specify Longhorn Manager Image Tag" - type: string - label: Longhorn Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.repository - default: longhornio/longhorn-engine - description: "Specify Longhorn Engine Image Repository" - type: string - label: Longhorn Engine Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.tag - default: v1.0.2 - description: "Specify Longhorn Engine Image Tag" - type: string - label: Longhorn Engine Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.repository - default: longhornio/longhorn-ui - description: "Specify Longhorn UI Image Repository" - type: string - label: Longhorn UI Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.tag - default: v1.0.2 - description: "Specify Longhorn UI Image Tag" - type: string - label: Longhorn UI Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.repository - default: longhornio/longhorn-instance-manager - description: "Specify Longhorn Instance Manager Image Repository" - type: string - label: Longhorn Instance Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.tag - default: v1_20200514 - description: "Specify Longhorn Instance Manager Image Tag" - type: string - label: Longhorn Instance Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.csi.attacher.repository - default: longhornio/csi-attacher - description: "Specify CSI attacher image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.attacher.tag - default: v2.0.0 - description: "Specify CSI attacher image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.repository - default: longhornio/csi-provisioner - description: "Specify CSI provisioner image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.tag - default: v1.4.0 - description: "Specify CSI provisioner image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.repository - default: longhornio/csi-node-driver-registrar - description: "Specify CSI Node Driver Registrar image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.tag - default: v1.2.0 - description: "Specify CSI Node Driver Registrar image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.repository - default: longhornio/csi-resizer - description: "Specify CSI Driver Resizer image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.tag - default: v0.3.0 - description: "Specify CSI Driver Resizer image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Tag - group: "Longhorn CSI Driver Images" -- variable: privateRegistry.registryUrl - label: Private registry URL - description: "URL of private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryUser - label: Private registry user - description: "User used to authenticate to private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryPasswd - label: Private registry password - description: "Password used to authenticate to private registry" - group: "Private Registry Settings" - type: password - default: "" -- variable: longhorn.default_setting - default: "false" - description: "Customize the default settings before installing Longhorn for the first time. This option will only work if the cluster hasn't installed Longhorn." - label: "Customize Default Settings" - type: boolean - show_subquestion_if: true - group: "Longhorn Default Settings" - subquestions: - - variable: defaultSettings.registrySecret - label: Private registry secret - description: "The Kubernetes Secret name" - group: "Longhorn Default Settings" - type: string - default: "" - - variable: csi.kubeletRootDir - default: - description: "Specify kubelet root-dir. Leave blank to autodetect." - type: string - label: Kubelet Root Directory - group: "Longhorn CSI Driver Settings" - - variable: csi.attacherReplicaCount - type: int - default: - min: 1 - max: 10 - description: "Specify replica count of CSI Attacher. By default 3." - label: Longhorn CSI Attacher replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.provisionerReplicaCount - type: int - default: - min: 1 - max: 10 - description: "Specify replica count of CSI Provisioner. By default 3." - label: Longhorn CSI Provisioner replica count - group: "Longhorn CSI Driver Settings" - - variable: persistence.defaultClass - default: "true" - description: "Set as default StorageClass" - group: "Longhorn CSI Driver Settings" - type: boolean - required: true - label: Default Storage Class - - variable: persistence.defaultClassReplicaCount - description: "Set replica count for default StorageClass" - group: "Longhorn CSI Driver Settings" - type: int - default: 3 - min: 1 - max: 10 - label: Default Storage Class Replica Count - - variable: defaultSettings.backupTarget - label: Backup Target - description: "The endpoint used to access the backupstore. NFS and S3 are supported." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.backupTargetCredentialSecret - label: Backup Target Credential Secret - description: "The name of the Kubernetes secret associated with the backup target." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.createDefaultDiskLabeledNodes - label: Create Default Disk on Labeled Nodes - description: 'Create default Disk automatically only on Nodes with the label "node.longhorn.io/create-default-disk=true" if no other disks exist. If disabled, the default disk will be created on all new nodes when each node is first added.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.defaultDataPath - label: Default Data Path - description: 'Default path to use for storing data on a host. By default "/var/lib/longhorn/"' - group: "Longhorn Default Settings" - type: string - default: "/var/lib/longhorn/" - - variable: defaultSettings.replicaSoftAntiAffinity - label: Replica Node Level Soft Anti-Affinity - description: 'Allow scheduling on nodes with existing healthy replicas of the same volume. By default false.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.storageOverProvisioningPercentage - label: Storage Over Provisioning Percentage - description: "The over-provisioning percentage defines how much storage can be allocated relative to the hard drive's capacity. By default 200." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 200 - - variable: defaultSettings.storageMinimalAvailablePercentage - label: Storage Minimal Available Percentage - description: "If the minimum available disk capacity exceeds the actual percentage of available disk capacity, the disk becomes unschedulable until more space is freed up. By default 25." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 100 - default: 25 - - variable: defaultSettings.upgradeChecker - label: Enable Upgrade Checker - description: 'Upgrade Checker will check for new Longhorn version periodically. When there is a new version available, a notification will appear in the UI. By default true.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.defaultReplicaCount - label: Default Replica Count - description: "The default number of replicas when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `numberOfReplicas` in the StorageClass. By default 3." - group: "Longhorn Default Settings" - type: int - min: 1 - max: 20 - default: 3 - - variable: defaultSettings.guaranteedEngineCPU - label: Guaranteed Engine CPU - description: 'Allow Longhorn Instance Managers to have guaranteed CPU allocation. The value is how many CPUs should be reserved for each Engine/Replica Instance Manager Pod created by Longhorn. For example, 0.1 means one-tenth of a CPU. This will help maintain engine stability during high node workload. It only applies to the Engine/Replica Manager Pods created after the setting took effect. -WARNING: After this setting is changed, all the instance managers on all the nodes will be automatically restarted. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES. -By default 0.25.' - group: "Longhorn Default Settings" - type: float - default: 0.25 - - variable: defaultSettings.defaultLonghornStaticStorageClass - label: Default Longhorn Static StorageClass Name - description: "The 'storageClassName' is given to PVs and PVCs that are created for an existing Longhorn volume. The StorageClass name can also be used as a label, so it is possible to use a Longhorn StorageClass to bind a workload to an existing PV without creating a Kubernetes StorageClass object. By default 'longhorn-static'." - group: "Longhorn Default Settings" - type: string - default: "longhorn-static" - - variable: defaultSettings.backupstorePollInterval - label: Backupstore Poll Interval - description: "In seconds. The backupstore poll interval determines how often Longhorn checks the backupstore for new backups. Set to 0 to disable the polling. By default 300." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 300 - - variable: defaultSettings.taintToleration - label: Kubernetes Taint Toleration - description: 'To dedicate nodes to store Longhorn replicas and reject other general workloads, set tolerations for Longhorn and add taints for the storage nodes. All Longhorn volumes should be detached before modifying toleration settings. We recommend setting tolerations during Longhorn deployment because the Longhorn system cannot be operated during the update. Multiple tolerations can be set here, and these tolerations are separated by semicolon. For example, `key1=value1:NoSchedule; key2:NoExecute`. Because `kubernetes.io` is used as the key of all Kubernetes default tolerations, it should not be used in the toleration settings. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES.' - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.priorityClass - label: Priority Class - description: "The name of the Priority Class to set on the Longhorn workloads. This can help prevent Longhorn workloads from being evicted under Node Pressure. WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.autoSalvage - label: Automatic salvage - description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.disableSchedulingOnCordonedNode - label: Disable Scheduling On Cordoned Node - description: "Disable Longhorn manager to schedule replica on Kubernetes cordoned node. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.replicaZoneSoftAntiAffinity - label: Replica Zone Level Soft Anti-Affinity - description: "Allow scheduling new Replicas of Volume to the Nodes in the same Zone as existing healthy Replicas. Nodes don't belong to any Zone will be treated as in the same Zone. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.volumeAttachmentRecoveryPolicy - label: Volume Attachment Recovery Policy - description: "Defines the Longhorn action when a Volume is stuck with a Deployment Pod on a failed node. `wait` leads to the deletion of the volume attachment as soon as the pods deletion time has passed. `never` is the default Kubernetes behavior of never deleting volume attachments on terminating pods. `immediate` leads to the deletion of the volume attachment as soon as all workload pods are pending. By default wait." - group: "Longhorn Default Settings" - type: enum - options: - - "wait" - - "never" - - "immediate" - default: "wait" - - variable: defaultSettings.mkfsExt4Parameters - label: Custom mkfs.ext4 parameters - description: "Allows setting additional filesystem creation parameters for ext4. For older host kernels it might be necessary to disable the optional ext4 metadata_csum feature by specifying `-O ^64bit,^metadata_csum`." - group: "Longhorn Default Settings" - type: string -- variable: ingress.enabled - default: "false" - description: "Expose app using Layer 7 Load Balancer - ingress" - type: boolean - group: "Services and Load Balancing" - label: Expose app using Layer 7 Load Balancer - show_subquestion_if: true - subquestions: - - variable: ingress.host - default: "xip.io" - description: "layer 7 Load Balancer hostname" - type: hostname - required: true - label: Layer 7 Load Balancer Hostname -- variable: service.ui.type - default: "Rancher-Proxy" - description: "Define Longhorn UI service type" - type: enum - options: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - - "Rancher-Proxy" - label: Longhorn UI Service - show_if: "ingress.enabled=false" - group: "Services and Load Balancing" - show_subquestion_if: "NodePort" - subquestions: - - variable: service.ui.nodePort - default: "" - description: "NodePort port number(to set explicitly, choose port between 30000-32767)" - type: int - min: 30000 - max: 32767 - show_if: "service.ui.type=NodePort||service.ui.type=LoadBalancer" - label: UI Service NodePort number -- variable: enablePSP - default: "true" - description: "Setup a pod security policy for Longhorn workloads." - label: Pod Security Policy - type: boolean - group: "Other Settings" \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.0.201/templates/NOTES.txt b/charts/longhorn/longhorn/1.0.201/templates/NOTES.txt deleted file mode 100755 index cca7cd77b..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Longhorn is now installed on the cluster! - -Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. - -Visit our documentation at https://longhorn.io/docs/ diff --git a/charts/longhorn/longhorn/1.0.201/templates/_helpers.tpl b/charts/longhorn/longhorn/1.0.201/templates/_helpers.tpl deleted file mode 100755 index 5cac51cfa..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/_helpers.tpl +++ /dev/null @@ -1,47 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "longhorn.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "longhorn.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "longhorn.managerIP" -}} -{{- $fullname := (include "longhorn.fullname" .) -}} -{{- printf "http://%s-backend:9500" $fullname | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "secret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.privateRegistry.registryUrl (printf "%s:%s" .Values.privateRegistry.registryUser .Values.privateRegistry.registryPasswd | b64enc) | b64enc }} -{{- end }} - -{{- /* -longhorn.labels generates the standard Helm labels. -*/ -}} -{{- define "longhorn.labels" -}} -app.kubernetes.io/name: {{ template "longhorn.name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- end -}} - - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/longhorn/longhorn/1.0.201/templates/clusterrole.yaml b/charts/longhorn/longhorn/1.0.201/templates/clusterrole.yaml deleted file mode 100755 index 491c3e6a5..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/clusterrole.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: longhorn-role - labels: {{- include "longhorn.labels" . | nindent 4 }} -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps"] - verbs: ["*"] -- apiGroups: [""] - resources: ["namespaces"] - verbs: ["get", "list"] -- apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] -- apiGroups: ["batch"] - resources: ["jobs", "cronjobs"] - verbs: ["*"] -- apiGroups: ["scheduling.k8s.io"] - resources: ["priorityclasses"] - verbs: ["watch", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["get", "watch", "list", "delete", "update", "create"] -- apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] diff --git a/charts/longhorn/longhorn/1.0.201/templates/clusterrolebinding.yaml b/charts/longhorn/longhorn/1.0.201/templates/clusterrolebinding.yaml deleted file mode 100755 index 30c7fa78c..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: longhorn-bind - labels: {{- include "longhorn.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: longhorn-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ .Release.Namespace }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/daemonset-sa.yaml b/charts/longhorn/longhorn/1.0.201/templates/daemonset-sa.yaml deleted file mode 100755 index 1717aa4d9..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/daemonset-sa.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-manager - namespace: {{ .Release.Namespace }} -spec: - selector: - matchLabels: - app: longhorn-manager - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-manager - spec: - containers: - - name: longhorn-manager - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.engine.repository }}:{{ .Values.image.longhorn.engine.tag }}" - - --instance-manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.instanceManager.repository }}:{{ .Values.image.longhorn.instanceManager.tag }}" - - --manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --service-account - - longhorn-service-account - ports: - - containerPort: 9500 - name: manager - readinessProbe: - tcpSocket: - port: 9500 - volumeMounts: - - name: dev - mountPath: /host/dev/ - - name: proc - mountPath: /host/proc/ - - name: varrun - mountPath: /var/run/ - mountPropagation: Bidirectional - - name: longhorn - mountPath: /var/lib/longhorn/ - mountPropagation: Bidirectional - - name: longhorn-default-setting - mountPath: /var/lib/longhorn-setting/ - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: DEFAULT_SETTING_PATH - value: /var/lib/longhorn-setting/default-setting.yaml - volumes: - - name: dev - hostPath: - path: /dev/ - - name: proc - hostPath: - path: /proc/ - - name: varrun - hostPath: - path: /var/run/ - - name: longhorn - hostPath: - path: /var/lib/longhorn/ - - name: longhorn-default-setting - configMap: - name: longhorn-default-setting - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-backend - namespace: {{ .Release.Namespace }} -spec: - type: {{ .Values.service.manager.type }} - sessionAffinity: ClientIP - selector: - app: longhorn-manager - ports: - - name: manager - port: 9500 - targetPort: manager - {{- if .Values.service.manager.nodePort }} - nodePort: {{ .Values.service.manager.nodePort }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/default-setting.yaml b/charts/longhorn/longhorn/1.0.201/templates/default-setting.yaml deleted file mode 100755 index 2eb10b4dc..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/default-setting.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-default-setting - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - default-setting.yaml: |- - backup-target: {{ .Values.defaultSettings.backupTarget }} - backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} - create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} - default-data-path: {{ .Values.defaultSettings.defaultDataPath }} - replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} - storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} - storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} - upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} - default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} - guaranteed-engine-cpu: {{ .Values.defaultSettings.guaranteedEngineCPU }} - default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} - backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} - taint-toleration: {{ .Values.defaultSettings.taintToleration }} - priority-class: {{ .Values.defaultSettings.priorityClass }} - registry-secret: {{ .Values.defaultSettings.registrySecret }} - auto-salvage: {{ .Values.defaultSettings.autoSalvage }} - disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} - replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} - volume-attachment-recovery-policy: {{ .Values.defaultSettings.volumeAttachmentRecoveryPolicy }} - mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/deployment-driver.yaml b/charts/longhorn/longhorn/1.0.201/templates/deployment-driver.yaml deleted file mode 100755 index bee055d8e..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/deployment-driver.yaml +++ /dev/null @@ -1,84 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: longhorn-driver-deployer - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-driver-deployer - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-driver-deployer - spec: - initContainers: - - name: wait-longhorn-manager - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] - containers: - - name: longhorn-driver-deployer - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - "{{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --manager-url - - http://longhorn-backend:9500/v1 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - {{- if .Values.csi.kubeletRootDir }} - - name: KUBELET_ROOT_DIR - value: {{ .Values.csi.kubeletRootDir }} - {{- end }} - {{- if and .Values.image.csi.attacher.repository .Values.image.csi.attacher.tag }} - - name: CSI_ATTACHER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.attacher.repository }}:{{ .Values.image.csi.attacher.tag }}" - {{- end }} - {{- if and .Values.image.csi.provisioner.repository .Values.image.csi.provisioner.tag }} - - name: CSI_PROVISIONER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.provisioner.repository }}:{{ .Values.image.csi.provisioner.tag }}" - {{- end }} - {{- if and .Values.image.csi.nodeDriverRegistrar.repository .Values.image.csi.nodeDriverRegistrar.tag }} - - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.nodeDriverRegistrar.repository }}:{{ .Values.image.csi.nodeDriverRegistrar.tag }}" - {{- end }} - {{- if and .Values.image.csi.resizer.repository .Values.image.csi.resizer.tag }} - - name: CSI_RESIZER_IMAGE - value: "{{ template "system_default_registry" . }}{{ .Values.image.csi.resizer.repository }}:{{ .Values.image.csi.resizer.tag }}" - {{- end }} - {{- if .Values.csi.attacherReplicaCount }} - - name: CSI_ATTACHER_REPLICA_COUNT - value: {{ .Values.csi.attacherReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.provisionerReplicaCount }} - - name: CSI_PROVISIONER_REPLICA_COUNT - value: {{ .Values.csi.provisionerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.resizerReplicaCount }} - - name: CSI_RESIZER_REPLICA_COUNT - value: {{ .Values.csi.resizerReplicaCount | quote }} - {{- end }} - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/charts/longhorn/longhorn/1.0.201/templates/deployment-ui.yaml b/charts/longhorn/longhorn/1.0.201/templates/deployment-ui.yaml deleted file mode 100755 index 0de0c9b3b..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/deployment-ui.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - name: longhorn-ui - namespace: {{ .Release.Namespace }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-ui - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-ui - spec: - containers: - - name: longhorn-ui - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} ---- -kind: Service -apiVersion: v1 -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - kubernetes.io/cluster-service: "true" - {{- end }} - name: longhorn-frontend - namespace: {{ .Release.Namespace }} -spec: - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - type: ClusterIP - {{- else }} - type: {{ .Values.service.ui.type }} - {{- end }} - selector: - app: longhorn-ui - ports: - - name: http - port: 80 - targetPort: http - {{- if .Values.service.ui.nodePort }} - nodePort: {{ .Values.service.ui.nodePort }} - {{- else }} - nodePort: null - {{- end }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/ingress.yaml b/charts/longhorn/longhorn/1.0.201/templates/ingress.yaml deleted file mode 100755 index e3e9e3eea..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/ingress.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: longhorn-ingress - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ingress - annotations: - {{- if .Values.ingress.tls }} - ingress.kubernetes.io/secure-backends: "true" - {{- end }} - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - - host: {{ .Values.ingress.host }} - http: - paths: - - path: {{ default "" .Values.ingress.path }} - backend: - serviceName: longhorn-frontend - servicePort: 80 -{{- if .Values.ingress.tls }} - tls: - - hosts: - - {{ .Values.ingress.host }} - secretName: {{ .Values.ingress.tlsSecret }} -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/postupgrade-job.yaml b/charts/longhorn/longhorn/1.0.201/templates/postupgrade-job.yaml deleted file mode 100755 index 1860be5fe..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/postupgrade-job.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation - name: longhorn-post-upgrade - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-post-upgrade - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-post-upgrade - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: Always - command: - - longhorn-manager - - post-upgrade - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.0.201/templates/psp.yaml b/charts/longhorn/longhorn/1.0.201/templates/psp.yaml deleted file mode 100755 index 66479b4fa..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.enablePSP }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: longhorn-psp - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - privileged: true - allowPrivilegeEscalation: true - requiredDropCapabilities: - - NET_RAW - allowedCapabilities: - - SYS_ADMIN - hostNetwork: false - hostIPC: false - hostPID: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - fsGroup: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - secret - - projected - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: longhorn-psp-role - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - longhorn-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: longhorn-psp-binding - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: longhorn-psp-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ .Release.Namespace }} -- kind: ServiceAccount - name: default - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.0.201/templates/registry-secret.yml b/charts/longhorn/longhorn/1.0.201/templates/registry-secret.yml deleted file mode 100755 index eeb9a8f4a..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/registry-secret.yml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.defaultSettings.registrySecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Values.defaultSettings.registrySecret }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "secret" . }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/serviceaccount.yaml b/charts/longhorn/longhorn/1.0.201/templates/serviceaccount.yaml deleted file mode 100755 index a2280b44f..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/storageclass.yaml b/charts/longhorn/longhorn/1.0.201/templates/storageclass.yaml deleted file mode 100755 index 3fee340f4..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/storageclass.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: StorageClass -apiVersion: storage.k8s.io/v1 -metadata: - name: longhorn - annotations: - storageclass.kubernetes.io/is-default-class: {{ .Values.persistence.defaultClass | quote }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -provisioner: driver.longhorn.io -allowVolumeExpansion: true -parameters: - numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}" - staleReplicaTimeout: "30" - fromBackup: "" - baseImage: "" diff --git a/charts/longhorn/longhorn/1.0.201/templates/tls-secrets.yaml b/charts/longhorn/longhorn/1.0.201/templates/tls-secrets.yaml deleted file mode 100755 index 7a75df09c..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/tls-secrets.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: longhorn - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.0.201/templates/uninstall-job.yaml b/charts/longhorn/longhorn/1.0.201/templates/uninstall-job.yaml deleted file mode 100755 index d32157145..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/uninstall-job.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - name: longhorn-uninstall - namespace: {{ .Release.Namespace }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-uninstall - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-uninstall - image: {{ template "system_default_registry" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: Always - command: - - longhorn-manager - - uninstall - - --force - env: - - name: LONGHORN_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.defaultSettings.registrySecret }} - imagePullSecrets: - - name: {{ .Values.defaultSettings.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.0.201/templates/userroles.yaml b/charts/longhorn/longhorn/1.0.201/templates/userroles.yaml deleted file mode 100755 index ba6d40643..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-edit" - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-view" - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: [ "volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status" ] - verbs: [ "get", "list", "watch" ] diff --git a/charts/longhorn/longhorn/1.0.201/templates/validate-install-crd.yaml b/charts/longhorn/longhorn/1.0.201/templates/validate-install-crd.yaml deleted file mode 100755 index 4899b977c..000000000 --- a/charts/longhorn/longhorn/1.0.201/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "longhorn.io/v1beta1/Engine" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the longhorn-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/longhorn/longhorn/1.0.201/values.yaml b/charts/longhorn/longhorn/1.0.201/values.yaml deleted file mode 100755 index a29b9497d..000000000 --- a/charts/longhorn/longhorn/1.0.201/values.yaml +++ /dev/null @@ -1,136 +0,0 @@ -# Default values for longhorn. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -global: - cattle: - systemDefaultRegistry: "" - -image: - longhorn: - engine: - repository: rancher/longhornio-longhorn-engine - tag: v1.0.2 - manager: - repository: rancher/longhornio-longhorn-manager - tag: v1.0.2 - ui: - repository: rancher/longhornio-longhorn-ui - tag: v1.0.2 - instanceManager: - repository: rancher/longhornio-longhorn-instance-manager - tag: v1_20200514 - csi: - attacher: - repository: rancher/longhornio-csi-attacher - tag: v2.0.0 - provisioner: - repository: rancher/longhornio-csi-provisioner - tag: v1.4.0 - nodeDriverRegistrar: - repository: rancher/longhornio-csi-node-driver-registrar - tag: v1.2.0 - resizer: - repository: rancher/longhornio-csi-resizer - tag: v0.3.0 - pullPolicy: IfNotPresent - -service: - ui: - type: ClusterIP - nodePort: null - manager: - type: ClusterIP - nodePort: "" - -persistence: - defaultClass: true - defaultClassReplicaCount: 3 - -csi: - kubeletRootDir: ~ - attacherReplicaCount: ~ - provisionerReplicaCount: ~ - resizerReplicaCount: ~ - -defaultSettings: - backupTarget: ~ - backupTargetCredentialSecret: ~ - createDefaultDiskLabeledNodes: ~ - defaultDataPath: ~ - replicaSoftAntiAffinity: ~ - storageOverProvisioningPercentage: ~ - storageMinimalAvailablePercentage: ~ - upgradeChecker: ~ - defaultReplicaCount: ~ - guaranteedEngineCPU: ~ - defaultLonghornStaticStorageClass: ~ - backupstorePollInterval: ~ - taintToleration: ~ - priorityClass: ~ - registrySecret: ~ - autoSalvage: ~ - disableSchedulingOnCordonedNode: ~ - replicaZoneSoftAntiAffinity: ~ - volumeAttachmentRecoveryPolicy: ~ - mkfsExt4Parameters: ~ - -privateRegistry: - registryUrl: ~ - registryUser: ~ - registryPasswd: ~ - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - # - -ingress: - ## Set to true to enable ingress record generation - enabled: false - - - host: xip.io - - ## Set this to true in order to enable TLS on the ingress record - ## A side effect of this will be that the backend service will be connected at port 443 - tls: false - - ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS - tlsSecret: longhorn.local-tls - - ## Ingress annotations done as key:value pairs - ## If you're using kube-lego, you will want to add: - ## kubernetes.io/tls-acme: true - ## - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md - ## - ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set - annotations: - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: true - - secrets: - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using kube-lego, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - # - name: longhorn.local-tls - # key: - # certificate: - -# Configure a pod security policy in the Longhorn namespace to allow privileged pods -enablePSP: true diff --git a/charts/longhorn/longhorn/1.1.000/.helmignore b/charts/longhorn/longhorn/1.1.000/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/longhorn/longhorn/1.1.000/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/longhorn/longhorn/1.1.000/Chart.yaml b/charts/longhorn/longhorn/1.1.000/Chart.yaml deleted file mode 100755 index 2d86b61fe..000000000 --- a/charts/longhorn/longhorn/1.1.000/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: longhorn-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Longhorn - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: longhorn.io/v1beta1 - catalog.cattle.io/release-name: longhorn - catalog.cattle.io/ui-component: longhorn -apiVersion: v1 -appVersion: v1.1.0 -description: Longhorn is a distributed block storage system for Kubernetes. -home: https://github.com/longhorn/longhorn -icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/longhorn/icon/color/longhorn-icon-color.svg -keywords: -- longhorn -- storage -- distributed -- block -- device -- iscsi -kubeVersion: '>=v1.16.0-r0' -maintainers: -- email: maintainers@longhorn.io - name: Longhorn maintainers -- email: sheng@yasker.org - name: Sheng Yang -name: longhorn -sources: -- https://github.com/longhorn/longhorn -- https://github.com/longhorn/longhorn-engine -- https://github.com/longhorn/longhorn-instance-manager -- https://github.com/longhorn/longhorn-share-manager -- https://github.com/longhorn/longhorn-manager -- https://github.com/longhorn/longhorn-ui -- https://github.com/longhorn/longhorn-tests -version: 1.1.000 diff --git a/charts/longhorn/longhorn/1.1.000/README.md b/charts/longhorn/longhorn/1.1.000/README.md deleted file mode 100755 index eae11ef6d..000000000 --- a/charts/longhorn/longhorn/1.1.000/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Longhorn Chart - -> **Important**: Please install the Longhorn chart in the `longhorn-system` namespace only. - -> **Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -## Source Code - -Longhorn is 100% open source software. Project source code is spread across a number of repos: - -1. Longhorn Engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine -2. Longhorn Instance Manager -- Controller/replica instance lifecycle management https://github.com/longhorn/longhorn-instance-manager -3. Longhorn Share Manager -- NFS provisioner that exposes Longhorn volumes as ReadWriteMany volumes. https://github.com/longhorn/longhorn-share-manager -4. Longhorn Manager -- Longhorn orchestration, includes CSI driver for Kubernetes https://github.com/longhorn/longhorn-manager -5. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui - -## Prerequisites - -1. Docker v1.13+ -2. Kubernetes v1.16+ -3. Make sure `curl`, `findmnt`, `grep`, `awk` and `blkid` has been installed in all nodes of the Kubernetes cluster. -4. Make sure `open-iscsi` has been installed in all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it contains `open-iscsi` already. - -## Uninstallation - -To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc). - -From Rancher Cluster Explorer UI, navigate to Apps page, delete app `longhorn` then app `longhorn-crd` in Installed Apps tab. - - ---- -Please see [link](https://github.com/longhorn/longhorn) for more information. diff --git a/charts/longhorn/longhorn/1.1.000/app-readme.md b/charts/longhorn/longhorn/1.1.000/app-readme.md deleted file mode 100755 index cb23135ca..000000000 --- a/charts/longhorn/longhorn/1.1.000/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Longhorn - -Longhorn is a lightweight, reliable and easy to use distributed block storage system for Kubernetes. Once deployed, users can leverage persistent volumes provided by Longhorn. - -Longhorn creates a dedicated storage controller for each volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Longhorn supports snapshots, backups and even allows you to schedule recurring snapshots and backups! - -**Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -**Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -[Chart Documentation](https://github.com/longhorn/longhorn/blob/master/chart/README.md) diff --git a/charts/longhorn/longhorn/1.1.000/questions.yml b/charts/longhorn/longhorn/1.1.000/questions.yml deleted file mode 100755 index f7ace54c7..000000000 --- a/charts/longhorn/longhorn/1.1.000/questions.yml +++ /dev/null @@ -1,512 +0,0 @@ -categories: -- storage -namespace: longhorn-system -questions: -- variable: image.defaultImage - default: "true" - description: "Use default Longhorn images" - label: Use Default Images - type: boolean - show_subquestion_if: false - group: "Longhorn Images" - subquestions: - - variable: image.longhorn.manager.repository - default: rancher/longhornio-longhorn-manager - description: "Specify Longhorn Manager Image Repository" - type: string - label: Longhorn Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.manager.tag - default: v1.1.0 - description: "Specify Longhorn Manager Image Tag" - type: string - label: Longhorn Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.repository - default: rancher/longhornio-longhorn-engine - description: "Specify Longhorn Engine Image Repository" - type: string - label: Longhorn Engine Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.tag - default: v1.1.0 - description: "Specify Longhorn Engine Image Tag" - type: string - label: Longhorn Engine Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.repository - default: rancher/longhornio-longhorn-ui - description: "Specify Longhorn UI Image Repository" - type: string - label: Longhorn UI Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.tag - default: v1.1.0 - description: "Specify Longhorn UI Image Tag" - type: string - label: Longhorn UI Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.repository - default: rancher/longhornio-longhorn-instance-manager - description: "Specify Longhorn Instance Manager Image Repository" - type: string - label: Longhorn Instance Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.tag - default: v1_20201216 - description: "Specify Longhorn Instance Manager Image Tag" - type: string - label: Longhorn Instance Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.repository - default: rancher/longhornio-longhorn-share-manager - description: "Specify Longhorn Share Manager Image Repository" - type: string - label: Longhorn Share Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.tag - default: v1_20201204 - description: "Specify Longhorn Share Manager Image Tag" - type: string - label: Longhorn Share Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.csi.attacher.repository - default: rancher/longhornio-csi-attacher - description: "Specify CSI attacher image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.attacher.tag - default: v2.2.1-lh1 - description: "Specify CSI attacher image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.repository - default: rancher/longhornio-csi-provisioner - description: "Specify CSI provisioner image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.tag - default: v1.6.0-lh1 - description: "Specify CSI provisioner image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.repository - default: rancher/longhornio-csi-node-driver-registrar - description: "Specify CSI Node Driver Registrar image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.tag - default: v1.2.0-lh1 - description: "Specify CSI Node Driver Registrar image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.repository - default: rancher/longhornio-csi-resizer - description: "Specify CSI Driver Resizer image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.tag - default: v0.5.1-lh1 - description: "Specify CSI Driver Resizer image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.repository - default: rancher/longhornio-csi-snapshotter - description: "Specify CSI Driver Snapshotter image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.tag - default: v2.1.1-lh1 - description: "Specify CSI Driver Snapshotter image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Tag - group: "Longhorn CSI Driver Images" -- variable: privateRegistry.registryUrl - label: Private registry URL - description: "URL of private registry. Leave blank to apply system default registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryUser - label: Private registry user - description: "User used to authenticate to private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryPasswd - label: Private registry password - description: "Password used to authenticate to private registry" - group: "Private Registry Settings" - type: password - default: "" -- variable: privateRegistry.registrySecret - label: Private registry secret name - description: "Longhorn will automatically generate a Kubernetes secret with this name and use it to pull images from your private registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: longhorn.default_setting - default: "false" - description: "Customize the default settings before installing Longhorn for the first time. This option will only work if the cluster hasn't installed Longhorn." - label: "Customize Default Settings" - type: boolean - show_subquestion_if: true - group: "Longhorn Default Settings" - subquestions: - - variable: csi.kubeletRootDir - default: - description: "Specify kubelet root-dir. Leave blank to autodetect." - type: string - label: Kubelet Root Directory - group: "Longhorn CSI Driver Settings" - - variable: csi.attacherReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Attacher. By default 3." - label: Longhorn CSI Attacher replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.provisionerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Provisioner. By default 3." - label: Longhorn CSI Provisioner replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.resizerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Resizer. By default 3." - label: Longhorn CSI Resizer replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.snapshotterReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Snapshotter. By default 3." - label: Longhorn CSI Snapshotter replica count - group: "Longhorn CSI Driver Settings" - - variable: defaultSettings.backupTarget - label: Backup Target - description: "The endpoint used to access the backupstore. NFS and S3 are supported." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.backupTargetCredentialSecret - label: Backup Target Credential Secret - description: "The name of the Kubernetes secret associated with the backup target." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.allowRecurringJobWhileVolumeDetached - label: Allow Recurring Job While Volume Is Detached - description: 'If this setting is enabled, Longhorn will automatically attaches the volume and takes snapshot/backup when it is the time to do recurring snapshot/backup. -Note that the volume is not ready for workload during the period when the volume was automatically attached. Workload will have to wait until the recurring job finishes.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.createDefaultDiskLabeledNodes - label: Create Default Disk on Labeled Nodes - description: 'Create default Disk automatically only on Nodes with the label "node.longhorn.io/create-default-disk=true" if no other disks exist. If disabled, the default disk will be created on all new nodes when each node is first added.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.defaultDataPath - label: Default Data Path - description: 'Default path to use for storing data on a host. By default "/var/lib/longhorn/"' - group: "Longhorn Default Settings" - type: string - default: "/var/lib/longhorn/" - - variable: defaultSettings.defaultDataLocality - label: Default Data Locality - description: 'We say a Longhorn volume has data locality if there is a local replica of the volume on the same node as the pod which is using the volume. -This setting specifies the default data locality when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `dataLocality` in the StorageClass -The available modes are: -- **disabled**. This is the default option. There may or may not be a replica on the same node as the attached volume (workload) -- **best-effort**. This option instructs Longhorn to try to keep a replica on the same node as the attached volume (workload). Longhorn will not stop the volume, even if it cannot keep a replica local to the attached volume (workload) due to environment limitation, e.g. not enough disk space, incompatible disk tags, etc.' - group: "Longhorn Default Settings" - type: enum - options: - - "disabled" - - "best-effort" - default: "disabled" - - variable: defaultSettings.replicaSoftAntiAffinity - label: Replica Node Level Soft Anti-Affinity - description: 'Allow scheduling on nodes with existing healthy replicas of the same volume. By default false.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.storageOverProvisioningPercentage - label: Storage Over Provisioning Percentage - description: "The over-provisioning percentage defines how much storage can be allocated relative to the hard drive's capacity. By default 200." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 200 - - variable: defaultSettings.storageMinimalAvailablePercentage - label: Storage Minimal Available Percentage - description: "If the minimum available disk capacity exceeds the actual percentage of available disk capacity, the disk becomes unschedulable until more space is freed up. By default 25." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 100 - default: 25 - - variable: defaultSettings.upgradeChecker - label: Enable Upgrade Checker - description: 'Upgrade Checker will check for new Longhorn version periodically. When there is a new version available, a notification will appear in the UI. By default true.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.defaultReplicaCount - label: Default Replica Count - description: "The default number of replicas when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `numberOfReplicas` in the StorageClass. By default 3." - group: "Longhorn Default Settings" - type: int - min: 1 - max: 20 - default: 3 - - variable: defaultSettings.guaranteedEngineCPU - label: Guaranteed Engine CPU - description: "Allow Longhorn Instance Managers to have guaranteed CPU allocation. By default 0.25. The value is how many CPUs should be reserved for each Engine/Replica Instance Manager Pod created by Longhorn. For example, 0.1 means one-tenth of a CPU. This will help maintain engine stability during high node workload. It only applies to the Engine/Replica Instance Manager Pods created after the setting took effect. -In order to prevent unexpected volume crash, you can use the following formula to calculate an appropriate value for this setting: -'Guaranteed Engine CPU = The estimated max Longhorn volume/replica count on a node * 0.1'. -The result of above calculation doesn't mean that's the maximum CPU resources the Longhorn workloads require. To fully exploit the Longhorn volume I/O performance, you can allocate/guarantee more CPU resources via this setting. -If it's hard to estimate the volume/replica count now, you can leave it with the default value, or allocate 1/8 of total CPU of a node. Then you can tune it when there is no running workload using Longhorn volumes. -WARNING: After this setting is changed, all the instance managers on all the nodes will be automatically restarted -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: float - default: 0.25 - - variable: defaultSettings.defaultLonghornStaticStorageClass - label: Default Longhorn Static StorageClass Name - description: "The 'storageClassName' is given to PVs and PVCs that are created for an existing Longhorn volume. The StorageClass name can also be used as a label, so it is possible to use a Longhorn StorageClass to bind a workload to an existing PV without creating a Kubernetes StorageClass object. By default 'longhorn-static'." - group: "Longhorn Default Settings" - type: string - default: "longhorn-static" - - variable: defaultSettings.backupstorePollInterval - label: Backupstore Poll Interval - description: "In seconds. The backupstore poll interval determines how often Longhorn checks the backupstore for new backups. Set to 0 to disable the polling. By default 300." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 300 - - variable: defaultSettings.taintToleration - label: Kubernetes Taint Toleration - description: "To dedicate nodes to store Longhorn replicas and reject other general workloads, set tolerations for Longhorn and add taints for the storage nodes. -All Longhorn volumes should be detached before modifying toleration settings. -We recommend setting tolerations during Longhorn deployment because the Longhorn system cannot be operated during the update. -Multiple tolerations can be set here, and these tolerations are separated by semicolon. For example: -* `key1=value1:NoSchedule; key2:NoExecute` -* `:` this toleration tolerates everything because an empty key with operator `Exists` matches all keys, values and effects -* `key1=value1:` this toleration has empty effect. It matches all effects with key `key1` -Because `kubernetes.io` is used as the key of all Kubernetes default tolerations, it should not be used in the toleration settings. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES!" - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.priorityClass - label: Priority Class - description: "The name of the Priority Class to set on the Longhorn workloads. This can help prevent Longhorn workloads from being evicted under Node Pressure. WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.autoSalvage - label: Automatic salvage - description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly - label: Automatically Delete Workload Pod when The Volume Is Detached Unexpectedly - description: 'If enabled, Longhorn will automatically delete the workload pod that is managed by a controller (e.g. deployment, statefulset, daemonset, etc...) when Longhorn volume is detached unexpectedly (e.g. during Kubernetes upgrade, Docker reboot, or network disconnect). By deleting the pod, its controller restarts the pod and Kubernetes handles volume reattachment and remount. -If disabled, Longhorn will not delete the workload pod that is managed by a controller. You will have to manually restart the pod to reattach and remount the volume. -**Note:** This setting does not apply to the workload pods that do not have a controller. Longhorn never deletes them.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.disableSchedulingOnCordonedNode - label: Disable Scheduling On Cordoned Node - description: "Disable Longhorn manager to schedule replica on Kubernetes cordoned node. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.replicaZoneSoftAntiAffinity - label: Replica Zone Level Soft Anti-Affinity - description: "Allow scheduling new Replicas of Volume to the Nodes in the same Zone as existing healthy Replicas. Nodes don't belong to any Zone will be treated as in the same Zone. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.volumeAttachmentRecoveryPolicy - label: Volume Attachment Recovery Policy - description: "Defines the Longhorn action when a Volume is stuck with a Deployment Pod on a failed node. `wait` leads to the deletion of the volume attachment as soon as the pods deletion time has passed. `never` is the default Kubernetes behavior of never deleting volume attachments on terminating pods. `immediate` leads to the deletion of the volume attachment as soon as all workload pods are pending. By default wait." - group: "Longhorn Default Settings" - type: enum - options: - - "wait" - - "never" - - "immediate" - default: "wait" - - variable: defaultSettings.nodeDownPodDeletionPolicy - label: Pod Deletion Policy When Node is Down - description: "Defines the Longhorn action when a Volume is stuck with a StatefulSet/Deployment Pod on a node that is down. -- **do-nothing** is the default Kubernetes behavior of never force deleting StatefulSet/Deployment terminating pods. Since the pod on the node that is down isn't removed, Longhorn volumes are stuck on nodes that are down. -- **delete-statefulset-pod** Longhorn will force delete StatefulSet terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-deployment-pod** Longhorn will force delete Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-both-statefulset-and-deployment-pod** Longhorn will force delete StatefulSet/Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods." - group: "Longhorn Default Settings" - type: enum - options: - - "do-nothing" - - "delete-statefulset-pod" - - "delete-deployment-pod" - - "delete-both-statefulset-and-deployment-pod" - default: "do-nothing" - - variable: defaultSettings.allowNodeDrainWithLastHealthyReplica - label: Allow Node Drain with the Last Healthy Replica - description: "By default, Longhorn will block `kubectl drain` action on a node if the node contains the last healthy replica of a volume. -If this setting is enabled, Longhorn will **not** block `kubectl drain` action on a node even if the node contains the last healthy replica of a volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.mkfsExt4Parameters - label: Custom mkfs.ext4 parameters - description: "Allows setting additional filesystem creation parameters for ext4. For older host kernels it might be necessary to disable the optional ext4 metadata_csum feature by specifying `-O ^64bit,^metadata_csum`." - group: "Longhorn Default Settings" - type: string - - variable: defaultSettings.disableReplicaRebuild - label: Disable Replica Rebuild - description: "This setting disable replica rebuild cross the whole cluster, eviction and data locality feature won't work if this setting is true. But doesn't have any impact to any current replica rebuild and restore disaster recovery volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.replicaReplenishmentWaitInterval - label: Replica Replenishment Wait Interval - description: "In seconds. The interval determines how long Longhorn will wait at least in order to reuse the existing data on a failed replica rather than directly creating a new replica for a degraded volume. -Warning: This option works only when there is a failed replica in the volume. And this option may block the rebuilding for a while in the case." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 600 - - variable: defaultSettings.disableRevisionCounter - label: Disable Revision Counter - description: "This setting is only for volumes created by UI. By default, this is false meaning there will be a reivision counter file to track every write to the volume. During salvage recovering Longhorn will pick the repica with largest reivision counter as candidate to recover the whole volume. If revision counter is disabled, Longhorn will not track every write to the volume. During the salvage recovering, Longhorn will use the 'volume-head-xxx.img' file last modification time and file size to pick the replica candidate to recover the whole volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.systemManagedPodsImagePullPolicy - label: System Managed Pod Image Pull Policy - description: "This setting defines the Image Pull Policy of Longhorn system managed pods, e.g. instance manager, engine image, CSI driver, etc. The new Image Pull Policy will only apply after the system managed pods restart." - group: "Longhorn Default Settings" - type: enum - options: - - "if-not-present" - - "always" - - "never" - default: "if-not-present" - - variable: defaultSettings.allowVolumeCreationWithDegradedAvailability - label: Allow Volume Creation with Degraded Availability - description: "This setting allows user to create and attach a volume that doesn't have all the replicas scheduled at the time of creation." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoCleanupSystemGeneratedSnapshot - label: Automatically Cleanup System Generated Snapshot - description: "This setting enables Longhorn to automatically cleanup the system generated snapshot after replica rebuild is done." - group: "Longhorn Default Settings" - type: boolean - default: "true" -- variable: persistence.defaultClass - default: "true" - description: "Set as default StorageClass for Longhorn" - label: Default Storage Class - group: "Longhorn Storage Class Settings" - required: true - type: boolean -- variable: persistence.reclaimPolicy - label: Storage Class Retain Policy - description: "Define reclaim policy (Retain or Delete)" - group: "Longhorn Storage Class Settings" - required: true - type: enum - options: - - "Delete" - - "Retain" - default: "Delete" -- variable: persistence.defaultClassReplicaCount - description: "Set replica count for Longhorn StorageClass" - label: Default Storage Class Replica Count - group: "Longhorn Storage Class Settings" - type: int - min: 1 - max: 10 - default: 3 -- variable: persistence.recurringJobs.enable - description: "Enable recurring job for Longhorn StorageClass" - group: "Longhorn Storage Class Settings" - label: Enable Storage Class Recurring Job - type: boolean - default: false - show_subquestion_if: true - subquestions: - - variable: persistence.recurringJobs.jobList - description: 'Recurring job list for Longhorn StorageClass. Please be careful of quotes of input. e.g., [{"name":"backup", "task":"backup", "cron":"*/2 * * * *", "retain":1,"labels": {"interval":"2m"}}]' - label: Storage Class Recurring Job List - group: "Longhorn Storage Class Settings" - type: string - default: -- variable: ingress.enabled - default: "false" - description: "Expose app using Layer 7 Load Balancer - ingress" - type: boolean - group: "Services and Load Balancing" - label: Expose app using Layer 7 Load Balancer - show_subquestion_if: true - subquestions: - - variable: ingress.host - default: "xip.io" - description: "layer 7 Load Balancer hostname" - type: hostname - required: true - label: Layer 7 Load Balancer Hostname -- variable: service.ui.type - default: "Rancher-Proxy" - description: "Define Longhorn UI service type" - type: enum - options: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - - "Rancher-Proxy" - label: Longhorn UI Service - show_if: "ingress.enabled=false" - group: "Services and Load Balancing" - show_subquestion_if: "NodePort" - subquestions: - - variable: service.ui.nodePort - default: "" - description: "NodePort port number(to set explicitly, choose port between 30000-32767)" - type: int - min: 30000 - max: 32767 - show_if: "service.ui.type=NodePort||service.ui.type=LoadBalancer" - label: UI Service NodePort number -- variable: enablePSP - default: "true" - description: "Setup a pod security policy for Longhorn workloads." - label: Pod Security Policy - type: boolean - group: "Other Settings" diff --git a/charts/longhorn/longhorn/1.1.000/templates/NOTES.txt b/charts/longhorn/longhorn/1.1.000/templates/NOTES.txt deleted file mode 100755 index cca7cd77b..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Longhorn is now installed on the cluster! - -Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. - -Visit our documentation at https://longhorn.io/docs/ diff --git a/charts/longhorn/longhorn/1.1.000/templates/_helpers.tpl b/charts/longhorn/longhorn/1.1.000/templates/_helpers.tpl deleted file mode 100755 index 3fbc2ac02..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "longhorn.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "longhorn.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "longhorn.managerIP" -}} -{{- $fullname := (include "longhorn.fullname" .) -}} -{{- printf "http://%s-backend:9500" $fullname | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "secret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.privateRegistry.registryUrl (printf "%s:%s" .Values.privateRegistry.registryUser .Values.privateRegistry.registryPasswd | b64enc) | b64enc }} -{{- end }} - -{{- /* -longhorn.labels generates the standard Helm labels. -*/ -}} -{{- define "longhorn.labels" -}} -app.kubernetes.io/name: {{ template "longhorn.name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- end -}} - - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{- define "registry_url" -}} -{{- if .Values.privateRegistry.registryUrl -}} -{{- printf "%s/" .Values.privateRegistry.registryUrl -}} -{{- else -}} -{{ include "system_default_registry" . }} -{{- end -}} -{{- end -}} - -{{- /* - define the longhorn release namespace -*/ -}} -{{- define "release_namespace" -}} -{{- if .Values.namespaceOverride -}} -{{- .Values.namespaceOverride -}} -{{- else -}} -{{- .Release.Namespace -}} -{{- end -}} -{{- end -}} diff --git a/charts/longhorn/longhorn/1.1.000/templates/clusterrole.yaml b/charts/longhorn/longhorn/1.1.000/templates/clusterrole.yaml deleted file mode 100755 index c69761756..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/clusterrole.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: longhorn-role - labels: {{- include "longhorn.labels" . | nindent 4 }} -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps"] - verbs: ["*"] -- apiGroups: [""] - resources: ["namespaces"] - verbs: ["get", "list"] -- apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] -- apiGroups: ["batch"] - resources: ["jobs", "cronjobs"] - verbs: ["*"] -- apiGroups: ["policy"] - resources: ["poddisruptionbudgets"] - verbs: ["*"] -- apiGroups: ["scheduling.k8s.io"] - resources: ["priorityclasses"] - verbs: ["watch", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"] - verbs: ["*"] -- apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses", "volumesnapshots", "volumesnapshotcontents", "volumesnapshotcontents/status"] - verbs: ["*"] -- apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] -- apiGroups: ["metrics.k8s.io"] - resources: ["pods", "nodes"] - verbs: ["get", "list"] diff --git a/charts/longhorn/longhorn/1.1.000/templates/clusterrolebinding.yaml b/charts/longhorn/longhorn/1.1.000/templates/clusterrolebinding.yaml deleted file mode 100755 index 66ac62f9b..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: longhorn-bind - labels: {{- include "longhorn.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: longhorn-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/daemonset-sa.yaml b/charts/longhorn/longhorn/1.1.000/templates/daemonset-sa.yaml deleted file mode 100755 index e40793591..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/daemonset-sa.yaml +++ /dev/null @@ -1,114 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-manager - namespace: {{ include "release_namespace" . }} -spec: - selector: - matchLabels: - app: longhorn-manager - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-manager - spec: - containers: - - name: longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.engine.repository }}:{{ .Values.image.longhorn.engine.tag }}" - - --instance-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.instanceManager.repository }}:{{ .Values.image.longhorn.instanceManager.tag }}" - - --share-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.shareManager.repository }}:{{ .Values.image.longhorn.shareManager.tag }}" - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --service-account - - longhorn-service-account - ports: - - containerPort: 9500 - name: manager - readinessProbe: - tcpSocket: - port: 9500 - volumeMounts: - - name: dev - mountPath: /host/dev/ - - name: proc - mountPath: /host/proc/ - - name: varrun - mountPath: /var/run/ - mountPropagation: Bidirectional - - name: longhorn - mountPath: /var/lib/longhorn/ - mountPropagation: Bidirectional - - name: longhorn-default-setting - mountPath: /var/lib/longhorn-setting/ - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: DEFAULT_SETTING_PATH - value: /var/lib/longhorn-setting/default-setting.yaml - volumes: - - name: dev - hostPath: - path: /dev/ - - name: proc - hostPath: - path: /proc/ - - name: varrun - hostPath: - path: /var/run/ - - name: longhorn - hostPath: - path: /var/lib/longhorn/ - - name: longhorn-default-setting - configMap: - name: longhorn-default-setting - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-backend - namespace: {{ include "release_namespace" . }} -spec: - type: {{ .Values.service.manager.type }} - sessionAffinity: ClientIP - selector: - app: longhorn-manager - ports: - - name: manager - port: 9500 - targetPort: manager - {{- if .Values.service.manager.nodePort }} - nodePort: {{ .Values.service.manager.nodePort }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/default-setting.yaml b/charts/longhorn/longhorn/1.1.000/templates/default-setting.yaml deleted file mode 100755 index 14c264e27..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/default-setting.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-default-setting - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - default-setting.yaml: |- - backup-target: {{ .Values.defaultSettings.backupTarget }} - backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} - allow-recurring-job-while-volume-detached: {{ .Values.defaultSettings.allowRecurringJobWhileVolumeDetached }} - create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} - default-data-path: {{ .Values.defaultSettings.defaultDataPath }} - replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} - storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} - storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} - upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} - default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} - default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }} - guaranteed-engine-cpu: {{ .Values.defaultSettings.guaranteedEngineCPU }} - default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} - backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} - taint-toleration: {{ .Values.defaultSettings.taintToleration }} - priority-class: {{ .Values.defaultSettings.priorityClass }} - auto-salvage: {{ .Values.defaultSettings.autoSalvage }} - auto-delete-pod-when-volume-detached-unexpectedly: {{ .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly }} - disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} - replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} - volume-attachment-recovery-policy: {{ .Values.defaultSettings.volumeAttachmentRecoveryPolicy }} - node-down-pod-deletion-policy: {{ .Values.defaultSettings.nodeDownPodDeletionPolicy }} - allow-node-drain-with-last-healthy-replica: {{ .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica }} - mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} - disable-replica-rebuild: {{ .Values.defaultSettings.disableReplicaRebuild }} - replica-replenishment-wait-interval: {{ .Values.defaultSettings.replicaReplenishmentWaitInterval }} - disable-revision-counter: {{ .Values.defaultSettings.disableRevisionCounter }} - system-managed-pods-image-pull-policy: {{ .Values.defaultSettings.systemManagedPodsImagePullPolicy }} - allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }} - auto-cleanup-system-generated-snapshot: {{ .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/deployment-driver.yaml b/charts/longhorn/longhorn/1.1.000/templates/deployment-driver.yaml deleted file mode 100755 index c4b6e3587..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/deployment-driver.yaml +++ /dev/null @@ -1,93 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: longhorn-driver-deployer - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-driver-deployer - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-driver-deployer - spec: - initContainers: - - name: wait-longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] - containers: - - name: longhorn-driver-deployer - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --manager-url - - http://longhorn-backend:9500/v1 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - {{- if .Values.csi.kubeletRootDir }} - - name: KUBELET_ROOT_DIR - value: {{ .Values.csi.kubeletRootDir }} - {{- end }} - {{- if and .Values.image.csi.attacher.repository .Values.image.csi.attacher.tag }} - - name: CSI_ATTACHER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.attacher.repository }}:{{ .Values.image.csi.attacher.tag }}" - {{- end }} - {{- if and .Values.image.csi.provisioner.repository .Values.image.csi.provisioner.tag }} - - name: CSI_PROVISIONER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.provisioner.repository }}:{{ .Values.image.csi.provisioner.tag }}" - {{- end }} - {{- if and .Values.image.csi.nodeDriverRegistrar.repository .Values.image.csi.nodeDriverRegistrar.tag }} - - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.nodeDriverRegistrar.repository }}:{{ .Values.image.csi.nodeDriverRegistrar.tag }}" - {{- end }} - {{- if and .Values.image.csi.resizer.repository .Values.image.csi.resizer.tag }} - - name: CSI_RESIZER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.resizer.repository }}:{{ .Values.image.csi.resizer.tag }}" - {{- end }} - {{- if and .Values.image.csi.snapshotter.repository .Values.image.csi.snapshotter.tag }} - - name: CSI_SNAPSHOTTER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.snapshotter.repository }}:{{ .Values.image.csi.snapshotter.tag }}" - {{- end }} - {{- if .Values.csi.attacherReplicaCount }} - - name: CSI_ATTACHER_REPLICA_COUNT - value: {{ .Values.csi.attacherReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.provisionerReplicaCount }} - - name: CSI_PROVISIONER_REPLICA_COUNT - value: {{ .Values.csi.provisionerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.resizerReplicaCount }} - - name: CSI_RESIZER_REPLICA_COUNT - value: {{ .Values.csi.resizerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.snapshotterReplicaCount }} - - name: CSI_SNAPSHOTTER_REPLICA_COUNT - value: {{ .Values.csi.snapshotterReplicaCount | quote }} - {{- end }} - - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/charts/longhorn/longhorn/1.1.000/templates/deployment-ui.yaml b/charts/longhorn/longhorn/1.1.000/templates/deployment-ui.yaml deleted file mode 100755 index da7c0ea5b..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/deployment-ui.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - name: longhorn-ui - namespace: {{ include "release_namespace" . }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-ui - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-ui - spec: - containers: - - name: longhorn-ui - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} ---- -kind: Service -apiVersion: v1 -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - kubernetes.io/cluster-service: "true" - {{- end }} - name: longhorn-frontend - namespace: {{ include "release_namespace" . }} -spec: - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - type: ClusterIP - {{- else }} - type: {{ .Values.service.ui.type }} - {{- end }} - selector: - app: longhorn-ui - ports: - - name: http - port: 80 - targetPort: http - {{- if .Values.service.ui.nodePort }} - nodePort: {{ .Values.service.ui.nodePort }} - {{- else }} - nodePort: null - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/ingress.yaml b/charts/longhorn/longhorn/1.1.000/templates/ingress.yaml deleted file mode 100755 index 5b3a40588..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/ingress.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: longhorn-ingress - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ingress - annotations: - {{- if .Values.ingress.tls }} - ingress.kubernetes.io/secure-backends: "true" - {{- end }} - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - - host: {{ .Values.ingress.host }} - http: - paths: - - path: {{ default "" .Values.ingress.path }} - backend: - serviceName: longhorn-frontend - servicePort: 80 -{{- if .Values.ingress.tls }} - tls: - - hosts: - - {{ .Values.ingress.host }} - secretName: {{ .Values.ingress.tlsSecret }} -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/postupgrade-job.yaml b/charts/longhorn/longhorn/1.1.000/templates/postupgrade-job.yaml deleted file mode 100755 index 6b6a38591..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/postupgrade-job.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation - name: longhorn-post-upgrade - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-post-upgrade - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-post-upgrade - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - post-upgrade - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.1.000/templates/psp.yaml b/charts/longhorn/longhorn/1.1.000/templates/psp.yaml deleted file mode 100755 index a2dfc05be..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.enablePSP }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: longhorn-psp - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - privileged: true - allowPrivilegeEscalation: true - requiredDropCapabilities: - - NET_RAW - allowedCapabilities: - - SYS_ADMIN - hostNetwork: false - hostIPC: false - hostPID: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - fsGroup: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - secret - - projected - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: longhorn-psp-role - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -rules: -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - longhorn-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: longhorn-psp-binding - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: longhorn-psp-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} -- kind: ServiceAccount - name: default - namespace: {{ include "release_namespace" . }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/registry-secret.yml b/charts/longhorn/longhorn/1.1.000/templates/registry-secret.yml deleted file mode 100755 index 1c7565fea..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/registry-secret.yml +++ /dev/null @@ -1,11 +0,0 @@ -{{- if .Values.privateRegistry.registrySecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Values.privateRegistry.registrySecret }} - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "secret" . }} -{{- end }} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.1.000/templates/serviceaccount.yaml b/charts/longhorn/longhorn/1.1.000/templates/serviceaccount.yaml deleted file mode 100755 index ad576c353..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/storageclass.yaml b/charts/longhorn/longhorn/1.1.000/templates/storageclass.yaml deleted file mode 100755 index dea6aafd4..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/storageclass.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-storageclass - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - storageclass.yaml: | - kind: StorageClass - apiVersion: storage.k8s.io/v1 - metadata: - name: longhorn - annotations: - storageclass.kubernetes.io/is-default-class: {{ .Values.persistence.defaultClass | quote }} - provisioner: driver.longhorn.io - allowVolumeExpansion: true - reclaimPolicy: "{{ .Values.persistence.reclaimPolicy }}" - volumeBindingMode: Immediate - parameters: - numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}" - staleReplicaTimeout: "30" - fromBackup: "" - baseImage: "" - {{- if .Values.persistence.recurringJobs.enable }} - recurringJobs: '{{ .Values.persistence.recurringJobs.jobList }}' - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/tls-secrets.yaml b/charts/longhorn/longhorn/1.1.000/templates/tls-secrets.yaml deleted file mode 100755 index a7ebf13e0..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/tls-secrets.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: longhorn - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.000/templates/uninstall-job.yaml b/charts/longhorn/longhorn/1.1.000/templates/uninstall-job.yaml deleted file mode 100755 index e7e9f1457..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/uninstall-job.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - name: longhorn-uninstall - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-uninstall - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-uninstall - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - uninstall - - --force - env: - - name: LONGHORN_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.1.000/templates/userroles.yaml b/charts/longhorn/longhorn/1.1.000/templates/userroles.yaml deleted file mode 100755 index 37e8e3ddb..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/userroles.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-edit" - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-view" - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "get", "list", "watch" ] diff --git a/charts/longhorn/longhorn/1.1.000/templates/validate-install-crd.yaml b/charts/longhorn/longhorn/1.1.000/templates/validate-install-crd.yaml deleted file mode 100755 index 4899b977c..000000000 --- a/charts/longhorn/longhorn/1.1.000/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "longhorn.io/v1beta1/Engine" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the longhorn-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/longhorn/longhorn/1.1.000/values.yaml b/charts/longhorn/longhorn/1.1.000/values.yaml deleted file mode 100755 index c1e38eed9..000000000 --- a/charts/longhorn/longhorn/1.1.000/values.yaml +++ /dev/null @@ -1,162 +0,0 @@ -# Default values for longhorn. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -global: - cattle: - systemDefaultRegistry: "" - -image: - longhorn: - engine: - repository: rancher/longhornio-longhorn-engine - tag: v1.1.0 - manager: - repository: rancher/longhornio-longhorn-manager - tag: v1.1.0 - ui: - repository: rancher/longhornio-longhorn-ui - tag: v1.1.0 - instanceManager: - repository: rancher/longhornio-longhorn-instance-manager - tag: v1_20201216 - shareManager: - repository: rancher/longhornio-longhorn-share-manager - tag: v1_20201204 - csi: - attacher: - repository: rancher/longhornio-csi-attacher - tag: v2.2.1-lh1 - provisioner: - repository: rancher/longhornio-csi-provisioner - tag: v1.6.0-lh1 - nodeDriverRegistrar: - repository: rancher/longhornio-csi-node-driver-registrar - tag: v1.2.0-lh1 - resizer: - repository: rancher/longhornio-csi-resizer - tag: v0.5.1-lh1 - snapshotter: - repository: rancher/longhornio-csi-snapshotter - tag: v2.1.1-lh1 - pullPolicy: IfNotPresent - -service: - ui: - type: ClusterIP - nodePort: null - manager: - type: ClusterIP - nodePort: "" - -persistence: - defaultClass: true - defaultClassReplicaCount: 3 - reclaimPolicy: Delete - recurringJobs: - enable: false - jobList: [] - -csi: - kubeletRootDir: ~ - attacherReplicaCount: ~ - provisionerReplicaCount: ~ - resizerReplicaCount: ~ - snapshotterReplicaCount: ~ - -defaultSettings: - backupTarget: ~ - backupTargetCredentialSecret: ~ - allowRecurringJobWhileVolumeDetached: ~ - createDefaultDiskLabeledNodes: ~ - defaultDataPath: ~ - defaultDataLocality: ~ - replicaSoftAntiAffinity: ~ - storageOverProvisioningPercentage: ~ - storageMinimalAvailablePercentage: ~ - upgradeChecker: ~ - defaultReplicaCount: ~ - guaranteedEngineCPU: ~ - defaultLonghornStaticStorageClass: ~ - backupstorePollInterval: ~ - taintToleration: ~ - priorityClass: ~ - autoSalvage: ~ - autoDeletePodWhenVolumeDetachedUnexpectedly: ~ - disableSchedulingOnCordonedNode: ~ - replicaZoneSoftAntiAffinity: ~ - volumeAttachmentRecoveryPolicy: ~ - nodeDownPodDeletionPolicy: ~ - allowNodeDrainWithLastHealthyReplica: ~ - mkfsExt4Parameters: ~ - disableReplicaRebuild: ~ - replicaReplenishmentWaitInterval: ~ - disableRevisionCounter: ~ - systemManagedPodsImagePullPolicy: ~ - allowVolumeCreationWithDegradedAvailability: ~ - autoCleanupSystemGeneratedSnapshot: ~ - -privateRegistry: - registryUrl: ~ - registryUser: ~ - registryPasswd: ~ - registrySecret: ~ - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - # - -ingress: - ## Set to true to enable ingress record generation - enabled: false - - - host: xip.io - - ## Set this to true in order to enable TLS on the ingress record - ## A side effect of this will be that the backend service will be connected at port 443 - tls: false - - ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS - tlsSecret: longhorn.local-tls - - ## Ingress annotations done as key:value pairs - ## If you're using kube-lego, you will want to add: - ## kubernetes.io/tls-acme: true - ## - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md - ## - ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set - annotations: - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: true - - secrets: - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using kube-lego, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - # - name: longhorn.local-tls - # key: - # certificate: - -# Configure a pod security policy in the Longhorn namespace to allow privileged pods -enablePSP: true - -## Specify override namespace, specifically this is useful for using longhorn as sub-chart -## and its release namespace is not the `longhorn-system` -namespaceOverride: "" diff --git a/charts/longhorn/longhorn/1.1.001/.helmignore b/charts/longhorn/longhorn/1.1.001/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/longhorn/longhorn/1.1.001/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/longhorn/longhorn/1.1.001/Chart.yaml b/charts/longhorn/longhorn/1.1.001/Chart.yaml deleted file mode 100755 index 733dfe1cb..000000000 --- a/charts/longhorn/longhorn/1.1.001/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: longhorn-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Longhorn - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: longhorn.io/v1beta1 - catalog.cattle.io/release-name: longhorn - catalog.cattle.io/ui-component: longhorn -apiVersion: v1 -appVersion: v1.1.0 -description: Longhorn is a distributed block storage system for Kubernetes. -home: https://github.com/longhorn/longhorn -icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/longhorn/icon/color/longhorn-icon-color.svg?sanitize=true -keywords: -- longhorn -- storage -- distributed -- block -- device -- iscsi -kubeVersion: '>=v1.16.0-r0' -maintainers: -- email: maintainers@longhorn.io - name: Longhorn maintainers -- email: sheng@yasker.org - name: Sheng Yang -name: longhorn -sources: -- https://github.com/longhorn/longhorn -- https://github.com/longhorn/longhorn-engine -- https://github.com/longhorn/longhorn-instance-manager -- https://github.com/longhorn/longhorn-share-manager -- https://github.com/longhorn/longhorn-manager -- https://github.com/longhorn/longhorn-ui -- https://github.com/longhorn/longhorn-tests -version: 1.1.001 diff --git a/charts/longhorn/longhorn/1.1.001/README.md b/charts/longhorn/longhorn/1.1.001/README.md deleted file mode 100755 index eae11ef6d..000000000 --- a/charts/longhorn/longhorn/1.1.001/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Longhorn Chart - -> **Important**: Please install the Longhorn chart in the `longhorn-system` namespace only. - -> **Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -## Source Code - -Longhorn is 100% open source software. Project source code is spread across a number of repos: - -1. Longhorn Engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine -2. Longhorn Instance Manager -- Controller/replica instance lifecycle management https://github.com/longhorn/longhorn-instance-manager -3. Longhorn Share Manager -- NFS provisioner that exposes Longhorn volumes as ReadWriteMany volumes. https://github.com/longhorn/longhorn-share-manager -4. Longhorn Manager -- Longhorn orchestration, includes CSI driver for Kubernetes https://github.com/longhorn/longhorn-manager -5. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui - -## Prerequisites - -1. Docker v1.13+ -2. Kubernetes v1.16+ -3. Make sure `curl`, `findmnt`, `grep`, `awk` and `blkid` has been installed in all nodes of the Kubernetes cluster. -4. Make sure `open-iscsi` has been installed in all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it contains `open-iscsi` already. - -## Uninstallation - -To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc). - -From Rancher Cluster Explorer UI, navigate to Apps page, delete app `longhorn` then app `longhorn-crd` in Installed Apps tab. - - ---- -Please see [link](https://github.com/longhorn/longhorn) for more information. diff --git a/charts/longhorn/longhorn/1.1.001/app-readme.md b/charts/longhorn/longhorn/1.1.001/app-readme.md deleted file mode 100755 index cb23135ca..000000000 --- a/charts/longhorn/longhorn/1.1.001/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Longhorn - -Longhorn is a lightweight, reliable and easy to use distributed block storage system for Kubernetes. Once deployed, users can leverage persistent volumes provided by Longhorn. - -Longhorn creates a dedicated storage controller for each volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Longhorn supports snapshots, backups and even allows you to schedule recurring snapshots and backups! - -**Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -**Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -[Chart Documentation](https://github.com/longhorn/longhorn/blob/master/chart/README.md) diff --git a/charts/longhorn/longhorn/1.1.001/questions.yml b/charts/longhorn/longhorn/1.1.001/questions.yml deleted file mode 100755 index f7ace54c7..000000000 --- a/charts/longhorn/longhorn/1.1.001/questions.yml +++ /dev/null @@ -1,512 +0,0 @@ -categories: -- storage -namespace: longhorn-system -questions: -- variable: image.defaultImage - default: "true" - description: "Use default Longhorn images" - label: Use Default Images - type: boolean - show_subquestion_if: false - group: "Longhorn Images" - subquestions: - - variable: image.longhorn.manager.repository - default: rancher/longhornio-longhorn-manager - description: "Specify Longhorn Manager Image Repository" - type: string - label: Longhorn Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.manager.tag - default: v1.1.0 - description: "Specify Longhorn Manager Image Tag" - type: string - label: Longhorn Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.repository - default: rancher/longhornio-longhorn-engine - description: "Specify Longhorn Engine Image Repository" - type: string - label: Longhorn Engine Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.tag - default: v1.1.0 - description: "Specify Longhorn Engine Image Tag" - type: string - label: Longhorn Engine Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.repository - default: rancher/longhornio-longhorn-ui - description: "Specify Longhorn UI Image Repository" - type: string - label: Longhorn UI Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.tag - default: v1.1.0 - description: "Specify Longhorn UI Image Tag" - type: string - label: Longhorn UI Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.repository - default: rancher/longhornio-longhorn-instance-manager - description: "Specify Longhorn Instance Manager Image Repository" - type: string - label: Longhorn Instance Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.tag - default: v1_20201216 - description: "Specify Longhorn Instance Manager Image Tag" - type: string - label: Longhorn Instance Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.repository - default: rancher/longhornio-longhorn-share-manager - description: "Specify Longhorn Share Manager Image Repository" - type: string - label: Longhorn Share Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.tag - default: v1_20201204 - description: "Specify Longhorn Share Manager Image Tag" - type: string - label: Longhorn Share Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.csi.attacher.repository - default: rancher/longhornio-csi-attacher - description: "Specify CSI attacher image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.attacher.tag - default: v2.2.1-lh1 - description: "Specify CSI attacher image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.repository - default: rancher/longhornio-csi-provisioner - description: "Specify CSI provisioner image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.tag - default: v1.6.0-lh1 - description: "Specify CSI provisioner image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.repository - default: rancher/longhornio-csi-node-driver-registrar - description: "Specify CSI Node Driver Registrar image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.tag - default: v1.2.0-lh1 - description: "Specify CSI Node Driver Registrar image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.repository - default: rancher/longhornio-csi-resizer - description: "Specify CSI Driver Resizer image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.tag - default: v0.5.1-lh1 - description: "Specify CSI Driver Resizer image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.repository - default: rancher/longhornio-csi-snapshotter - description: "Specify CSI Driver Snapshotter image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.tag - default: v2.1.1-lh1 - description: "Specify CSI Driver Snapshotter image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Tag - group: "Longhorn CSI Driver Images" -- variable: privateRegistry.registryUrl - label: Private registry URL - description: "URL of private registry. Leave blank to apply system default registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryUser - label: Private registry user - description: "User used to authenticate to private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryPasswd - label: Private registry password - description: "Password used to authenticate to private registry" - group: "Private Registry Settings" - type: password - default: "" -- variable: privateRegistry.registrySecret - label: Private registry secret name - description: "Longhorn will automatically generate a Kubernetes secret with this name and use it to pull images from your private registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: longhorn.default_setting - default: "false" - description: "Customize the default settings before installing Longhorn for the first time. This option will only work if the cluster hasn't installed Longhorn." - label: "Customize Default Settings" - type: boolean - show_subquestion_if: true - group: "Longhorn Default Settings" - subquestions: - - variable: csi.kubeletRootDir - default: - description: "Specify kubelet root-dir. Leave blank to autodetect." - type: string - label: Kubelet Root Directory - group: "Longhorn CSI Driver Settings" - - variable: csi.attacherReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Attacher. By default 3." - label: Longhorn CSI Attacher replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.provisionerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Provisioner. By default 3." - label: Longhorn CSI Provisioner replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.resizerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Resizer. By default 3." - label: Longhorn CSI Resizer replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.snapshotterReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Snapshotter. By default 3." - label: Longhorn CSI Snapshotter replica count - group: "Longhorn CSI Driver Settings" - - variable: defaultSettings.backupTarget - label: Backup Target - description: "The endpoint used to access the backupstore. NFS and S3 are supported." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.backupTargetCredentialSecret - label: Backup Target Credential Secret - description: "The name of the Kubernetes secret associated with the backup target." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.allowRecurringJobWhileVolumeDetached - label: Allow Recurring Job While Volume Is Detached - description: 'If this setting is enabled, Longhorn will automatically attaches the volume and takes snapshot/backup when it is the time to do recurring snapshot/backup. -Note that the volume is not ready for workload during the period when the volume was automatically attached. Workload will have to wait until the recurring job finishes.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.createDefaultDiskLabeledNodes - label: Create Default Disk on Labeled Nodes - description: 'Create default Disk automatically only on Nodes with the label "node.longhorn.io/create-default-disk=true" if no other disks exist. If disabled, the default disk will be created on all new nodes when each node is first added.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.defaultDataPath - label: Default Data Path - description: 'Default path to use for storing data on a host. By default "/var/lib/longhorn/"' - group: "Longhorn Default Settings" - type: string - default: "/var/lib/longhorn/" - - variable: defaultSettings.defaultDataLocality - label: Default Data Locality - description: 'We say a Longhorn volume has data locality if there is a local replica of the volume on the same node as the pod which is using the volume. -This setting specifies the default data locality when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `dataLocality` in the StorageClass -The available modes are: -- **disabled**. This is the default option. There may or may not be a replica on the same node as the attached volume (workload) -- **best-effort**. This option instructs Longhorn to try to keep a replica on the same node as the attached volume (workload). Longhorn will not stop the volume, even if it cannot keep a replica local to the attached volume (workload) due to environment limitation, e.g. not enough disk space, incompatible disk tags, etc.' - group: "Longhorn Default Settings" - type: enum - options: - - "disabled" - - "best-effort" - default: "disabled" - - variable: defaultSettings.replicaSoftAntiAffinity - label: Replica Node Level Soft Anti-Affinity - description: 'Allow scheduling on nodes with existing healthy replicas of the same volume. By default false.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.storageOverProvisioningPercentage - label: Storage Over Provisioning Percentage - description: "The over-provisioning percentage defines how much storage can be allocated relative to the hard drive's capacity. By default 200." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 200 - - variable: defaultSettings.storageMinimalAvailablePercentage - label: Storage Minimal Available Percentage - description: "If the minimum available disk capacity exceeds the actual percentage of available disk capacity, the disk becomes unschedulable until more space is freed up. By default 25." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 100 - default: 25 - - variable: defaultSettings.upgradeChecker - label: Enable Upgrade Checker - description: 'Upgrade Checker will check for new Longhorn version periodically. When there is a new version available, a notification will appear in the UI. By default true.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.defaultReplicaCount - label: Default Replica Count - description: "The default number of replicas when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `numberOfReplicas` in the StorageClass. By default 3." - group: "Longhorn Default Settings" - type: int - min: 1 - max: 20 - default: 3 - - variable: defaultSettings.guaranteedEngineCPU - label: Guaranteed Engine CPU - description: "Allow Longhorn Instance Managers to have guaranteed CPU allocation. By default 0.25. The value is how many CPUs should be reserved for each Engine/Replica Instance Manager Pod created by Longhorn. For example, 0.1 means one-tenth of a CPU. This will help maintain engine stability during high node workload. It only applies to the Engine/Replica Instance Manager Pods created after the setting took effect. -In order to prevent unexpected volume crash, you can use the following formula to calculate an appropriate value for this setting: -'Guaranteed Engine CPU = The estimated max Longhorn volume/replica count on a node * 0.1'. -The result of above calculation doesn't mean that's the maximum CPU resources the Longhorn workloads require. To fully exploit the Longhorn volume I/O performance, you can allocate/guarantee more CPU resources via this setting. -If it's hard to estimate the volume/replica count now, you can leave it with the default value, or allocate 1/8 of total CPU of a node. Then you can tune it when there is no running workload using Longhorn volumes. -WARNING: After this setting is changed, all the instance managers on all the nodes will be automatically restarted -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: float - default: 0.25 - - variable: defaultSettings.defaultLonghornStaticStorageClass - label: Default Longhorn Static StorageClass Name - description: "The 'storageClassName' is given to PVs and PVCs that are created for an existing Longhorn volume. The StorageClass name can also be used as a label, so it is possible to use a Longhorn StorageClass to bind a workload to an existing PV without creating a Kubernetes StorageClass object. By default 'longhorn-static'." - group: "Longhorn Default Settings" - type: string - default: "longhorn-static" - - variable: defaultSettings.backupstorePollInterval - label: Backupstore Poll Interval - description: "In seconds. The backupstore poll interval determines how often Longhorn checks the backupstore for new backups. Set to 0 to disable the polling. By default 300." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 300 - - variable: defaultSettings.taintToleration - label: Kubernetes Taint Toleration - description: "To dedicate nodes to store Longhorn replicas and reject other general workloads, set tolerations for Longhorn and add taints for the storage nodes. -All Longhorn volumes should be detached before modifying toleration settings. -We recommend setting tolerations during Longhorn deployment because the Longhorn system cannot be operated during the update. -Multiple tolerations can be set here, and these tolerations are separated by semicolon. For example: -* `key1=value1:NoSchedule; key2:NoExecute` -* `:` this toleration tolerates everything because an empty key with operator `Exists` matches all keys, values and effects -* `key1=value1:` this toleration has empty effect. It matches all effects with key `key1` -Because `kubernetes.io` is used as the key of all Kubernetes default tolerations, it should not be used in the toleration settings. -WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES!" - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.priorityClass - label: Priority Class - description: "The name of the Priority Class to set on the Longhorn workloads. This can help prevent Longhorn workloads from being evicted under Node Pressure. WARNING: DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: string - default: "" - - variable: defaultSettings.autoSalvage - label: Automatic salvage - description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly - label: Automatically Delete Workload Pod when The Volume Is Detached Unexpectedly - description: 'If enabled, Longhorn will automatically delete the workload pod that is managed by a controller (e.g. deployment, statefulset, daemonset, etc...) when Longhorn volume is detached unexpectedly (e.g. during Kubernetes upgrade, Docker reboot, or network disconnect). By deleting the pod, its controller restarts the pod and Kubernetes handles volume reattachment and remount. -If disabled, Longhorn will not delete the workload pod that is managed by a controller. You will have to manually restart the pod to reattach and remount the volume. -**Note:** This setting does not apply to the workload pods that do not have a controller. Longhorn never deletes them.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.disableSchedulingOnCordonedNode - label: Disable Scheduling On Cordoned Node - description: "Disable Longhorn manager to schedule replica on Kubernetes cordoned node. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.replicaZoneSoftAntiAffinity - label: Replica Zone Level Soft Anti-Affinity - description: "Allow scheduling new Replicas of Volume to the Nodes in the same Zone as existing healthy Replicas. Nodes don't belong to any Zone will be treated as in the same Zone. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.volumeAttachmentRecoveryPolicy - label: Volume Attachment Recovery Policy - description: "Defines the Longhorn action when a Volume is stuck with a Deployment Pod on a failed node. `wait` leads to the deletion of the volume attachment as soon as the pods deletion time has passed. `never` is the default Kubernetes behavior of never deleting volume attachments on terminating pods. `immediate` leads to the deletion of the volume attachment as soon as all workload pods are pending. By default wait." - group: "Longhorn Default Settings" - type: enum - options: - - "wait" - - "never" - - "immediate" - default: "wait" - - variable: defaultSettings.nodeDownPodDeletionPolicy - label: Pod Deletion Policy When Node is Down - description: "Defines the Longhorn action when a Volume is stuck with a StatefulSet/Deployment Pod on a node that is down. -- **do-nothing** is the default Kubernetes behavior of never force deleting StatefulSet/Deployment terminating pods. Since the pod on the node that is down isn't removed, Longhorn volumes are stuck on nodes that are down. -- **delete-statefulset-pod** Longhorn will force delete StatefulSet terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-deployment-pod** Longhorn will force delete Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-both-statefulset-and-deployment-pod** Longhorn will force delete StatefulSet/Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods." - group: "Longhorn Default Settings" - type: enum - options: - - "do-nothing" - - "delete-statefulset-pod" - - "delete-deployment-pod" - - "delete-both-statefulset-and-deployment-pod" - default: "do-nothing" - - variable: defaultSettings.allowNodeDrainWithLastHealthyReplica - label: Allow Node Drain with the Last Healthy Replica - description: "By default, Longhorn will block `kubectl drain` action on a node if the node contains the last healthy replica of a volume. -If this setting is enabled, Longhorn will **not** block `kubectl drain` action on a node even if the node contains the last healthy replica of a volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.mkfsExt4Parameters - label: Custom mkfs.ext4 parameters - description: "Allows setting additional filesystem creation parameters for ext4. For older host kernels it might be necessary to disable the optional ext4 metadata_csum feature by specifying `-O ^64bit,^metadata_csum`." - group: "Longhorn Default Settings" - type: string - - variable: defaultSettings.disableReplicaRebuild - label: Disable Replica Rebuild - description: "This setting disable replica rebuild cross the whole cluster, eviction and data locality feature won't work if this setting is true. But doesn't have any impact to any current replica rebuild and restore disaster recovery volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.replicaReplenishmentWaitInterval - label: Replica Replenishment Wait Interval - description: "In seconds. The interval determines how long Longhorn will wait at least in order to reuse the existing data on a failed replica rather than directly creating a new replica for a degraded volume. -Warning: This option works only when there is a failed replica in the volume. And this option may block the rebuilding for a while in the case." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 600 - - variable: defaultSettings.disableRevisionCounter - label: Disable Revision Counter - description: "This setting is only for volumes created by UI. By default, this is false meaning there will be a reivision counter file to track every write to the volume. During salvage recovering Longhorn will pick the repica with largest reivision counter as candidate to recover the whole volume. If revision counter is disabled, Longhorn will not track every write to the volume. During the salvage recovering, Longhorn will use the 'volume-head-xxx.img' file last modification time and file size to pick the replica candidate to recover the whole volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.systemManagedPodsImagePullPolicy - label: System Managed Pod Image Pull Policy - description: "This setting defines the Image Pull Policy of Longhorn system managed pods, e.g. instance manager, engine image, CSI driver, etc. The new Image Pull Policy will only apply after the system managed pods restart." - group: "Longhorn Default Settings" - type: enum - options: - - "if-not-present" - - "always" - - "never" - default: "if-not-present" - - variable: defaultSettings.allowVolumeCreationWithDegradedAvailability - label: Allow Volume Creation with Degraded Availability - description: "This setting allows user to create and attach a volume that doesn't have all the replicas scheduled at the time of creation." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoCleanupSystemGeneratedSnapshot - label: Automatically Cleanup System Generated Snapshot - description: "This setting enables Longhorn to automatically cleanup the system generated snapshot after replica rebuild is done." - group: "Longhorn Default Settings" - type: boolean - default: "true" -- variable: persistence.defaultClass - default: "true" - description: "Set as default StorageClass for Longhorn" - label: Default Storage Class - group: "Longhorn Storage Class Settings" - required: true - type: boolean -- variable: persistence.reclaimPolicy - label: Storage Class Retain Policy - description: "Define reclaim policy (Retain or Delete)" - group: "Longhorn Storage Class Settings" - required: true - type: enum - options: - - "Delete" - - "Retain" - default: "Delete" -- variable: persistence.defaultClassReplicaCount - description: "Set replica count for Longhorn StorageClass" - label: Default Storage Class Replica Count - group: "Longhorn Storage Class Settings" - type: int - min: 1 - max: 10 - default: 3 -- variable: persistence.recurringJobs.enable - description: "Enable recurring job for Longhorn StorageClass" - group: "Longhorn Storage Class Settings" - label: Enable Storage Class Recurring Job - type: boolean - default: false - show_subquestion_if: true - subquestions: - - variable: persistence.recurringJobs.jobList - description: 'Recurring job list for Longhorn StorageClass. Please be careful of quotes of input. e.g., [{"name":"backup", "task":"backup", "cron":"*/2 * * * *", "retain":1,"labels": {"interval":"2m"}}]' - label: Storage Class Recurring Job List - group: "Longhorn Storage Class Settings" - type: string - default: -- variable: ingress.enabled - default: "false" - description: "Expose app using Layer 7 Load Balancer - ingress" - type: boolean - group: "Services and Load Balancing" - label: Expose app using Layer 7 Load Balancer - show_subquestion_if: true - subquestions: - - variable: ingress.host - default: "xip.io" - description: "layer 7 Load Balancer hostname" - type: hostname - required: true - label: Layer 7 Load Balancer Hostname -- variable: service.ui.type - default: "Rancher-Proxy" - description: "Define Longhorn UI service type" - type: enum - options: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - - "Rancher-Proxy" - label: Longhorn UI Service - show_if: "ingress.enabled=false" - group: "Services and Load Balancing" - show_subquestion_if: "NodePort" - subquestions: - - variable: service.ui.nodePort - default: "" - description: "NodePort port number(to set explicitly, choose port between 30000-32767)" - type: int - min: 30000 - max: 32767 - show_if: "service.ui.type=NodePort||service.ui.type=LoadBalancer" - label: UI Service NodePort number -- variable: enablePSP - default: "true" - description: "Setup a pod security policy for Longhorn workloads." - label: Pod Security Policy - type: boolean - group: "Other Settings" diff --git a/charts/longhorn/longhorn/1.1.001/templates/NOTES.txt b/charts/longhorn/longhorn/1.1.001/templates/NOTES.txt deleted file mode 100755 index cca7cd77b..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Longhorn is now installed on the cluster! - -Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. - -Visit our documentation at https://longhorn.io/docs/ diff --git a/charts/longhorn/longhorn/1.1.001/templates/_helpers.tpl b/charts/longhorn/longhorn/1.1.001/templates/_helpers.tpl deleted file mode 100755 index 3fbc2ac02..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "longhorn.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "longhorn.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "longhorn.managerIP" -}} -{{- $fullname := (include "longhorn.fullname" .) -}} -{{- printf "http://%s-backend:9500" $fullname | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "secret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.privateRegistry.registryUrl (printf "%s:%s" .Values.privateRegistry.registryUser .Values.privateRegistry.registryPasswd | b64enc) | b64enc }} -{{- end }} - -{{- /* -longhorn.labels generates the standard Helm labels. -*/ -}} -{{- define "longhorn.labels" -}} -app.kubernetes.io/name: {{ template "longhorn.name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- end -}} - - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{- define "registry_url" -}} -{{- if .Values.privateRegistry.registryUrl -}} -{{- printf "%s/" .Values.privateRegistry.registryUrl -}} -{{- else -}} -{{ include "system_default_registry" . }} -{{- end -}} -{{- end -}} - -{{- /* - define the longhorn release namespace -*/ -}} -{{- define "release_namespace" -}} -{{- if .Values.namespaceOverride -}} -{{- .Values.namespaceOverride -}} -{{- else -}} -{{- .Release.Namespace -}} -{{- end -}} -{{- end -}} diff --git a/charts/longhorn/longhorn/1.1.001/templates/clusterrole.yaml b/charts/longhorn/longhorn/1.1.001/templates/clusterrole.yaml deleted file mode 100755 index c69761756..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/clusterrole.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: longhorn-role - labels: {{- include "longhorn.labels" . | nindent 4 }} -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps"] - verbs: ["*"] -- apiGroups: [""] - resources: ["namespaces"] - verbs: ["get", "list"] -- apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] -- apiGroups: ["batch"] - resources: ["jobs", "cronjobs"] - verbs: ["*"] -- apiGroups: ["policy"] - resources: ["poddisruptionbudgets"] - verbs: ["*"] -- apiGroups: ["scheduling.k8s.io"] - resources: ["priorityclasses"] - verbs: ["watch", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"] - verbs: ["*"] -- apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses", "volumesnapshots", "volumesnapshotcontents", "volumesnapshotcontents/status"] - verbs: ["*"] -- apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] -- apiGroups: ["metrics.k8s.io"] - resources: ["pods", "nodes"] - verbs: ["get", "list"] diff --git a/charts/longhorn/longhorn/1.1.001/templates/clusterrolebinding.yaml b/charts/longhorn/longhorn/1.1.001/templates/clusterrolebinding.yaml deleted file mode 100755 index 66ac62f9b..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: longhorn-bind - labels: {{- include "longhorn.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: longhorn-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/daemonset-sa.yaml b/charts/longhorn/longhorn/1.1.001/templates/daemonset-sa.yaml deleted file mode 100755 index e40793591..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/daemonset-sa.yaml +++ /dev/null @@ -1,114 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-manager - namespace: {{ include "release_namespace" . }} -spec: - selector: - matchLabels: - app: longhorn-manager - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-manager - spec: - containers: - - name: longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.engine.repository }}:{{ .Values.image.longhorn.engine.tag }}" - - --instance-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.instanceManager.repository }}:{{ .Values.image.longhorn.instanceManager.tag }}" - - --share-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.shareManager.repository }}:{{ .Values.image.longhorn.shareManager.tag }}" - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --service-account - - longhorn-service-account - ports: - - containerPort: 9500 - name: manager - readinessProbe: - tcpSocket: - port: 9500 - volumeMounts: - - name: dev - mountPath: /host/dev/ - - name: proc - mountPath: /host/proc/ - - name: varrun - mountPath: /var/run/ - mountPropagation: Bidirectional - - name: longhorn - mountPath: /var/lib/longhorn/ - mountPropagation: Bidirectional - - name: longhorn-default-setting - mountPath: /var/lib/longhorn-setting/ - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: DEFAULT_SETTING_PATH - value: /var/lib/longhorn-setting/default-setting.yaml - volumes: - - name: dev - hostPath: - path: /dev/ - - name: proc - hostPath: - path: /proc/ - - name: varrun - hostPath: - path: /var/run/ - - name: longhorn - hostPath: - path: /var/lib/longhorn/ - - name: longhorn-default-setting - configMap: - name: longhorn-default-setting - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-backend - namespace: {{ include "release_namespace" . }} -spec: - type: {{ .Values.service.manager.type }} - sessionAffinity: ClientIP - selector: - app: longhorn-manager - ports: - - name: manager - port: 9500 - targetPort: manager - {{- if .Values.service.manager.nodePort }} - nodePort: {{ .Values.service.manager.nodePort }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/default-setting.yaml b/charts/longhorn/longhorn/1.1.001/templates/default-setting.yaml deleted file mode 100755 index 14c264e27..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/default-setting.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-default-setting - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - default-setting.yaml: |- - backup-target: {{ .Values.defaultSettings.backupTarget }} - backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} - allow-recurring-job-while-volume-detached: {{ .Values.defaultSettings.allowRecurringJobWhileVolumeDetached }} - create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} - default-data-path: {{ .Values.defaultSettings.defaultDataPath }} - replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} - storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} - storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} - upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} - default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} - default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }} - guaranteed-engine-cpu: {{ .Values.defaultSettings.guaranteedEngineCPU }} - default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} - backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} - taint-toleration: {{ .Values.defaultSettings.taintToleration }} - priority-class: {{ .Values.defaultSettings.priorityClass }} - auto-salvage: {{ .Values.defaultSettings.autoSalvage }} - auto-delete-pod-when-volume-detached-unexpectedly: {{ .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly }} - disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} - replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} - volume-attachment-recovery-policy: {{ .Values.defaultSettings.volumeAttachmentRecoveryPolicy }} - node-down-pod-deletion-policy: {{ .Values.defaultSettings.nodeDownPodDeletionPolicy }} - allow-node-drain-with-last-healthy-replica: {{ .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica }} - mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} - disable-replica-rebuild: {{ .Values.defaultSettings.disableReplicaRebuild }} - replica-replenishment-wait-interval: {{ .Values.defaultSettings.replicaReplenishmentWaitInterval }} - disable-revision-counter: {{ .Values.defaultSettings.disableRevisionCounter }} - system-managed-pods-image-pull-policy: {{ .Values.defaultSettings.systemManagedPodsImagePullPolicy }} - allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }} - auto-cleanup-system-generated-snapshot: {{ .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/deployment-driver.yaml b/charts/longhorn/longhorn/1.1.001/templates/deployment-driver.yaml deleted file mode 100755 index c4b6e3587..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/deployment-driver.yaml +++ /dev/null @@ -1,93 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: longhorn-driver-deployer - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-driver-deployer - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-driver-deployer - spec: - initContainers: - - name: wait-longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] - containers: - - name: longhorn-driver-deployer - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --manager-url - - http://longhorn-backend:9500/v1 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - {{- if .Values.csi.kubeletRootDir }} - - name: KUBELET_ROOT_DIR - value: {{ .Values.csi.kubeletRootDir }} - {{- end }} - {{- if and .Values.image.csi.attacher.repository .Values.image.csi.attacher.tag }} - - name: CSI_ATTACHER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.attacher.repository }}:{{ .Values.image.csi.attacher.tag }}" - {{- end }} - {{- if and .Values.image.csi.provisioner.repository .Values.image.csi.provisioner.tag }} - - name: CSI_PROVISIONER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.provisioner.repository }}:{{ .Values.image.csi.provisioner.tag }}" - {{- end }} - {{- if and .Values.image.csi.nodeDriverRegistrar.repository .Values.image.csi.nodeDriverRegistrar.tag }} - - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.nodeDriverRegistrar.repository }}:{{ .Values.image.csi.nodeDriverRegistrar.tag }}" - {{- end }} - {{- if and .Values.image.csi.resizer.repository .Values.image.csi.resizer.tag }} - - name: CSI_RESIZER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.resizer.repository }}:{{ .Values.image.csi.resizer.tag }}" - {{- end }} - {{- if and .Values.image.csi.snapshotter.repository .Values.image.csi.snapshotter.tag }} - - name: CSI_SNAPSHOTTER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.snapshotter.repository }}:{{ .Values.image.csi.snapshotter.tag }}" - {{- end }} - {{- if .Values.csi.attacherReplicaCount }} - - name: CSI_ATTACHER_REPLICA_COUNT - value: {{ .Values.csi.attacherReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.provisionerReplicaCount }} - - name: CSI_PROVISIONER_REPLICA_COUNT - value: {{ .Values.csi.provisionerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.resizerReplicaCount }} - - name: CSI_RESIZER_REPLICA_COUNT - value: {{ .Values.csi.resizerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.snapshotterReplicaCount }} - - name: CSI_SNAPSHOTTER_REPLICA_COUNT - value: {{ .Values.csi.snapshotterReplicaCount | quote }} - {{- end }} - - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/charts/longhorn/longhorn/1.1.001/templates/deployment-ui.yaml b/charts/longhorn/longhorn/1.1.001/templates/deployment-ui.yaml deleted file mode 100755 index da7c0ea5b..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/deployment-ui.yaml +++ /dev/null @@ -1,61 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - name: longhorn-ui - namespace: {{ include "release_namespace" . }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-ui - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-ui - spec: - containers: - - name: longhorn-ui - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} ---- -kind: Service -apiVersion: v1 -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - kubernetes.io/cluster-service: "true" - {{- end }} - name: longhorn-frontend - namespace: {{ include "release_namespace" . }} -spec: - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - type: ClusterIP - {{- else }} - type: {{ .Values.service.ui.type }} - {{- end }} - selector: - app: longhorn-ui - ports: - - name: http - port: 80 - targetPort: http - {{- if .Values.service.ui.nodePort }} - nodePort: {{ .Values.service.ui.nodePort }} - {{- else }} - nodePort: null - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/ingress.yaml b/charts/longhorn/longhorn/1.1.001/templates/ingress.yaml deleted file mode 100755 index 5b3a40588..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/ingress.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: longhorn-ingress - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ingress - annotations: - {{- if .Values.ingress.tls }} - ingress.kubernetes.io/secure-backends: "true" - {{- end }} - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - rules: - - host: {{ .Values.ingress.host }} - http: - paths: - - path: {{ default "" .Values.ingress.path }} - backend: - serviceName: longhorn-frontend - servicePort: 80 -{{- if .Values.ingress.tls }} - tls: - - hosts: - - {{ .Values.ingress.host }} - secretName: {{ .Values.ingress.tlsSecret }} -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/postupgrade-job.yaml b/charts/longhorn/longhorn/1.1.001/templates/postupgrade-job.yaml deleted file mode 100755 index 6b6a38591..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/postupgrade-job.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation - name: longhorn-post-upgrade - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-post-upgrade - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-post-upgrade - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - post-upgrade - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.1.001/templates/psp.yaml b/charts/longhorn/longhorn/1.1.001/templates/psp.yaml deleted file mode 100755 index a2dfc05be..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.enablePSP }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: longhorn-psp - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - privileged: true - allowPrivilegeEscalation: true - requiredDropCapabilities: - - NET_RAW - allowedCapabilities: - - SYS_ADMIN - hostNetwork: false - hostIPC: false - hostPID: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - fsGroup: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - secret - - projected - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: longhorn-psp-role - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -rules: -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - longhorn-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: longhorn-psp-binding - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: longhorn-psp-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} -- kind: ServiceAccount - name: default - namespace: {{ include "release_namespace" . }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/registry-secret.yml b/charts/longhorn/longhorn/1.1.001/templates/registry-secret.yml deleted file mode 100755 index 1c7565fea..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/registry-secret.yml +++ /dev/null @@ -1,11 +0,0 @@ -{{- if .Values.privateRegistry.registrySecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Values.privateRegistry.registrySecret }} - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "secret" . }} -{{- end }} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.1.001/templates/serviceaccount.yaml b/charts/longhorn/longhorn/1.1.001/templates/serviceaccount.yaml deleted file mode 100755 index ad576c353..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/storageclass.yaml b/charts/longhorn/longhorn/1.1.001/templates/storageclass.yaml deleted file mode 100755 index dea6aafd4..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/storageclass.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-storageclass - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - storageclass.yaml: | - kind: StorageClass - apiVersion: storage.k8s.io/v1 - metadata: - name: longhorn - annotations: - storageclass.kubernetes.io/is-default-class: {{ .Values.persistence.defaultClass | quote }} - provisioner: driver.longhorn.io - allowVolumeExpansion: true - reclaimPolicy: "{{ .Values.persistence.reclaimPolicy }}" - volumeBindingMode: Immediate - parameters: - numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}" - staleReplicaTimeout: "30" - fromBackup: "" - baseImage: "" - {{- if .Values.persistence.recurringJobs.enable }} - recurringJobs: '{{ .Values.persistence.recurringJobs.jobList }}' - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/tls-secrets.yaml b/charts/longhorn/longhorn/1.1.001/templates/tls-secrets.yaml deleted file mode 100755 index a7ebf13e0..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/tls-secrets.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: longhorn - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.001/templates/uninstall-job.yaml b/charts/longhorn/longhorn/1.1.001/templates/uninstall-job.yaml deleted file mode 100755 index e7e9f1457..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/uninstall-job.yaml +++ /dev/null @@ -1,36 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - name: longhorn-uninstall - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-uninstall - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-uninstall - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - uninstall - - --force - env: - - name: LONGHORN_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - serviceAccountName: longhorn-service-account diff --git a/charts/longhorn/longhorn/1.1.001/templates/userroles.yaml b/charts/longhorn/longhorn/1.1.001/templates/userroles.yaml deleted file mode 100755 index 37e8e3ddb..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/userroles.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-edit" - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-view" - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status"] - verbs: [ "get", "list", "watch" ] diff --git a/charts/longhorn/longhorn/1.1.001/templates/validate-install-crd.yaml b/charts/longhorn/longhorn/1.1.001/templates/validate-install-crd.yaml deleted file mode 100755 index a4be98416..000000000 --- a/charts/longhorn/longhorn/1.1.001/templates/validate-install-crd.yaml +++ /dev/null @@ -1,21 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "longhorn.io/v1beta1/Engine" false -}} -# {{- set $found "longhorn.io/v1beta1/Replica" false -}} -# {{- set $found "longhorn.io/v1beta1/Setting" false -}} -# {{- set $found "longhorn.io/v1beta1/Volume" false -}} -# {{- set $found "longhorn.io/v1beta1/EngineImage" false -}} -# {{- set $found "longhorn.io/v1beta1/Node" false -}} -# {{- set $found "longhorn.io/v1beta1/InstanceManager" false -}} -# {{- set $found "longhorn.io/v1beta1/ShareManager" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.1.001/values.yaml b/charts/longhorn/longhorn/1.1.001/values.yaml deleted file mode 100755 index b1d0995d9..000000000 --- a/charts/longhorn/longhorn/1.1.001/values.yaml +++ /dev/null @@ -1,162 +0,0 @@ -# Default values for longhorn. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -global: - cattle: - systemDefaultRegistry: "" - -image: - longhorn: - engine: - repository: rancher/mirrored-longhornio-longhorn-engine - tag: v1.1.0 - manager: - repository: rancher/mirrored-longhornio-longhorn-manager - tag: v1.1.0 - ui: - repository: rancher/mirrored-longhornio-longhorn-ui - tag: v1.1.0 - instanceManager: - repository: rancher/mirrored-longhornio-longhorn-instance-manager - tag: v1_20201216 - shareManager: - repository: rancher/mirrored-longhornio-longhorn-share-manager - tag: v1_20201204 - csi: - attacher: - repository: rancher/mirrored-longhornio-csi-attacher - tag: v2.2.1-lh1 - provisioner: - repository: rancher/mirrored-longhornio-csi-provisioner - tag: v1.6.0-lh1 - nodeDriverRegistrar: - repository: rancher/mirrored-longhornio-csi-node-driver-registrar - tag: v1.2.0-lh1 - resizer: - repository: rancher/mirrored-longhornio-csi-resizer - tag: v0.5.1-lh1 - snapshotter: - repository: rancher/mirrored-longhornio-csi-snapshotter - tag: v2.1.1-lh1 - pullPolicy: IfNotPresent - -service: - ui: - type: ClusterIP - nodePort: null - manager: - type: ClusterIP - nodePort: "" - -persistence: - defaultClass: true - defaultClassReplicaCount: 3 - reclaimPolicy: Delete - recurringJobs: - enable: false - jobList: [] - -csi: - kubeletRootDir: ~ - attacherReplicaCount: ~ - provisionerReplicaCount: ~ - resizerReplicaCount: ~ - snapshotterReplicaCount: ~ - -defaultSettings: - backupTarget: ~ - backupTargetCredentialSecret: ~ - allowRecurringJobWhileVolumeDetached: ~ - createDefaultDiskLabeledNodes: ~ - defaultDataPath: ~ - defaultDataLocality: ~ - replicaSoftAntiAffinity: ~ - storageOverProvisioningPercentage: ~ - storageMinimalAvailablePercentage: ~ - upgradeChecker: ~ - defaultReplicaCount: ~ - guaranteedEngineCPU: ~ - defaultLonghornStaticStorageClass: ~ - backupstorePollInterval: ~ - taintToleration: ~ - priorityClass: ~ - autoSalvage: ~ - autoDeletePodWhenVolumeDetachedUnexpectedly: ~ - disableSchedulingOnCordonedNode: ~ - replicaZoneSoftAntiAffinity: ~ - volumeAttachmentRecoveryPolicy: ~ - nodeDownPodDeletionPolicy: ~ - allowNodeDrainWithLastHealthyReplica: ~ - mkfsExt4Parameters: ~ - disableReplicaRebuild: ~ - replicaReplenishmentWaitInterval: ~ - disableRevisionCounter: ~ - systemManagedPodsImagePullPolicy: ~ - allowVolumeCreationWithDegradedAvailability: ~ - autoCleanupSystemGeneratedSnapshot: ~ - -privateRegistry: - registryUrl: ~ - registryUser: ~ - registryPasswd: ~ - registrySecret: ~ - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - # - -ingress: - ## Set to true to enable ingress record generation - enabled: false - - - host: xip.io - - ## Set this to true in order to enable TLS on the ingress record - ## A side effect of this will be that the backend service will be connected at port 443 - tls: false - - ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS - tlsSecret: longhorn.local-tls - - ## Ingress annotations done as key:value pairs - ## If you're using kube-lego, you will want to add: - ## kubernetes.io/tls-acme: true - ## - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md - ## - ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set - annotations: - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: true - - secrets: - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using kube-lego, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - # - name: longhorn.local-tls - # key: - # certificate: - -# Configure a pod security policy in the Longhorn namespace to allow privileged pods -enablePSP: true - -## Specify override namespace, specifically this is useful for using longhorn as sub-chart -## and its release namespace is not the `longhorn-system` -namespaceOverride: "" diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/.helmignore b/charts/longhorn/longhorn/1.1.100+up1.1.1/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/Chart.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/Chart.yaml deleted file mode 100644 index 780ab2d24..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/Chart.yaml +++ /dev/null @@ -1,37 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: longhorn-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Longhorn - catalog.cattle.io/namespace: longhorn-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: longhorn.io/v1beta1 - catalog.cattle.io/release-name: longhorn - catalog.cattle.io/ui-component: longhorn -apiVersion: v1 -appVersion: v1.1.1 -description: Longhorn is a distributed block storage system for Kubernetes. -home: https://github.com/longhorn/longhorn -icon: https://raw.githubusercontent.com/cncf/artwork/master/projects/longhorn/icon/color/longhorn-icon-color.png -keywords: -- longhorn -- storage -- distributed -- block -- device -- iscsi -- nfs -kubeVersion: '>=v1.16.0-r0' -maintainers: -- email: maintainers@longhorn.io - name: Longhorn maintainers -name: longhorn -sources: -- https://github.com/longhorn/longhorn -- https://github.com/longhorn/longhorn-engine -- https://github.com/longhorn/longhorn-instance-manager -- https://github.com/longhorn/longhorn-share-manager -- https://github.com/longhorn/longhorn-manager -- https://github.com/longhorn/longhorn-ui -- https://github.com/longhorn/longhorn-tests -- https://github.com/longhorn/backing-image-manager -version: 1.1.100+up1.1.1 diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/README.md b/charts/longhorn/longhorn/1.1.100+up1.1.1/README.md deleted file mode 100644 index e147f8e8f..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Longhorn Chart - -> **Important**: Please install the Longhorn chart in the `longhorn-system` namespace only. - -> **Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -## Source Code - -Longhorn is 100% open source software. Project source code is spread across a number of repos: - -1. Longhorn Engine -- Core controller/replica logic https://github.com/longhorn/longhorn-engine -2. Longhorn Instance Manager -- Controller/replica instance lifecycle management https://github.com/longhorn/longhorn-instance-manager -3. Longhorn Share Manager -- NFS provisioner that exposes Longhorn volumes as ReadWriteMany volumes. https://github.com/longhorn/longhorn-share-manager -4. Longhorn Manager -- Longhorn orchestration, includes CSI driver for Kubernetes https://github.com/longhorn/longhorn-manager -5. Longhorn UI -- Dashboard https://github.com/longhorn/longhorn-ui - -## Prerequisites - -1. A container runtime compatible with Kubernetes (Docker v1.13+, containerd v1.3.7+, etc.) -2. Kubernetes v1.16+ -3. Make sure `curl`, `findmnt`, `grep`, `awk` and `blkid` has been installed in all nodes of the Kubernetes cluster. -4. Make sure `open-iscsi` has been installed, and the `iscsid` daemon is running on all nodes of the Kubernetes cluster. For GKE, recommended Ubuntu as guest OS image since it contains `open-iscsi` already. - -## Uninstallation - -To prevent damage to the Kubernetes cluster, we recommend deleting all Kubernetes workloads using Longhorn volumes (PersistentVolume, PersistentVolumeClaim, StorageClass, Deployment, StatefulSet, DaemonSet, etc). - -From Rancher Cluster Explorer UI, navigate to Apps page, delete app `longhorn` then app `longhorn-crd` in Installed Apps tab. - - ---- -Please see [link](https://github.com/longhorn/longhorn) for more information. diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/app-readme.md b/charts/longhorn/longhorn/1.1.100+up1.1.1/app-readme.md deleted file mode 100644 index cb23135ca..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Longhorn - -Longhorn is a lightweight, reliable and easy to use distributed block storage system for Kubernetes. Once deployed, users can leverage persistent volumes provided by Longhorn. - -Longhorn creates a dedicated storage controller for each volume and synchronously replicates the volume across multiple replicas stored on multiple nodes. The storage controller and replicas are themselves orchestrated using Kubernetes. Longhorn supports snapshots, backups and even allows you to schedule recurring snapshots and backups! - -**Important**: Please install Longhorn chart in `longhorn-system` namespace only. - -**Warning**: Longhorn doesn't support downgrading from a higher version to a lower version. - -[Chart Documentation](https://github.com/longhorn/longhorn/blob/master/chart/README.md) diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/questions.yml b/charts/longhorn/longhorn/1.1.100+up1.1.1/questions.yml deleted file mode 100644 index 143b45014..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/questions.yml +++ /dev/null @@ -1,542 +0,0 @@ -categories: -- storage -namespace: longhorn-system -questions: -- variable: image.defaultImage - default: "true" - description: "Use default Longhorn images" - label: Use Default Images - type: boolean - show_subquestion_if: false - group: "Longhorn Images" - subquestions: - - variable: image.longhorn.manager.repository - default: rancher/mirrored-longhornio-longhorn-manager - description: "Specify Longhorn Manager Image Repository" - type: string - label: Longhorn Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.manager.tag - default: v1.1.1 - description: "Specify Longhorn Manager Image Tag" - type: string - label: Longhorn Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.repository - default: rancher/mirrored-longhornio-longhorn-engine - description: "Specify Longhorn Engine Image Repository" - type: string - label: Longhorn Engine Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.engine.tag - default: v1.1.1 - description: "Specify Longhorn Engine Image Tag" - type: string - label: Longhorn Engine Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.repository - default: rancher/mirrored-longhornio-longhorn-ui - description: "Specify Longhorn UI Image Repository" - type: string - label: Longhorn UI Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.ui.tag - default: v1.1.1 - description: "Specify Longhorn UI Image Tag" - type: string - label: Longhorn UI Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.repository - default: rancher/mirrored-longhornio-longhorn-instance-manager - description: "Specify Longhorn Instance Manager Image Repository" - type: string - label: Longhorn Instance Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.instanceManager.tag - default: v1_20201216 - description: "Specify Longhorn Instance Manager Image Tag" - type: string - label: Longhorn Instance Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.repository - default: rancher/mirrored-longhornio-longhorn-share-manager - description: "Specify Longhorn Share Manager Image Repository" - type: string - label: Longhorn Share Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.shareManager.tag - default: v1_20210416 - description: "Specify Longhorn Share Manager Image Tag" - type: string - label: Longhorn Share Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.longhorn.backingImageManager.repository - default: rancher/mirrored-longhornio-backing-image-manager - description: "Specify Longhorn Backing Image Manager Image Repository" - type: string - label: Longhorn Backing Image Manager Image Repository - group: "Longhorn Images Settings" - - variable: image.longhorn.backingImageManager.tag - default: v1_20210422 - description: "Specify Longhorn Backing Image Manager Image Tag" - type: string - label: Longhorn Backing Image Manager Image Tag - group: "Longhorn Images Settings" - - variable: image.csi.attacher.repository - default: rancher/mirrored-longhornio-csi-attacher - description: "Specify CSI attacher image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.attacher.tag - default: v2.2.1-lh1 - description: "Specify CSI attacher image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Attacher Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.repository - default: rancher/mirrored-longhornio-csi-provisioner - description: "Specify CSI provisioner image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.provisioner.tag - default: v1.6.0-lh1 - description: "Specify CSI provisioner image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Provisioner Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.repository - default: rancher/mirrored-longhornio-csi-node-driver-registrar - description: "Specify CSI Node Driver Registrar image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.nodeDriverRegistrar.tag - default: v1.2.0-lh1 - description: "Specify CSI Node Driver Registrar image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Node Driver Registrar Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.repository - default: rancher/mirrored-longhornio-csi-resizer - description: "Specify CSI Driver Resizer image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.resizer.tag - default: v0.5.1-lh1 - description: "Specify CSI Driver Resizer image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Resizer Image Tag - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.repository - default: rancher/mirrored-longhornio-csi-snapshotter - description: "Specify CSI Driver Snapshotter image repository. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Repository - group: "Longhorn CSI Driver Images" - - variable: image.csi.snapshotter.tag - default: v2.1.1-lh1 - description: "Specify CSI Driver Snapshotter image tag. Leave blank to autodetect." - type: string - label: Longhorn CSI Driver Snapshotter Image Tag - group: "Longhorn CSI Driver Images" -- variable: privateRegistry.registryUrl - label: Private registry URL - description: "URL of private registry. Leave blank to apply system default registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryUser - label: Private registry user - description: "User used to authenticate to private registry" - group: "Private Registry Settings" - type: string - default: "" -- variable: privateRegistry.registryPasswd - label: Private registry password - description: "Password used to authenticate to private registry" - group: "Private Registry Settings" - type: password - default: "" -- variable: privateRegistry.registrySecret - label: Private registry secret name - description: "Longhorn will automatically generate a Kubernetes secret with this name and use it to pull images from your private registry." - group: "Private Registry Settings" - type: string - default: "" -- variable: longhorn.default_setting - default: "false" - description: "Customize the default settings before installing Longhorn for the first time. This option will only work if the cluster hasn't installed Longhorn." - label: "Customize Default Settings" - type: boolean - show_subquestion_if: true - group: "Longhorn Default Settings" - subquestions: - - variable: csi.kubeletRootDir - default: - description: "Specify kubelet root-dir. Leave blank to autodetect." - type: string - label: Kubelet Root Directory - group: "Longhorn CSI Driver Settings" - - variable: csi.attacherReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Attacher. By default 3." - label: Longhorn CSI Attacher replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.provisionerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Provisioner. By default 3." - label: Longhorn CSI Provisioner replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.resizerReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Resizer. By default 3." - label: Longhorn CSI Resizer replica count - group: "Longhorn CSI Driver Settings" - - variable: csi.snapshotterReplicaCount - type: int - default: 3 - min: 1 - max: 10 - description: "Specify replica count of CSI Snapshotter. By default 3." - label: Longhorn CSI Snapshotter replica count - group: "Longhorn CSI Driver Settings" - - variable: defaultSettings.backupTarget - label: Backup Target - description: "The endpoint used to access the backupstore. NFS and S3 are supported." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.backupTargetCredentialSecret - label: Backup Target Credential Secret - description: "The name of the Kubernetes secret associated with the backup target." - group: "Longhorn Default Settings" - type: string - default: - - variable: defaultSettings.allowRecurringJobWhileVolumeDetached - label: Allow Recurring Job While Volume Is Detached - description: 'If this setting is enabled, Longhorn will automatically attaches the volume and takes snapshot/backup when it is the time to do recurring snapshot/backup. -Note that the volume is not ready for workload during the period when the volume was automatically attached. Workload will have to wait until the recurring job finishes.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.createDefaultDiskLabeledNodes - label: Create Default Disk on Labeled Nodes - description: 'Create default Disk automatically only on Nodes with the label "node.longhorn.io/create-default-disk=true" if no other disks exist. If disabled, the default disk will be created on all new nodes when each node is first added.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.defaultDataPath - label: Default Data Path - description: 'Default path to use for storing data on a host. By default "/var/lib/longhorn/"' - group: "Longhorn Default Settings" - type: string - default: "/var/lib/longhorn/" - - variable: defaultSettings.defaultDataLocality - label: Default Data Locality - description: 'We say a Longhorn volume has data locality if there is a local replica of the volume on the same node as the pod which is using the volume. -This setting specifies the default data locality when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `dataLocality` in the StorageClass -The available modes are: -- **disabled**. This is the default option. There may or may not be a replica on the same node as the attached volume (workload) -- **best-effort**. This option instructs Longhorn to try to keep a replica on the same node as the attached volume (workload). Longhorn will not stop the volume, even if it cannot keep a replica local to the attached volume (workload) due to environment limitation, e.g. not enough disk space, incompatible disk tags, etc.' - group: "Longhorn Default Settings" - type: enum - options: - - "disabled" - - "best-effort" - default: "disabled" - - variable: defaultSettings.replicaSoftAntiAffinity - label: Replica Node Level Soft Anti-Affinity - description: 'Allow scheduling on nodes with existing healthy replicas of the same volume. By default false.' - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.storageOverProvisioningPercentage - label: Storage Over Provisioning Percentage - description: "The over-provisioning percentage defines how much storage can be allocated relative to the hard drive's capacity. By default 200." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 200 - - variable: defaultSettings.storageMinimalAvailablePercentage - label: Storage Minimal Available Percentage - description: "If the minimum available disk capacity exceeds the actual percentage of available disk capacity, the disk becomes unschedulable until more space is freed up. By default 25." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 100 - default: 25 - - variable: defaultSettings.upgradeChecker - label: Enable Upgrade Checker - description: 'Upgrade Checker will check for new Longhorn version periodically. When there is a new version available, a notification will appear in the UI. By default true.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.defaultReplicaCount - label: Default Replica Count - description: "The default number of replicas when a volume is created from the Longhorn UI. For Kubernetes configuration, update the `numberOfReplicas` in the StorageClass. By default 3." - group: "Longhorn Default Settings" - type: int - min: 1 - max: 20 - default: 3 - - variable: defaultSettings.defaultLonghornStaticStorageClass - label: Default Longhorn Static StorageClass Name - description: "The 'storageClassName' is given to PVs and PVCs that are created for an existing Longhorn volume. The StorageClass name can also be used as a label, so it is possible to use a Longhorn StorageClass to bind a workload to an existing PV without creating a Kubernetes StorageClass object. By default 'longhorn-static'." - group: "Longhorn Default Settings" - type: string - default: "longhorn-static" - - variable: defaultSettings.backupstorePollInterval - label: Backupstore Poll Interval - description: "In seconds. The backupstore poll interval determines how often Longhorn checks the backupstore for new backups. Set to 0 to disable the polling. By default 300." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 300 - - variable: defaultSettings.autoSalvage - label: Automatic salvage - description: "If enabled, volumes will be automatically salvaged when all the replicas become faulty e.g. due to network disconnection. Longhorn will try to figure out which replica(s) are usable, then use them for the volume. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly - label: Automatically Delete Workload Pod when The Volume Is Detached Unexpectedly - description: 'If enabled, Longhorn will automatically delete the workload pod that is managed by a controller (e.g. deployment, statefulset, daemonset, etc...) when Longhorn volume is detached unexpectedly (e.g. during Kubernetes upgrade, Docker reboot, or network disconnect). By deleting the pod, its controller restarts the pod and Kubernetes handles volume reattachment and remount. -If disabled, Longhorn will not delete the workload pod that is managed by a controller. You will have to manually restart the pod to reattach and remount the volume. -**Note:** This setting does not apply to the workload pods that do not have a controller. Longhorn never deletes them.' - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.disableSchedulingOnCordonedNode - label: Disable Scheduling On Cordoned Node - description: "Disable Longhorn manager to schedule replica on Kubernetes cordoned node. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.replicaZoneSoftAntiAffinity - label: Replica Zone Level Soft Anti-Affinity - description: "Allow scheduling new Replicas of Volume to the Nodes in the same Zone as existing healthy Replicas. Nodes don't belong to any Zone will be treated as in the same Zone. By default true." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.volumeAttachmentRecoveryPolicy - label: Volume Attachment Recovery Policy - description: "Defines the Longhorn action when a Volume is stuck with a Deployment Pod on a failed node. `wait` leads to the deletion of the volume attachment as soon as the pods deletion time has passed. `never` is the default Kubernetes behavior of never deleting volume attachments on terminating pods. `immediate` leads to the deletion of the volume attachment as soon as all workload pods are pending. By default wait." - group: "Longhorn Default Settings" - type: enum - options: - - "wait" - - "never" - - "immediate" - default: "wait" - - variable: defaultSettings.nodeDownPodDeletionPolicy - label: Pod Deletion Policy When Node is Down - description: "Defines the Longhorn action when a Volume is stuck with a StatefulSet/Deployment Pod on a node that is down. -- **do-nothing** is the default Kubernetes behavior of never force deleting StatefulSet/Deployment terminating pods. Since the pod on the node that is down isn't removed, Longhorn volumes are stuck on nodes that are down. -- **delete-statefulset-pod** Longhorn will force delete StatefulSet terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-deployment-pod** Longhorn will force delete Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods. -- **delete-both-statefulset-and-deployment-pod** Longhorn will force delete StatefulSet/Deployment terminating pods on nodes that are down to release Longhorn volumes so that Kubernetes can spin up replacement pods." - group: "Longhorn Default Settings" - type: enum - options: - - "do-nothing" - - "delete-statefulset-pod" - - "delete-deployment-pod" - - "delete-both-statefulset-and-deployment-pod" - default: "do-nothing" - - variable: defaultSettings.allowNodeDrainWithLastHealthyReplica - label: Allow Node Drain with the Last Healthy Replica - description: "By default, Longhorn will block `kubectl drain` action on a node if the node contains the last healthy replica of a volume. -If this setting is enabled, Longhorn will **not** block `kubectl drain` action on a node even if the node contains the last healthy replica of a volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.mkfsExt4Parameters - label: Custom mkfs.ext4 parameters - description: "Allows setting additional filesystem creation parameters for ext4. For older host kernels it might be necessary to disable the optional ext4 metadata_csum feature by specifying `-O ^64bit,^metadata_csum`." - group: "Longhorn Default Settings" - type: string - - variable: defaultSettings.disableReplicaRebuild - label: Disable Replica Rebuild - description: "This setting disable replica rebuild cross the whole cluster, eviction and data locality feature won't work if this setting is true. But doesn't have any impact to any current replica rebuild and restore disaster recovery volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.replicaReplenishmentWaitInterval - label: Replica Replenishment Wait Interval - description: "In seconds. The interval determines how long Longhorn will wait at least in order to reuse the existing data on a failed replica rather than directly creating a new replica for a degraded volume. -Warning: This option works only when there is a failed replica in the volume. And this option may block the rebuilding for a while in the case." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 600 - - variable: defaultSettings.disableRevisionCounter - label: Disable Revision Counter - description: "This setting is only for volumes created by UI. By default, this is false meaning there will be a reivision counter file to track every write to the volume. During salvage recovering Longhorn will pick the repica with largest reivision counter as candidate to recover the whole volume. If revision counter is disabled, Longhorn will not track every write to the volume. During the salvage recovering, Longhorn will use the 'volume-head-xxx.img' file last modification time and file size to pick the replica candidate to recover the whole volume." - group: "Longhorn Default Settings" - type: boolean - default: "false" - - variable: defaultSettings.systemManagedPodsImagePullPolicy - label: System Managed Pod Image Pull Policy - description: "This setting defines the Image Pull Policy of Longhorn system managed pods, e.g. instance manager, engine image, CSI driver, etc. The new Image Pull Policy will only apply after the system managed pods restart." - group: "Longhorn Default Settings" - type: enum - options: - - "if-not-present" - - "always" - - "never" - default: "if-not-present" - - variable: defaultSettings.allowVolumeCreationWithDegradedAvailability - label: Allow Volume Creation with Degraded Availability - description: "This setting allows user to create and attach a volume that doesn't have all the replicas scheduled at the time of creation." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.autoCleanupSystemGeneratedSnapshot - label: Automatically Cleanup System Generated Snapshot - description: "This setting enables Longhorn to automatically cleanup the system generated snapshot after replica rebuild is done." - group: "Longhorn Default Settings" - type: boolean - default: "true" - - variable: defaultSettings.concurrentAutomaticEngineUpgradePerNodeLimit - label: Concurrent Automatic Engine Upgrade Per Node Limit - description: "This setting controls how Longhorn automatically upgrades volumes' engines to the new default engine image after upgrading Longhorn manager. The value of this setting specifies the maximum number of engines per node that are allowed to upgrade to the default engine image at the same time. If the value is 0, Longhorn will not automatically upgrade volumes' engines to default version." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 0 - - variable: defaultSettings.backingImageCleanupWaitInterval - label: Backing Image Cleanup Wait Interval - description: "This interval in minutes determines how long Longhorn will wait before cleaning up the backing image file when there is no replica in the disk using it." - group: "Longhorn Default Settings" - type: int - min: 0 - default: 60 - - variable: defaultSettings.guaranteedEngineManagerCPU - label: Guaranteed Engine Manager CPU - description: "This integer value indicates how many percentage of the total allocatable CPU on each node will be reserved for each engine manager Pod. For example, 10 means 10% of the total CPU on a node will be allocated to each engine manager pod on this node. This will help maintain engine stability during high node workload. - In order to prevent unexpected volume engine crash as well as guarantee a relative acceptable IO performance, you can use the following formula to calculate a value for this setting: - Guaranteed Engine Manager CPU = The estimated max Longhorn volume engine count on a node * 0.1 / The total allocatable CPUs on the node * 100. - The result of above calculation doesn't mean that's the maximum CPU resources the Longhorn workloads require. To fully exploit the Longhorn volume I/O performance, you can allocate/guarantee more CPU resources via this setting. - If it's hard to estimate the usage now, you can leave it with the default value, which is 12%. Then you can tune it when there is no running workload using Longhorn volumes. - WARNING: - - Value 0 means unsetting CPU requests for engine manager pods. - - Considering the possible new instance manager pods in the further system upgrade, this integer value is range from 0 to 40. And the sum with setting 'Guaranteed Engine Manager CPU' should not be greater than 40. - - One more set of instance manager pods may need to be deployed when the Longhorn system is upgraded. If current available CPUs of the nodes are not enough for the new instance manager pods, you need to detach the volumes using the oldest instance manager pods so that Longhorn can clean up the old pods automatically and release the CPU resources. And the new pods with the latest instance manager image will be launched then. - - This global setting will be ignored for a node if the field \"EngineManagerCPURequest\" on the node is set. - - After this setting is changed, all engine manager pods using this global setting on all the nodes will be automatically restarted. In other words, DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 40 - default: 12 - - variable: defaultSettings.guaranteedReplicaManagerCPU - label: Guaranteed Replica Manager CPU - description: "This integer value indicates how many percentage of the total allocatable CPU on each node will be reserved for each replica manager Pod. 10 means 10% of the total CPU on a node will be allocated to each replica manager pod on this node. This will help maintain replica stability during high node workload. - In order to prevent unexpected volume replica crash as well as guarantee a relative acceptable IO performance, you can use the following formula to calculate a value for this setting: - Guaranteed Replica Manager CPU = The estimated max Longhorn volume replica count on a node * 0.1 / The total allocatable CPUs on the node * 100. - The result of above calculation doesn't mean that's the maximum CPU resources the Longhorn workloads require. To fully exploit the Longhorn volume I/O performance, you can allocate/guarantee more CPU resources via this setting. - If it's hard to estimate the usage now, you can leave it with the default value, which is 12%. Then you can tune it when there is no running workload using Longhorn volumes. - WARNING: - - Value 0 means unsetting CPU requests for replica manager pods. - - Considering the possible new instance manager pods in the further system upgrade, this integer value is range from 0 to 40. And the sum with setting 'Guaranteed Replica Manager CPU' should not be greater than 40. - - One more set of instance manager pods may need to be deployed when the Longhorn system is upgraded. If current available CPUs of the nodes are not enough for the new instance manager pods, you need to detach the volumes using the oldest instance manager pods so that Longhorn can clean up the old pods automatically and release the CPU resources. And the new pods with the latest instance manager image will be launched then. - - This global setting will be ignored for a node if the field \"ReplicaManagerCPURequest\" on the node is set. - - After this setting is changed, all replica manager pods using this global setting on all the nodes will be automatically restarted. In other words, DO NOT CHANGE THIS SETTING WITH ATTACHED VOLUMES." - group: "Longhorn Default Settings" - type: int - min: 0 - max: 40 - default: 12 -- variable: persistence.defaultClass - default: "true" - description: "Set as default StorageClass for Longhorn" - label: Default Storage Class - group: "Longhorn Storage Class Settings" - required: true - type: boolean -- variable: persistence.reclaimPolicy - label: Storage Class Retain Policy - description: "Define reclaim policy (Retain or Delete)" - group: "Longhorn Storage Class Settings" - required: true - type: enum - options: - - "Delete" - - "Retain" - default: "Delete" -- variable: persistence.defaultClassReplicaCount - description: "Set replica count for Longhorn StorageClass" - label: Default Storage Class Replica Count - group: "Longhorn Storage Class Settings" - type: int - min: 1 - max: 10 - default: 3 -- variable: persistence.recurringJobs.enable - description: "Enable recurring job for Longhorn StorageClass" - group: "Longhorn Storage Class Settings" - label: Enable Storage Class Recurring Job - type: boolean - default: false - show_subquestion_if: true - subquestions: - - variable: persistence.recurringJobs.jobList - description: 'Recurring job list for Longhorn StorageClass. Please be careful of quotes of input. e.g., [{"name":"backup", "task":"backup", "cron":"*/2 * * * *", "retain":1,"labels": {"interval":"2m"}}]' - label: Storage Class Recurring Job List - group: "Longhorn Storage Class Settings" - type: string - default: -- variable: ingress.enabled - default: "false" - description: "Expose app using Layer 7 Load Balancer - ingress" - type: boolean - group: "Services and Load Balancing" - label: Expose app using Layer 7 Load Balancer - show_subquestion_if: true - subquestions: - - variable: ingress.host - default: "xip.io" - description: "layer 7 Load Balancer hostname" - type: hostname - required: true - label: Layer 7 Load Balancer Hostname -- variable: service.ui.type - default: "Rancher-Proxy" - description: "Define Longhorn UI service type" - type: enum - options: - - "ClusterIP" - - "NodePort" - - "LoadBalancer" - - "Rancher-Proxy" - label: Longhorn UI Service - show_if: "ingress.enabled=false" - group: "Services and Load Balancing" - show_subquestion_if: "NodePort" - subquestions: - - variable: service.ui.nodePort - default: "" - description: "NodePort port number(to set explicitly, choose port between 30000-32767)" - type: int - min: 30000 - max: 32767 - show_if: "service.ui.type=NodePort||service.ui.type=LoadBalancer" - label: UI Service NodePort number -- variable: enablePSP - default: "true" - description: "Setup a pod security policy for Longhorn workloads." - label: Pod Security Policy - type: boolean - group: "Other Settings" diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/NOTES.txt b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/NOTES.txt deleted file mode 100644 index cca7cd77b..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Longhorn is now installed on the cluster! - -Please wait a few minutes for other Longhorn components such as CSI deployments, Engine Images, and Instance Managers to be initialized. - -Visit our documentation at https://longhorn.io/docs/ diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/_helpers.tpl b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/_helpers.tpl deleted file mode 100644 index 3fbc2ac02..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "longhorn.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "longhorn.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "longhorn.managerIP" -}} -{{- $fullname := (include "longhorn.fullname" .) -}} -{{- printf "http://%s-backend:9500" $fullname | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{- define "secret" }} -{{- printf "{\"auths\": {\"%s\": {\"auth\": \"%s\"}}}" .Values.privateRegistry.registryUrl (printf "%s:%s" .Values.privateRegistry.registryUser .Values.privateRegistry.registryPasswd | b64enc) | b64enc }} -{{- end }} - -{{- /* -longhorn.labels generates the standard Helm labels. -*/ -}} -{{- define "longhorn.labels" -}} -app.kubernetes.io/name: {{ template "longhorn.name" . }} -helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/instance: {{ .Release.Name }} -app.kubernetes.io/version: {{ .Chart.AppVersion }} -{{- end -}} - - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{- define "registry_url" -}} -{{- if .Values.privateRegistry.registryUrl -}} -{{- printf "%s/" .Values.privateRegistry.registryUrl -}} -{{- else -}} -{{ include "system_default_registry" . }} -{{- end -}} -{{- end -}} - -{{- /* - define the longhorn release namespace -*/ -}} -{{- define "release_namespace" -}} -{{- if .Values.namespaceOverride -}} -{{- .Values.namespaceOverride -}} -{{- else -}} -{{- .Release.Namespace -}} -{{- end -}} -{{- end -}} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrole.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrole.yaml deleted file mode 100644 index cd5aafb50..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrole.yaml +++ /dev/null @@ -1,47 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: longhorn-role - labels: {{- include "longhorn.labels" . | nindent 4 }} -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - "*" -- apiGroups: [""] - resources: ["pods", "events", "persistentvolumes", "persistentvolumeclaims","persistentvolumeclaims/status", "nodes", "proxy/nodes", "pods/log", "secrets", "services", "endpoints", "configmaps"] - verbs: ["*"] -- apiGroups: [""] - resources: ["namespaces"] - verbs: ["get", "list"] -- apiGroups: ["apps"] - resources: ["daemonsets", "statefulsets", "deployments"] - verbs: ["*"] -- apiGroups: ["batch"] - resources: ["jobs", "cronjobs"] - verbs: ["*"] -- apiGroups: ["policy"] - resources: ["poddisruptionbudgets"] - verbs: ["*"] -- apiGroups: ["scheduling.k8s.io"] - resources: ["priorityclasses"] - verbs: ["watch", "list"] -- apiGroups: ["storage.k8s.io"] - resources: ["storageclasses", "volumeattachments", "csinodes", "csidrivers"] - verbs: ["*"] -- apiGroups: ["snapshot.storage.k8s.io"] - resources: ["volumesnapshotclasses", "volumesnapshots", "volumesnapshotcontents", "volumesnapshotcontents/status"] - verbs: ["*"] -- apiGroups: ["longhorn.io"] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status", "backingimagemanagers", "backingimagemanagers/status"] - verbs: ["*"] -- apiGroups: ["coordination.k8s.io"] - resources: ["leases"] - verbs: ["*"] -- apiGroups: ["metrics.k8s.io"] - resources: ["pods", "nodes"] - verbs: ["get", "list"] diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrolebinding.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrolebinding.yaml deleted file mode 100644 index 66ac62f9b..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: longhorn-bind - labels: {{- include "longhorn.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: longhorn-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/daemonset-sa.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/daemonset-sa.yaml deleted file mode 100644 index 636a4c0c2..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/daemonset-sa.yaml +++ /dev/null @@ -1,125 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-manager - namespace: {{ include "release_namespace" . }} -spec: - selector: - matchLabels: - app: longhorn-manager - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-manager - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - containers: - - name: longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - -d - - daemon - - --engine-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.engine.repository }}:{{ .Values.image.longhorn.engine.tag }}" - - --instance-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.instanceManager.repository }}:{{ .Values.image.longhorn.instanceManager.tag }}" - - --share-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.shareManager.repository }}:{{ .Values.image.longhorn.shareManager.tag }}" - - --backing-image-manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.backingImageManager.repository }}:{{ .Values.image.longhorn.backingImageManager.tag }}" - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --service-account - - longhorn-service-account - ports: - - containerPort: 9500 - name: manager - readinessProbe: - tcpSocket: - port: 9500 - volumeMounts: - - name: dev - mountPath: /host/dev/ - - name: proc - mountPath: /host/proc/ - - name: longhorn - mountPath: /var/lib/longhorn/ - mountPropagation: Bidirectional - - name: longhorn-default-setting - mountPath: /var/lib/longhorn-setting/ - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: POD_IP - valueFrom: - fieldRef: - fieldPath: status.podIP - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: DEFAULT_SETTING_PATH - value: /var/lib/longhorn-setting/default-setting.yaml - volumes: - - name: dev - hostPath: - path: /dev/ - - name: proc - hostPath: - path: /proc/ - - name: longhorn - hostPath: - path: /var/lib/longhorn/ - - name: longhorn-default-setting - configMap: - name: longhorn-default-setting - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} - {{- end }} - serviceAccountName: longhorn-service-account - {{- if .Values.longhornManager.tolerations }} - tolerations: -{{ toYaml .Values.longhornManager.tolerations | indent 6 }} - {{- end }} - {{- if .Values.longhornManager.nodeSelector }} - nodeSelector: -{{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} - {{- end }} - updateStrategy: - rollingUpdate: - maxUnavailable: "100%" ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-manager - name: longhorn-backend - namespace: {{ include "release_namespace" . }} -spec: - type: {{ .Values.service.manager.type }} - sessionAffinity: ClientIP - selector: - app: longhorn-manager - ports: - - name: manager - port: 9500 - targetPort: manager - {{- if .Values.service.manager.nodePort }} - nodePort: {{ .Values.service.manager.nodePort }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/default-setting.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/default-setting.yaml deleted file mode 100644 index e1f0c7ae1..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/default-setting.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-default-setting - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - default-setting.yaml: |- - backup-target: {{ .Values.defaultSettings.backupTarget }} - backup-target-credential-secret: {{ .Values.defaultSettings.backupTargetCredentialSecret }} - allow-recurring-job-while-volume-detached: {{ .Values.defaultSettings.allowRecurringJobWhileVolumeDetached }} - create-default-disk-labeled-nodes: {{ .Values.defaultSettings.createDefaultDiskLabeledNodes }} - default-data-path: {{ .Values.defaultSettings.defaultDataPath }} - replica-soft-anti-affinity: {{ .Values.defaultSettings.replicaSoftAntiAffinity }} - storage-over-provisioning-percentage: {{ .Values.defaultSettings.storageOverProvisioningPercentage }} - storage-minimal-available-percentage: {{ .Values.defaultSettings.storageMinimalAvailablePercentage }} - upgrade-checker: {{ .Values.defaultSettings.upgradeChecker }} - default-replica-count: {{ .Values.defaultSettings.defaultReplicaCount }} - default-data-locality: {{ .Values.defaultSettings.defaultDataLocality }} - guaranteed-engine-cpu: {{ .Values.defaultSettings.guaranteedEngineCPU }} - default-longhorn-static-storage-class: {{ .Values.defaultSettings.defaultLonghornStaticStorageClass }} - backupstore-poll-interval: {{ .Values.defaultSettings.backupstorePollInterval }} - taint-toleration: {{ .Values.defaultSettings.taintToleration }} - system-managed-components-node-selector: {{ .Values.defaultSettings.systemManagedComponentsNodeSelector }} - priority-class: {{ .Values.defaultSettings.priorityClass }} - auto-salvage: {{ .Values.defaultSettings.autoSalvage }} - auto-delete-pod-when-volume-detached-unexpectedly: {{ .Values.defaultSettings.autoDeletePodWhenVolumeDetachedUnexpectedly }} - disable-scheduling-on-cordoned-node: {{ .Values.defaultSettings.disableSchedulingOnCordonedNode }} - replica-zone-soft-anti-affinity: {{ .Values.defaultSettings.replicaZoneSoftAntiAffinity }} - volume-attachment-recovery-policy: {{ .Values.defaultSettings.volumeAttachmentRecoveryPolicy }} - node-down-pod-deletion-policy: {{ .Values.defaultSettings.nodeDownPodDeletionPolicy }} - allow-node-drain-with-last-healthy-replica: {{ .Values.defaultSettings.allowNodeDrainWithLastHealthyReplica }} - mkfs-ext4-parameters: {{ .Values.defaultSettings.mkfsExt4Parameters }} - disable-replica-rebuild: {{ .Values.defaultSettings.disableReplicaRebuild }} - replica-replenishment-wait-interval: {{ .Values.defaultSettings.replicaReplenishmentWaitInterval }} - disable-revision-counter: {{ .Values.defaultSettings.disableRevisionCounter }} - system-managed-pods-image-pull-policy: {{ .Values.defaultSettings.systemManagedPodsImagePullPolicy }} - allow-volume-creation-with-degraded-availability: {{ .Values.defaultSettings.allowVolumeCreationWithDegradedAvailability }} - auto-cleanup-system-generated-snapshot: {{ .Values.defaultSettings.autoCleanupSystemGeneratedSnapshot }} - concurrent-automatic-engine-upgrade-per-node-limit: {{ .Values.defaultSettings.concurrentAutomaticEngineUpgradePerNodeLimit }} - backing-image-cleanup-wait-interval: {{ .Values.defaultSettings.backingImageCleanupWaitInterval }} - guaranteed-engine-manager-cpu: {{ .Values.defaultSettings.guaranteedEngineManagerCPU }} - guaranteed-replica-manager-cpu: {{ .Values.defaultSettings.guaranteedReplicaManagerCPU }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-driver.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-driver.yaml deleted file mode 100644 index fb0390a6b..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-driver.yaml +++ /dev/null @@ -1,104 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: longhorn-driver-deployer - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-driver-deployer - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-driver-deployer - spec: - initContainers: - - name: wait-longhorn-manager - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - command: ['sh', '-c', 'while [ $(curl -m 1 -s -o /dev/null -w "%{http_code}" http://longhorn-backend:9500/v1) != "200" ]; do echo waiting; sleep 2; done'] - containers: - - name: longhorn-driver-deployer - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - command: - - longhorn-manager - - -d - - deploy-driver - - --manager-image - - "{{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }}" - - --manager-url - - http://longhorn-backend:9500/v1 - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: SERVICE_ACCOUNT - valueFrom: - fieldRef: - fieldPath: spec.serviceAccountName - {{- if .Values.csi.kubeletRootDir }} - - name: KUBELET_ROOT_DIR - value: {{ .Values.csi.kubeletRootDir }} - {{- end }} - {{- if and .Values.image.csi.attacher.repository .Values.image.csi.attacher.tag }} - - name: CSI_ATTACHER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.attacher.repository }}:{{ .Values.image.csi.attacher.tag }}" - {{- end }} - {{- if and .Values.image.csi.provisioner.repository .Values.image.csi.provisioner.tag }} - - name: CSI_PROVISIONER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.provisioner.repository }}:{{ .Values.image.csi.provisioner.tag }}" - {{- end }} - {{- if and .Values.image.csi.nodeDriverRegistrar.repository .Values.image.csi.nodeDriverRegistrar.tag }} - - name: CSI_NODE_DRIVER_REGISTRAR_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.nodeDriverRegistrar.repository }}:{{ .Values.image.csi.nodeDriverRegistrar.tag }}" - {{- end }} - {{- if and .Values.image.csi.resizer.repository .Values.image.csi.resizer.tag }} - - name: CSI_RESIZER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.resizer.repository }}:{{ .Values.image.csi.resizer.tag }}" - {{- end }} - {{- if and .Values.image.csi.snapshotter.repository .Values.image.csi.snapshotter.tag }} - - name: CSI_SNAPSHOTTER_IMAGE - value: "{{ template "registry_url" . }}{{ .Values.image.csi.snapshotter.repository }}:{{ .Values.image.csi.snapshotter.tag }}" - {{- end }} - {{- if .Values.csi.attacherReplicaCount }} - - name: CSI_ATTACHER_REPLICA_COUNT - value: {{ .Values.csi.attacherReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.provisionerReplicaCount }} - - name: CSI_PROVISIONER_REPLICA_COUNT - value: {{ .Values.csi.provisionerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.resizerReplicaCount }} - - name: CSI_RESIZER_REPLICA_COUNT - value: {{ .Values.csi.resizerReplicaCount | quote }} - {{- end }} - {{- if .Values.csi.snapshotterReplicaCount }} - - name: CSI_SNAPSHOTTER_REPLICA_COUNT - value: {{ .Values.csi.snapshotterReplicaCount | quote }} - {{- end }} - - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - {{- if .Values.longhornDriver.priorityClass }} - priorityClassName: {{ .Values.longhornDriver.priorityClass | quote}} - {{- end }} - {{- if .Values.longhornDriver.tolerations }} - tolerations: -{{ toYaml .Values.longhornDriver.tolerations | indent 6 }} - {{- end }} - {{- if .Values.longhornDriver.nodeSelector }} - nodeSelector: -{{ toYaml .Values.longhornDriver.nodeSelector | indent 8 }} - {{- end }} - serviceAccountName: longhorn-service-account - securityContext: - runAsUser: 0 diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-ui.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-ui.yaml deleted file mode 100644 index e46a84213..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/deployment-ui.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - name: longhorn-ui - namespace: {{ include "release_namespace" . }} -spec: - replicas: 1 - selector: - matchLabels: - app: longhorn-ui - template: - metadata: - labels: {{- include "longhorn.labels" . | nindent 8 }} - app: longhorn-ui - spec: - containers: - - name: longhorn-ui - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.ui.repository }}:{{ .Values.image.longhorn.ui.tag }} - imagePullPolicy: IfNotPresent - securityContext: - runAsUser: 0 - ports: - - containerPort: 8000 - name: http - env: - - name: LONGHORN_MANAGER_IP - value: "http://longhorn-backend:9500" - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - {{- if .Values.longhornUI.priorityClass }} - priorityClassName: {{ .Values.longhornUI.priorityClass | quote}} - {{- end }} - {{- if .Values.longhornUI.tolerations }} - tolerations: -{{ toYaml .Values.longhornManager.tolerations | indent 6 }} - {{- end }} - {{- if .Values.longhornUI.nodeSelector }} - nodeSelector: -{{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} - {{- end }} ---- -kind: Service -apiVersion: v1 -metadata: - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ui - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - kubernetes.io/cluster-service: "true" - {{- end }} - name: longhorn-frontend - namespace: {{ include "release_namespace" . }} -spec: - {{- if eq .Values.service.ui.type "Rancher-Proxy" }} - type: ClusterIP - {{- else }} - type: {{ .Values.service.ui.type }} - {{- end }} - selector: - app: longhorn-ui - ports: - - name: http - port: 80 - targetPort: http - {{- if .Values.service.ui.nodePort }} - nodePort: {{ .Values.service.ui.nodePort }} - {{- else }} - nodePort: null - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/ingress.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/ingress.yaml deleted file mode 100644 index 13555f814..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/ingress.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if .Values.ingress.enabled }} -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: longhorn-ingress - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn-ingress - annotations: - {{- if .Values.ingress.tls }} - ingress.kubernetes.io/secure-backends: "true" - {{- end }} - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ $value | quote }} - {{- end }} -spec: - {{- if .Values.ingress.ingressClassName }} - ingressClassName: {{ .Values.ingress.ingressClassName }} - {{- end }} - rules: - - host: {{ .Values.ingress.host }} - http: - paths: - - path: {{ default "" .Values.ingress.path }} - backend: - serviceName: longhorn-frontend - servicePort: 80 -{{- if .Values.ingress.tls }} - tls: - - hosts: - - {{ .Values.ingress.host }} - secretName: {{ .Values.ingress.tlsSecret }} -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/postupgrade-job.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/postupgrade-job.yaml deleted file mode 100644 index 4af75e236..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/postupgrade-job.yaml +++ /dev/null @@ -1,48 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded,before-hook-creation - name: longhorn-post-upgrade - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-post-upgrade - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-post-upgrade - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - post-upgrade - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} - {{- end }} - serviceAccountName: longhorn-service-account - {{- if .Values.longhornManager.tolerations }} - tolerations: -{{ toYaml .Values.longhornManager.tolerations | indent 6 }} - {{- end }} - {{- if .Values.longhornManager.nodeSelector }} - nodeSelector: -{{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/psp.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/psp.yaml deleted file mode 100644 index a2dfc05be..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/psp.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if .Values.enablePSP }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: longhorn-psp - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - privileged: true - allowPrivilegeEscalation: true - requiredDropCapabilities: - - NET_RAW - allowedCapabilities: - - SYS_ADMIN - hostNetwork: false - hostIPC: false - hostPID: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - fsGroup: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - secret - - projected - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: longhorn-psp-role - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -rules: -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use - resourceNames: - - longhorn-psp ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: longhorn-psp-binding - labels: {{- include "longhorn.labels" . | nindent 4 }} - namespace: {{ include "release_namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: longhorn-psp-role -subjects: -- kind: ServiceAccount - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} -- kind: ServiceAccount - name: default - namespace: {{ include "release_namespace" . }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/registry-secret.yml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/registry-secret.yml deleted file mode 100644 index 1c7565fea..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/registry-secret.yml +++ /dev/null @@ -1,11 +0,0 @@ -{{- if .Values.privateRegistry.registrySecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ .Values.privateRegistry.registrySecret }} - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -type: kubernetes.io/dockerconfigjson -data: - .dockerconfigjson: {{ template "secret" . }} -{{- end }} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/serviceaccount.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/serviceaccount.yaml deleted file mode 100644 index ad576c353..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/serviceaccount.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: longhorn-service-account - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/storageclass.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/storageclass.yaml deleted file mode 100644 index dea6aafd4..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/storageclass.yaml +++ /dev/null @@ -1,26 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: longhorn-storageclass - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -data: - storageclass.yaml: | - kind: StorageClass - apiVersion: storage.k8s.io/v1 - metadata: - name: longhorn - annotations: - storageclass.kubernetes.io/is-default-class: {{ .Values.persistence.defaultClass | quote }} - provisioner: driver.longhorn.io - allowVolumeExpansion: true - reclaimPolicy: "{{ .Values.persistence.reclaimPolicy }}" - volumeBindingMode: Immediate - parameters: - numberOfReplicas: "{{ .Values.persistence.defaultClassReplicaCount }}" - staleReplicaTimeout: "30" - fromBackup: "" - baseImage: "" - {{- if .Values.persistence.recurringJobs.enable }} - recurringJobs: '{{ .Values.persistence.recurringJobs.jobList }}' - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/tls-secrets.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/tls-secrets.yaml deleted file mode 100644 index a7ebf13e0..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/tls-secrets.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.ingress.enabled }} -{{- range .Values.ingress.secrets }} -apiVersion: v1 -kind: Secret -metadata: - name: longhorn - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} - app: longhorn -type: kubernetes.io/tls -data: - tls.crt: {{ .certificate | b64enc }} - tls.key: {{ .key | b64enc }} ---- -{{- end }} -{{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/uninstall-job.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/uninstall-job.yaml deleted file mode 100644 index 5f21b1024..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/uninstall-job.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded - name: longhorn-uninstall - namespace: {{ include "release_namespace" . }} - labels: {{- include "longhorn.labels" . | nindent 4 }} -spec: - activeDeadlineSeconds: 900 - backoffLimit: 1 - template: - metadata: - name: longhorn-uninstall - labels: {{- include "longhorn.labels" . | nindent 8 }} - spec: - containers: - - name: longhorn-uninstall - image: {{ template "registry_url" . }}{{ .Values.image.longhorn.manager.repository }}:{{ .Values.image.longhorn.manager.tag }} - imagePullPolicy: IfNotPresent - securityContext: - privileged: true - command: - - longhorn-manager - - uninstall - - --force - env: - - name: LONGHORN_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - restartPolicy: OnFailure - {{- if .Values.privateRegistry.registrySecret }} - imagePullSecrets: - - name: {{ .Values.privateRegistry.registrySecret }} - {{- end }} - {{- if .Values.longhornManager.priorityClass }} - priorityClassName: {{ .Values.longhornManager.priorityClass | quote}} - {{- end }} - serviceAccountName: longhorn-service-account - {{- if .Values.longhornManager.tolerations }} - tolerations: -{{ toYaml .Values.longhornManager.tolerations | indent 6 }} - {{- end }} - {{- if .Values.longhornManager.nodeSelector }} - nodeSelector: -{{ toYaml .Values.longhornManager.nodeSelector | indent 8 }} - {{- end }} diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/userroles.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/userroles.yaml deleted file mode 100644 index 00dda116a..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/userroles.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status", "backingimagemanagers", "backingimagemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-edit" - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status", "backingimagemanagers", "backingimagemanagers/status"] - verbs: [ "*" ] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "longhorn-view" - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: [ "longhorn.io" ] - resources: ["volumes", "volumes/status", "engines", "engines/status", "replicas", "replicas/status", "settings", - "engineimages", "engineimages/status", "nodes", "nodes/status", "instancemanagers", "instancemanagers/status", - "sharemanagers", "sharemanagers/status", "backingimages", "backingimages/status", "backingimagemanagers", "backingimagemanagers/status"] - verbs: [ "get", "list", "watch" ] diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/validate-install-crd.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/validate-install-crd.yaml deleted file mode 100644 index f93413640..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/templates/validate-install-crd.yaml +++ /dev/null @@ -1,23 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "longhorn.io/v1beta1/Engine" false -}} -# {{- set $found "longhorn.io/v1beta1/Replica" false -}} -# {{- set $found "longhorn.io/v1beta1/Setting" false -}} -# {{- set $found "longhorn.io/v1beta1/Volume" false -}} -# {{- set $found "longhorn.io/v1beta1/EngineImage" false -}} -# {{- set $found "longhorn.io/v1beta1/Node" false -}} -# {{- set $found "longhorn.io/v1beta1/InstanceManager" false -}} -# {{- set $found "longhorn.io/v1beta1/ShareManager" false -}} -# {{- set $found "longhorn.io/v1beta1/BackingImage" false -}} -# {{- set $found "longhorn.io/v1beta1/BackingImageManager" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/longhorn/longhorn/1.1.100+up1.1.1/values.yaml b/charts/longhorn/longhorn/1.1.100+up1.1.1/values.yaml deleted file mode 100644 index 3032ccb87..000000000 --- a/charts/longhorn/longhorn/1.1.100+up1.1.1/values.yaml +++ /dev/null @@ -1,220 +0,0 @@ -# Default values for longhorn. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. -global: - cattle: - systemDefaultRegistry: "" - -image: - longhorn: - engine: - repository: rancher/mirrored-longhornio-longhorn-engine - tag: v1.1.1 - manager: - repository: rancher/mirrored-longhornio-longhorn-manager - tag: v1.1.1 - ui: - repository: rancher/mirrored-longhornio-longhorn-ui - tag: v1.1.1 - instanceManager: - repository: rancher/mirrored-longhornio-longhorn-instance-manager - tag: v1_20201216 - shareManager: - repository: rancher/mirrored-longhornio-longhorn-share-manager - tag: v1_20210416 - backingImageManager: - repository: rancher/mirrored-longhornio-backing-image-manager - tag: v1_20210422 - csi: - attacher: - repository: rancher/mirrored-longhornio-csi-attacher - tag: v2.2.1-lh1 - provisioner: - repository: rancher/mirrored-longhornio-csi-provisioner - tag: v1.6.0-lh1 - nodeDriverRegistrar: - repository: rancher/mirrored-longhornio-csi-node-driver-registrar - tag: v1.2.0-lh1 - resizer: - repository: rancher/mirrored-longhornio-csi-resizer - tag: v0.5.1-lh1 - snapshotter: - repository: rancher/mirrored-longhornio-csi-snapshotter - tag: v2.1.1-lh1 - pullPolicy: IfNotPresent - -service: - ui: - type: ClusterIP - nodePort: null - manager: - type: ClusterIP - nodePort: "" - -persistence: - defaultClass: true - defaultClassReplicaCount: 3 - reclaimPolicy: Delete - recurringJobs: - enable: false - jobList: [] - -csi: - kubeletRootDir: ~ - attacherReplicaCount: ~ - provisionerReplicaCount: ~ - resizerReplicaCount: ~ - snapshotterReplicaCount: ~ - -defaultSettings: - backupTarget: ~ - backupTargetCredentialSecret: ~ - allowRecurringJobWhileVolumeDetached: ~ - createDefaultDiskLabeledNodes: ~ - defaultDataPath: ~ - defaultDataLocality: ~ - replicaSoftAntiAffinity: ~ - storageOverProvisioningPercentage: ~ - storageMinimalAvailablePercentage: ~ - upgradeChecker: ~ - defaultReplicaCount: ~ - guaranteedEngineCPU: ~ - defaultLonghornStaticStorageClass: ~ - backupstorePollInterval: ~ - taintToleration: ~ - systemManagedComponentsNodeSelector: ~ - priorityClass: ~ - autoSalvage: ~ - autoDeletePodWhenVolumeDetachedUnexpectedly: ~ - disableSchedulingOnCordonedNode: ~ - replicaZoneSoftAntiAffinity: ~ - volumeAttachmentRecoveryPolicy: ~ - nodeDownPodDeletionPolicy: ~ - allowNodeDrainWithLastHealthyReplica: ~ - mkfsExt4Parameters: ~ - disableReplicaRebuild: ~ - replicaReplenishmentWaitInterval: ~ - disableRevisionCounter: ~ - systemManagedPodsImagePullPolicy: ~ - allowVolumeCreationWithDegradedAvailability: ~ - autoCleanupSystemGeneratedSnapshot: ~ - concurrentAutomaticEngineUpgradePerNodeLimit: ~ - backingImageCleanupWaitInterval: ~ - guaranteedEngineManagerCPU: ~ - guaranteedReplicaManagerCPU: ~ -privateRegistry: - registryUrl: ~ - registryUser: ~ - registryPasswd: ~ - registrySecret: ~ - -longhornManager: - priorityClass: ~ - tolerations: [] - ## If you want to set tolerations for Longhorn Manager DaemonSet, delete the `[]` in the line above - ## and uncomment this example block - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - nodeSelector: {} - ## If you want to set node selector for Longhorn Manager DaemonSet, delete the `{}` in the line above - ## and uncomment this example block - # label-key1: "label-value1" - # label-key2: "label-value2" - -longhornDriver: - priorityClass: ~ - tolerations: [] - ## If you want to set tolerations for Longhorn Driver Deployer Deployment, delete the `[]` in the line above - ## and uncomment this example block - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - nodeSelector: {} - ## If you want to set node selector for Longhorn Driver Deployer Deployment, delete the `{}` in the line above - ## and uncomment this example block - # label-key1: "label-value1" - # label-key2: "label-value2" - -longhornUI: - priorityClass: ~ - tolerations: [] - ## If you want to set tolerations for Longhorn UI Deployment, delete the `[]` in the line above - ## and uncomment this example block - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - nodeSelector: {} - ## If you want to set node selector for Longhorn UI Deployment, delete the `{}` in the line above - ## and uncomment this example block - # label-key1: "label-value1" - # label-key2: "label-value2" - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - # - -ingress: - ## Set to true to enable ingress record generation - enabled: false - - ## Add ingressClassName to the Ingress - ## Can replace the kubernetes.io/ingress.class annotation on v1.18+ - ingressClassName: ~ - - host: xip.io - - ## Set this to true in order to enable TLS on the ingress record - ## A side effect of this will be that the backend service will be connected at port 443 - tls: false - - ## If TLS is set to true, you must declare what secret will store the key/certificate for TLS - tlsSecret: longhorn.local-tls - - ## Ingress annotations done as key:value pairs - ## If you're using kube-lego, you will want to add: - ## kubernetes.io/tls-acme: true - ## - ## For a full list of possible ingress annotations, please see - ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/annotations.md - ## - ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be set - annotations: - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: true - - secrets: - ## If you're providing your own certificates, please use this to add the certificates as secrets - ## key and certificate should start with -----BEGIN CERTIFICATE----- or - ## -----BEGIN RSA PRIVATE KEY----- - ## - ## name should line up with a tlsSecret set further up - ## If you're using kube-lego, this is unneeded, as it will create the secret for you if it is not set - ## - ## It is also possible to create and manage the certificates outside of this helm chart - ## Please see README.md for more information - # - name: longhorn.local-tls - # key: - # certificate: - -# Configure a pod security policy in the Longhorn namespace to allow privileged pods -enablePSP: true - -## Specify override namespace, specifically this is useful for using longhorn as sub-chart -## and its release namespace is not the `longhorn-system` -namespaceOverride: "" - -# Annotations to add to the Longhorn Manager DaemonSet Pods. Optional. -annotations: {} diff --git a/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/Chart.yaml b/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/Chart.yaml deleted file mode 100644 index 4bee6214d..000000000 --- a/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-aks-operator-crd -apiVersion: v2 -appVersion: 1.0.1-rc7 -description: AKS Operator CustomResourceDefinitions -name: rancher-aks-operator-crd -version: 1.0.100-rc7+up1.0.1-rc7 diff --git a/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/templates/crds.yaml b/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/templates/crds.yaml deleted file mode 100644 index c26e196e8..000000000 --- a/charts/rancher-aks-operator-crd/rancher-aks-operator-crd/1.0.100-rc7+up1.0.1-rc7/templates/crds.yaml +++ /dev/null @@ -1,165 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - helm.sh/resource-policy: keep - name: aksclusterconfigs.aks.cattle.io -spec: - group: aks.cattle.io - names: - kind: AKSClusterConfig - plural: aksclusterconfigs - shortNames: - - akscc - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - authBaseUrl: - nullable: true - type: string - authorizedIpRanges: - items: - nullable: true - type: string - nullable: true - type: array - azureCredentialSecret: - nullable: true - type: string - baseUrl: - nullable: true - type: string - clusterName: - nullable: true - type: string - dnsPrefix: - nullable: true - type: string - dnsServiceIp: - nullable: true - type: string - dockerBridgeCidr: - nullable: true - type: string - httpApplicationRouting: - nullable: true - type: boolean - imported: - type: boolean - kubernetesVersion: - nullable: true - type: string - linuxAdminUsername: - nullable: true - type: string - loadBalancerSku: - nullable: true - type: string - networkPlugin: - nullable: true - type: string - networkPolicy: - nullable: true - type: string - nodePools: - items: - properties: - availabilityZones: - items: - nullable: true - type: string - nullable: true - type: array - count: - nullable: true - type: integer - enableAutoScaling: - nullable: true - type: boolean - maxCount: - nullable: true - type: integer - maxPods: - nullable: true - type: integer - minCount: - nullable: true - type: integer - mode: - nullable: true - type: string - name: - nullable: true - type: string - orchestratorVersion: - nullable: true - type: string - osDiskSizeGB: - nullable: true - type: integer - osDiskType: - nullable: true - type: string - osType: - nullable: true - type: string - vmSize: - nullable: true - type: string - type: object - nullable: true - type: array - podCidr: - nullable: true - type: string - privateCluster: - nullable: true - type: boolean - resourceGroup: - nullable: true - type: string - resourceLocation: - nullable: true - type: string - serviceCidr: - nullable: true - type: string - sshPublicKey: - nullable: true - type: string - subnet: - nullable: true - type: string - tags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - virtualNetwork: - nullable: true - type: string - virtualNetworkResourceGroup: - nullable: true - type: string - type: object - status: - properties: - failureMessage: - nullable: true - type: string - phase: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/Chart.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/Chart.yaml deleted file mode 100644 index 3247e7743..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-aks-operator-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: aksclusterconfigs.aks.cattle.io/v1 - catalog.cattle.io/rancher-version: '>= 2.6.0-alpha' - catalog.cattle.io/release-name: rancher-aks-operator - catalog.cattle.io/scope: management -apiVersion: v2 -appVersion: 1.0.1-rc7 -description: A Helm chart for provisioning AKS clusters -home: https://github.com/rancher/aks-operator -name: rancher-aks-operator -sources: -- https://github.com/rancher/aks-operator -version: 1.0.100-rc7+up1.0.1-rc7 diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/NOTES.txt b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/NOTES.txt deleted file mode 100644 index 5ba05b482..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/NOTES.txt +++ /dev/null @@ -1,4 +0,0 @@ -You have deployed the Rancher AKS operator -Version: {{ .Chart.AppVersion }} -Description: This operator provisions AKS clusters -from AKSClusterConfig CRs. diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/_helpers.tpl b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/_helpers.tpl deleted file mode 100644 index be11b4a66..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/_helpers.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrole.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrole.yaml deleted file mode 100644 index 1bcc0ebec..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrole.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: aks-operator - namespace: cattle-system -rules: - - apiGroups: [''] - resources: ['secrets'] - verbs: ['get', 'list', 'create', 'watch'] - - apiGroups: ['aks.cattle.io'] - resources: ['aksclusterconfigs'] - verbs: ['get', 'list', 'update', 'watch'] - - apiGroups: ['aks.cattle.io'] - resources: ['aksclusterconfigs/status'] - verbs: ['update'] diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrolebinding.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrolebinding.yaml deleted file mode 100644 index 7aa7e785a..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: aks-operator - namespace: cattle-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: aks-operator -subjects: -- kind: ServiceAccount - name: aks-operator - namespace: cattle-system diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/deployment.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/deployment.yaml deleted file mode 100644 index 2b8383cd7..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: aks-config-operator - namespace: cattle-system -spec: - replicas: 1 - selector: - matchLabels: - ke.cattle.io/operator: aks - template: - metadata: - labels: - ke.cattle.io/operator: aks - spec: - serviceAccountName: aks-operator - containers: - - name: aks-operator - image: {{ template "system_default_registry" . }}{{ .Values.aksOperator.image.repository }}:{{ .Values.aksOperator.image.tag }} - imagePullPolicy: IfNotPresent - env: - - name: HTTP_PROXY - value: {{ .Values.httpProxy }} - - name: HTTPS_PROXY - value: {{ .Values.httpsProxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} -{{- if .Values.additionalTrustedCAs }} - volumeMounts: - - mountPath: /etc/ssl/certs/ca-additional.pem - name: tls-ca-additional-volume - subPath: ca-additional.pem - readOnly: true - volumes: - - name: tls-ca-additional-volume - secret: - defaultMode: 0400 - secretName: tls-ca-additional - {{- end }} diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/serviceaccount.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/serviceaccount.yaml deleted file mode 100644 index 9c40a152f..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: cattle-system - name: aks-operator diff --git a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/values.yaml b/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/values.yaml deleted file mode 100644 index ceb177d14..000000000 --- a/charts/rancher-aks-operator/rancher-aks-operator/1.0.100-rc7+up1.0.1-rc7/values.yaml +++ /dev/null @@ -1,12 +0,0 @@ -global: - systemDefaultRegistry: "" - -aksOperator: - image: - repository: rancher/aks-operator - tag: v1.0.1-rc7 - -httpProxy: "" -httpsProxy: "" -noProxy: "" -additionalTrustedCAs: false diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/Chart.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/Chart.yaml deleted file mode 100644 index 4ef4e32c5..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Alerting Drivers - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-alerting-drivers -apiVersion: v2 -appVersion: 1.16.0 -dependencies: -- name: prom2teams - repository: file://./charts/prom2teams -- condition: sachet.enabled - name: sachet - repository: file://./charts/sachet -description: The manager for third-party webhook receivers used in Prometheus Alertmanager -keywords: -- monitoring -- alertmanger -- webhook -name: rancher-alerting-drivers -version: 1.0.200 diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/README.md b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/README.md deleted file mode 100644 index ea3f11801..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# Rancher Alerting Drivers - -This chart installs one or more [Alertmanager Webhook Receiver Integrations](https://prometheus.io/docs/operating/integrations/#alertmanager-webhook-receiver) (i.e. Drivers). - -Those Drivers can be targeted by an existing deployment of Alertmanager to send alerts to notification mechanisms that are not natively supported. - -Currently, this chart supports the following Drivers: -- Microsoft Teams, based on [prom2teams](https://github.com/idealista/prom2teams) -- SMS, based on [Sachet](https://github.com/messagebird/sachet) - -After installing rancher-alerting-drivers, please refer to the upstream documentation for each Driver for configuration options. \ No newline at end of file diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/app-readme.md b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/app-readme.md deleted file mode 100644 index ea3f11801..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/app-readme.md +++ /dev/null @@ -1,11 +0,0 @@ -# Rancher Alerting Drivers - -This chart installs one or more [Alertmanager Webhook Receiver Integrations](https://prometheus.io/docs/operating/integrations/#alertmanager-webhook-receiver) (i.e. Drivers). - -Those Drivers can be targeted by an existing deployment of Alertmanager to send alerts to notification mechanisms that are not natively supported. - -Currently, this chart supports the following Drivers: -- Microsoft Teams, based on [prom2teams](https://github.com/idealista/prom2teams) -- SMS, based on [Sachet](https://github.com/messagebird/sachet) - -After installing rancher-alerting-drivers, please refer to the upstream documentation for each Driver for configuration options. \ No newline at end of file diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/.helmignore b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/.helmignore deleted file mode 100644 index 50af03172..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/Chart.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/Chart.yaml deleted file mode 100644 index 463385d4b..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-prom2teams -apiVersion: v1 -appVersion: 3.2.1 -description: A Helm chart for Prom2Teams based on the upstream https://github.com/idealista/prom2teams -name: prom2teams -version: 0.2.0 diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/files/teams.j2 b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/files/teams.j2 deleted file mode 100644 index f1cf61d4e..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/files/teams.j2 +++ /dev/null @@ -1,44 +0,0 @@ -{%- set - theme_colors = { - 'resolved' : '2DC72D', - 'critical' : '8C1A1A', - 'severe' : '8C1A1A', - 'warning' : 'FF9A0B', - 'unknown' : 'CCCCCC' - } --%} - -{ - "@type": "MessageCard", - "@context": "http://schema.org/extensions", - "themeColor": "{% if status=='resolved' %} {{ theme_colors.resolved }} {% else %} {{ theme_colors[msg_text.severity] }} {% endif %}", - "summary": "{% if status=='resolved' %}(Resolved) {% endif %}{{ msg_text.summary }}", - "title": "Prometheus alert {% if status=='resolved' %}(Resolved) {% elif status=='unknown' %} (status unknown) {% endif %}", - "sections": [{ - "activityTitle": "{{ msg_text.summary }}", - "facts": [{% if msg_text.name %}{ - "name": "Alert", - "value": "{{ msg_text.name }}" - },{% endif %}{% if msg_text.instance %}{ - "name": "In host", - "value": "{{ msg_text.instance }}" - },{% endif %}{% if msg_text.severity %}{ - "name": "Severity", - "value": "{{ msg_text.severity }}" - },{% endif %}{% if msg_text.description %}{ - "name": "Description", - "value": "{{ msg_text.description }}" - },{% endif %}{ - "name": "Status", - "value": "{{ msg_text.status }}" - }{% if msg_text.extra_labels %}{% for key in msg_text.extra_labels %},{ - "name": "{{ key }}", - "value": "{{ msg_text.extra_labels[key] }}" - }{% endfor %}{% endif %} - {% if msg_text.extra_annotations %}{% for key in msg_text.extra_annotations %},{ - "name": "{{ key }}", - "value": "{{ msg_text.extra_annotations[key] }}" - }{% endfor %}{% endif %}], - "markdown": true - }] -} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/NOTES.txt b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/NOTES.txt deleted file mode 100644 index a94c4132b..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/NOTES.txt +++ /dev/null @@ -1,2 +0,0 @@ -Prom2Teams has been installed. Check its status by running: - kubectl --namespace {{ .Release.Namespace }} get pods -l "app.kubernetes.io/instance={{ .Release.Name }}" diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/_helpers.tpl b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/_helpers.tpl deleted file mode 100644 index ffc0fa356..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/_helpers.tpl +++ /dev/null @@ -1,73 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "prom2teams.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "prom2teams.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "prom2teams.namespace" -}} -{{ default .Release.Namespace .Values.global.namespaceOverride }} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "prom2teams.labels" -}} -app.kubernetes.io/name: {{ include "prom2teams.name" . }} -helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -app.kubernetes.io/instance: {{ .Release.Name }} -release: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/configmap.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/configmap.yaml deleted file mode 100644 index ccf38953e..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/configmap.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- $valid := list "DEBUG" "INFO" "WARNING" "ERROR" "CRITICAL" -}} -{{- if not (has .Values.prom2teams.loglevel $valid) -}} -{{- fail "Invalid log level"}} -{{- end -}} -{{- if and .Values.prom2teams.connector (hasKey .Values.prom2teams.connectors "Connector") -}} -{{- fail "Invalid configuration: prom2teams.connectors can't have a connector named Connector when prom2teams.connector is set"}} -{{- end -}} -{{/* Create the configmap when the operation is helm install and the target configmap does not exist. */}} -{{- if not (lookup "v1" "ConfigMap" (include "prom2teams.namespace" . ) (include "prom2teams.fullname" .)) }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ include "prom2teams.namespace" . }} - name: {{ include "prom2teams.fullname" . }} - labels: {{ include "prom2teams.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": pre-install, pre-upgrade - "helm.sh/hook-weight": "3" - "helm.sh/resource-policy": keep -data: - config.ini: |- - [HTTP Server] - Host: {{ .Values.prom2teams.host }} - Port: {{ .Values.prom2teams.port }} - [Microsoft Teams] - {{- with .Values.prom2teams.connector }} - Connector: {{ . }} - {{- end }} - {{- range $key, $val := .Values.prom2teams.connectors }} - {{ $key }}: {{ $val }} - {{- end }} - [Group Alerts] - Field: {{ .Values.prom2teams.group_alerts_by }} - [Log] - Level: {{ .Values.prom2teams.loglevel }} - [Template] - Path: {{ .Values.prom2teams.templatepath }} - teams.j2: {{ .Files.Get "files/teams.j2" | quote }} - {{- end -}} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/deployment.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/deployment.yaml deleted file mode 100644 index c7149b9da..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/deployment.yaml +++ /dev/null @@ -1,77 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "prom2teams.fullname" . }} - namespace: {{ include "prom2teams.namespace" . }} - labels: {{ include "prom2teams.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "prom2teams.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "prom2teams.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - spec: - serviceAccountName: {{ include "prom2teams.fullname" . }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: config - configMap: - name: {{ include "prom2teams.fullname" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ include "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: 8089 - protocol: TCP - volumeMounts: - - name: config - mountPath: /opt/prom2teams/helmconfig/ - env: - - name: APP_CONFIG_FILE - value: {{ .Values.prom2teams.config | quote }} - - name: PROM2TEAMS_PORT - value: {{ .Values.prom2teams.port | quote }} - - name: PROM2TEAMS_HOST - value: {{ .Values.prom2teams.ip | quote }} - - name: PROM2TEAMS_CONNECTOR - value: {{ .Values.prom2teams.connector | quote }} - - name: PROM2TEAMS_GROUP_ALERTS_BY - value: {{ .Values.prom2teams.group_alerts_by | quote }} - resources: {{ toYaml .Values.resources | nindent 12 }} - {{- if .Values.securityContext.enabled }} - securityContext: - privileged: false - readOnlyRootFilesystem: false - allowPrivilegeEscalation: false - capabilities: - drop: - - ALL - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} - {{- toYaml .Values.nodeSelector | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: {{ toYaml . | nindent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - {{- if .Values.tolerations }} - {{- toYaml .Values.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.securityContext.enabled }} - securityContext: - runAsNonRoot: {{ if eq (int .Values.securityContext.runAsUser) 0 }}false{{ else }}true{{ end }} - runAsUser: {{ .Values.securityContext.runAsUser }} - runAsGroup: {{ .Values.securityContext.runAsGroup }} - fsGroup: {{ .Values.securityContext.fsGroup }} - {{- end }} - diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/psp.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/psp.yaml deleted file mode 100644 index 37f21f52a..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/psp.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "prom2teams.fullname" . }}-psp - labels: {{ include "prom2teams.labels" . | nindent 4 }} -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/role.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/role.yaml deleted file mode 100644 index 25391d588..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/role.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "prom2teams.fullname" . }}-psp - namespace: {{ include "prom2teams.namespace" . }} - labels: {{ include "prom2teams.labels" . | nindent 4 }} -rules: - - apiGroups: - - policy - resourceNames: - - {{ include "prom2teams.fullname" . }}-psp - resources: - - podsecuritypolicies - verbs: - - use diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/rolebinding.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/rolebinding.yaml deleted file mode 100644 index 3ca8bc252..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/rolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "prom2teams.fullname" . }}-psp - namespace: {{ include "prom2teams.namespace" . }} - labels: {{ include "prom2teams.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "prom2teams.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: {{ include "prom2teams.fullname" . }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service-account.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service-account.yaml deleted file mode 100644 index a9572c5cd..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service-account.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "prom2teams.fullname" . }} - namespace: {{ include "prom2teams.namespace" . }} - labels: {{ include "prom2teams.labels" . | nindent 4 }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service.yaml deleted file mode 100644 index cc95cad35..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/templates/service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "prom2teams.fullname" . }} - namespace: {{ include "prom2teams.namespace" . }} - labels: -{{ include "prom2teams.labels" . | indent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: 8089 - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "prom2teams.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/values.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/values.yaml deleted file mode 100644 index dcbbd8cfa..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/prom2teams/values.yaml +++ /dev/null @@ -1,62 +0,0 @@ -# Default values for prom2teams. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - namespaceOverride: "" - -nameOverride: "prom2teams" -fullnameOverride: "" - -replicaCount: 1 - -image: - repository: rancher/mirrored-idealista-prom2teams - tag: 3.2.1 - pullPolicy: IfNotPresent - -resources: - requests: - cpu: 100m - memory: 128Mi - limits: - cpu: 200m - memory: 200Mi - -service: - type: ClusterIP - port: 8089 - -prom2teams: - host: 0.0.0.0 - port: 8089 - connector: the-connector-url - connectors: {} - # group_alerts_by can be one of - # ("name" | "description" | "instance" | "severity" | "status" | "summary" | "fingerprint" | "runbook_url") - group_alerts_by: - # loglevel can be one of (DEBUG | INFO | WARNING | ERROR | CRITICAL) - loglevel: INFO - templatepath: /opt/prom2teams/helmconfig/teams.j2 - config: /opt/prom2teams/helmconfig/config.ini - -# Security Context properties -securityContext: - # enabled is a flag to enable Security Context - enabled: true - # runAsUser is the user ID used to run the container - runAsUser: 65534 - # runAsGroup is the primary group ID used to run all processes within any container of the pod - runAsGroup: 65534 - # fsGroup is the group ID associated with the container - fsGroup: 65534 - # readOnlyRootFilesystem is a flag to enable readOnlyRootFilesystem for the Hazelcast security context - readOnlyRootFilesystem: true - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/.helmignore b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/Chart.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/Chart.yaml deleted file mode 100644 index 493bd9d9e..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-sachet -apiVersion: v2 -appVersion: 0.2.3 -description: A Helm chart for Sachet based on the upstream https://github.com/messagebird/sachet -name: sachet -type: application -version: 1.0.1 diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/files/template.tmpl b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/files/template.tmpl deleted file mode 100644 index 08f24e138..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/files/template.tmpl +++ /dev/null @@ -1 +0,0 @@ -# reference: https://github.com/messagebird/sachet/blob/master/examples/telegram.tmpl diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/NOTES.txt b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/NOTES.txt deleted file mode 100644 index 247a91fc1..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/NOTES.txt +++ /dev/null @@ -1,3 +0,0 @@ -rancher-sachet is now installed on the cluster! -Please refer to the upstream documentation for configuration options: -https://github.com/messagebird/sachet diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/_helpers.tpl b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/_helpers.tpl deleted file mode 100644 index eaa61fee5..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/_helpers.tpl +++ /dev/null @@ -1,79 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "sachet.namespace" -}} -{{ default .Release.Namespace .Values.global.namespaceOverride }} -{{- end }} - -{{/* -Expand the name of the chart. -*/}} -{{- define "sachet.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "sachet.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "sachet.labels" -}} -helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{ include "sachet.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "sachet.selectorLabels" -}} -app.kubernetes.io/name: {{ include "sachet.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - - diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/configmap-pre-install.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/configmap-pre-install.yaml deleted file mode 100644 index e8c63ac03..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/configmap-pre-install.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{/*This file is applied when the operation is helm install and the target confimap does not exist. */}} -{{- if not (lookup "v1" "ConfigMap" (include "sachet.namespace" . ) (include "sachet.fullname" .)) }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ include "sachet.namespace" . }} - name: {{ include "sachet.fullname" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": pre-install, pre-upgrade - "helm.sh/hook-weight": "3" - "helm.sh/resource-policy": keep -data: - config.yaml: |- - {{- if and (not .Values.sachet.providers) (not .Values.sachet.receivers) }} - # please refer to the upstream documentation for configuration options: - # https://github.com/messagebird/sachet - # - # providers: - # aliyun: - # region_id: - # ... - # receivers: - # - name: 'team-sms' - # provider: 'aliyu' - # ... - {{- end }} - {{- with .Values.sachet.providers }} - providers: {{ toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.sachet.receivers }} - receivers: {{ toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/deployment.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/deployment.yaml deleted file mode 100644 index 17215eebd..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/deployment.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "sachet.fullname" . }} - namespace: {{ include "sachet.namespace" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: {{ include "sachet.selectorLabels" . | nindent 6 }} - template: - metadata: - {{- with .Values.podAnnotations }} - annotations: {{ toYaml . | nindent 8 }} - {{- end }} - labels: {{ include "sachet.selectorLabels" . | nindent 8 }} - spec: - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} - {{- toYaml .Values.nodeSelector | nindent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - {{- if .Values.tolerations }} - {{- toYaml .Values.tolerations | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: {{ toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "sachet.fullname" . }} - {{- with .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - image: {{ include "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: http - containerPort: 9876 - protocol: TCP - livenessProbe: - httpGet: - path: /-/live - port: http - readinessProbe: - httpGet: - path: /-/ready - port: http - volumeMounts: - - mountPath: /etc/sachet/ - name: config-volume - {{- with .Values.resources }} - resources: {{ toYaml .Values.resources | nindent 12 }} - {{- end }} - - name: config-reloader - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - image: {{ include "system_default_registry" . }}{{ .Values.configReloader.repository }}:{{ .Values.configReloader.tag }} - imagePullPolicy: {{ .Values.configReloader.pullPolicy }} - args: - - -volume-dir=/watch-config - - -webhook-method=POST - - -webhook-status-code=200 - - -webhook-url=http://127.0.0.1:{{ .Values.service.port }}/-/reload - volumeMounts: - - mountPath: /watch-config - name: config-volume - volumes: - - name: config-volume - configMap: - name: {{ include "sachet.fullname" . }} - defaultMode: 0777 diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/psp.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/psp.yaml deleted file mode 100644 index 1cc5b0895..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/psp.yaml +++ /dev/null @@ -1,28 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "sachet.fullname" . }}-psp - labels: {{ include "sachet.labels" . | nindent 4 }} -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/role.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/role.yaml deleted file mode 100644 index 05d4410e3..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/role.yaml +++ /dev/null @@ -1,15 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "sachet.fullname" . }}-psp - namespace: {{ include "sachet.namespace" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} -rules: - - apiGroups: - - policy - resourceNames: - - {{ include "sachet.fullname" . }}-psp - resources: - - podsecuritypolicies - verbs: - - use diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/rolebinding.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/rolebinding.yaml deleted file mode 100644 index 174f0d9e8..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/rolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "sachet.fullname" . }}-psp - namespace: {{ include "sachet.namespace" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "sachet.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: {{ include "sachet.fullname" . }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service-account.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service-account.yaml deleted file mode 100644 index 8833f1b3b..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service-account.yaml +++ /dev/null @@ -1,6 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "sachet.fullname" . }} - namespace: {{ include "sachet.namespace" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service.yaml deleted file mode 100644 index 216e8322c..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/templates/service.yaml +++ /dev/null @@ -1,17 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "sachet.fullname" . }} - namespace: {{ include "sachet.namespace" . }} - labels: {{ include "sachet.labels" . | nindent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http - {{- if contains "NodePort" .Values.service.type }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - selector: {{ include "sachet.selectorLabels" . | nindent 4 }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/values.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/values.yaml deleted file mode 100644 index b00cf0b18..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/charts/sachet/values.yaml +++ /dev/null @@ -1,63 +0,0 @@ -# Default values for sachet. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - namespaceOverride: "" - -nameOverride: "sachet" -fullnameOverride: "" - -configReloader: - repository: rancher/mirrored-jimmidyson-configmap-reload - pullPolicy: IfNotPresent - tag: v0.4.0 - -sachet: - # reference: https://github.com/messagebird/sachet/blob/master/examples/config.yaml - providers: {} - - receivers: [] - -replicaCount: 1 - -image: - repository: rancher/mirrored-messagebird-sachet - pullPolicy: IfNotPresent - tag: 0.2.3 - -imagePullSecrets: [] - -podAnnotations: {} - -podSecurityContext: - -securityContext: - runAsUser: 1000 - runAsNonRoot: true - runAsGroup: 1000 - -service: - type: ClusterIP - port: 9876 - nodePort: 30001 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/questions.yml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/questions.yml deleted file mode 100644 index 741808c23..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/questions.yml +++ /dev/null @@ -1,14 +0,0 @@ -categories: - - monitoring -namespace: cattle-monitoring-system -questions: - - variable: prom2teams.enabled - default: false - label: Enable Microsoft Teams - type: boolean - group: "General" - - variable: sachet.enabled - default: false - label: Enable SMS - type: boolean - group: "General" diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/NOTES.txt b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/NOTES.txt deleted file mode 100644 index 59c1415e0..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/NOTES.txt +++ /dev/null @@ -1,2 +0,0 @@ -rancher-alerting-drivers is now installed on the cluster! -Please refer to the upstream documentation for each Driver for configuration options. \ No newline at end of file diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/_helpers.tpl b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/_helpers.tpl deleted file mode 100644 index e57f6ff74..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/_helpers.tpl +++ /dev/null @@ -1,91 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "drivers.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "drivers.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "drivers.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "drivers.labels" -}} -helm.sh/chart: {{ include "drivers.chart" . }} -{{ include "drivers.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "drivers.selectorLabels" -}} -app.kubernetes.io/name: {{ include "drivers.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "drivers.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "drivers.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -https://github.com/helm/helm/issues/4535#issuecomment-477778391 -Usage: {{ include "call-nested" (list . "SUBCHART_NAME" "TEMPLATE") }} -e.g. {{ include "call-nested" (list . "grafana" "grafana.fullname") }} -*/}} -{{- define "call-nested" }} -{{- $dot := index . 0 }} -{{- $subchart := index . 1 | splitList "." }} -{{- $template := index . 2 }} -{{- $values := $dot.Values }} -{{- range $subchart }} -{{- $values = index $values . }} -{{- end }} -{{- include $template (dict "Chart" (dict "Name" (last $subchart)) "Values" $values "Release" $dot.Release "Capabilities" $dot.Capabilities) }} -{{- end }} - - -{{/* -Get the list of configMaps to be managed -*/}} -{{- define "drivers.configmapList" -}} -{{- if .Values.sachet.enabled -}} -- {{ include "call-nested" (list . "sachet" "sachet.fullname") }} -{{- end }} -{{- if .Values.prom2teams.enabled -}} -- {{ include "call-nested" (list . "prom2teams" "prom2teams.fullname") }} -{{- end }} -{{- end }} diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/cluster-role.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/cluster-role.yaml deleted file mode 100644 index e3022a7ca..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/templates/cluster-role.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{{- if and (not .Values.sachet.enabled) (not .Values.prom2teams.enabled) -}} -{{- fail "At least one Driver must be enabled to install the chart. " }} -{{- end -}} - -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "drivers.fullname" . }}-admin - labels: {{ include "drivers.labels" . | nindent 4 }} - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "" - resources: - - configmaps - resourceNames: {{ include "drivers.configmapList" . | nindent 6 }} - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "drivers.fullname" . }}-edit - labels: {{ include "drivers.labels" . | nindent 4 }} - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "" - resources: - - configmaps - resourceNames: {{ include "drivers.configmapList" . | nindent 6 }} - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "drivers.fullname" . }}-view - labels: {{ include "drivers.labels" . | nindent 4 }} - rbac.authorization.k8s.io/aggregate-to-view: "true" -rules: - - apiGroups: - - "" - resources: - - configmaps - resourceNames: {{ include "drivers.configmapList" . | nindent 6 }} - verbs: - - 'get' - - 'list' - - 'watch' diff --git a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/values.yaml b/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/values.yaml deleted file mode 100644 index ff9ab90e0..000000000 --- a/charts/rancher-alerting-drivers/rancher-alerting-drivers/1.0.200/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -# Default values for rancher-alerting-driver. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - # the registry where all images will be pulled from - systemDefaultRegistry: "" - # set this value if you want the sub-charts to be installed into - # a namespace rather than where this chart is installed - namespaceOverride: "" - -prom2teams: - enabled: false - -sachet: - enabled: false diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/Chart.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/Chart.yaml deleted file mode 100644 index 02929f27e..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v2 -appVersion: 1.0.4 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.0.400+up1.0.4-rc4 diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/README.md b/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/README.md deleted file mode 100644 index 046410962..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Rancher Backup CRD - -A Rancher chart that installs the CRDs used by `rancher-backup`. diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/backup.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/backup.yaml deleted file mode 100644 index a4b9471c0..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/resourceset.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/resourceset.yaml deleted file mode 100644 index 665ef786d..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/restore.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/restore.yaml deleted file mode 100644 index 1ad7d1721..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.0.400+up1.0.4-rc4/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/Chart.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/Chart.yaml deleted file mode 100644 index a3deecb73..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v2 -appVersion: 1.1.1 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.1.100+up1.1.1 diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/README.md b/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/README.md deleted file mode 100644 index 046410962..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Rancher Backup CRD - -A Rancher chart that installs the CRDs used by `rancher-backup`. diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/backup.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/backup.yaml deleted file mode 100644 index a4b9471c0..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/resourceset.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/resourceset.yaml deleted file mode 100644 index 665ef786d..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/restore.yaml b/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/restore.yaml deleted file mode 100644 index 1ad7d1721..000000000 --- a/charts/rancher-backup-crd/rancher-backup-crd/1.1.100+up1.1.1/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.200/Chart.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.200/Chart.yaml deleted file mode 100755 index b09f805f1..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.200/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v1 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.0.200 diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.200/README.md b/charts/rancher-backup/rancher-backup-crd/1.0.200/README.md deleted file mode 100755 index f7efdcc7f..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.200/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-backup-crd -A Rancher chart that installs the CRDs used by [rancher-backup](https://github.com/rancher/dev-charts/tree/master/packages/rancher-backup). diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/backup.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/backup.yaml deleted file mode 100755 index a4b9471c0..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/resourceset.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/resourceset.yaml deleted file mode 100755 index 665ef786d..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/restore.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/restore.yaml deleted file mode 100755 index 1ad7d1721..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.200/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.201/Chart.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.201/Chart.yaml deleted file mode 100755 index ebb25151d..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.201/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v1 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.0.201 diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.201/README.md b/charts/rancher-backup/rancher-backup-crd/1.0.201/README.md deleted file mode 100755 index b8bbba6fd..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.201/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-backup-crd -A Rancher chart that installs the CRDs used by rancher-backup. diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/backup.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/backup.yaml deleted file mode 100755 index a4b9471c0..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/resourceset.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/resourceset.yaml deleted file mode 100755 index 665ef786d..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/restore.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/restore.yaml deleted file mode 100755 index 1ad7d1721..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.201/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.300/Chart.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.300/Chart.yaml deleted file mode 100755 index 909e94ff1..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.300/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v1 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.0.300 diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.300/README.md b/charts/rancher-backup/rancher-backup-crd/1.0.300/README.md deleted file mode 100755 index b8bbba6fd..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.300/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-backup-crd -A Rancher chart that installs the CRDs used by rancher-backup. diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/backup.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/backup.yaml deleted file mode 100755 index a4b9471c0..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/resourceset.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/resourceset.yaml deleted file mode 100755 index 665ef786d..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/restore.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/restore.yaml deleted file mode 100755 index 1ad7d1721..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.300/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.301/Chart.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.301/Chart.yaml deleted file mode 100755 index a05487e1f..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.301/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/release-name: rancher-backup-crd -apiVersion: v1 -description: Installs the CRDs for rancher-backup. -name: rancher-backup-crd -type: application -version: 1.0.301 diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.301/README.md b/charts/rancher-backup/rancher-backup-crd/1.0.301/README.md deleted file mode 100755 index b8bbba6fd..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.301/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-backup-crd -A Rancher chart that installs the CRDs used by rancher-backup. diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/backup.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/backup.yaml deleted file mode 100755 index a4b9471c0..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/backup.yaml +++ /dev/null @@ -1,119 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: backups.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.storageLocation - name: Location - type: string - - JSONPath: .status.backupType - name: Type - type: string - - JSONPath: .status.filename - name: Latest-Backup - type: string - - JSONPath: .spec.resourceSetName - name: ResourceSet - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Backup - plural: backups - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - encryptionConfigSecretName: - description: Name of the Secret containing the encryption config - type: string - resourceSetName: - description: Name of the ResourceSet CR to use for backup - type: string - retentionCount: - minimum: 1 - type: integer - schedule: - description: Cron schedule for recurring backups - example: - Descriptors: '@midnight' - Standard crontab specs: 0 0 * * * - type: string - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - resourceSetName - type: object - status: - properties: - backupType: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - filename: - type: string - lastSnapshotTs: - type: string - nextSnapshotAt: - type: string - observedGeneration: - type: integer - storageLocation: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/resourceset.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/resourceset.yaml deleted file mode 100755 index 665ef786d..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/resourceset.yaml +++ /dev/null @@ -1,94 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: resourcesets.resources.cattle.io -spec: - group: resources.cattle.io - names: - kind: ResourceSet - plural: resourcesets - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - controllerReferences: - items: - properties: - apiVersion: - type: string - name: - type: string - namespace: - type: string - replicas: - type: integer - resource: - type: string - type: object - nullable: true - type: array - resourceSelectors: - items: - properties: - apiVersion: - type: string - kinds: - items: - type: string - nullable: true - type: array - kindsRegexp: - type: string - labelSelectors: - nullable: true - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - nullable: true - type: array - type: object - nullable: true - type: array - matchLabels: - additionalProperties: - type: string - nullable: true - type: object - type: object - namespaceRegexp: - type: string - namespaces: - items: - type: string - nullable: true - type: array - resourceNameRegexp: - type: string - resourceNames: - items: - type: string - nullable: true - type: array - type: object - nullable: true - required: - - apiVersion - type: array - required: - - resourceSelectors - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/restore.yaml b/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/restore.yaml deleted file mode 100755 index 1ad7d1721..000000000 --- a/charts/rancher-backup/rancher-backup-crd/1.0.301/templates/restore.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: restores.resources.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.backupSource - name: Backup-Source - type: string - - JSONPath: .spec.backupFilename - name: Backup-File - type: string - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - - JSONPath: .status.conditions[?(@.type=="Ready")].message - name: Status - type: string - group: resources.cattle.io - names: - kind: Restore - plural: restores - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - backupFilename: - type: string - deleteTimeoutSeconds: - maximum: 10 - type: integer - encryptionConfigSecretName: - type: string - prune: - nullable: true - type: boolean - storageLocation: - nullable: true - properties: - s3: - nullable: true - properties: - bucketName: - type: string - credentialSecretName: - type: string - credentialSecretNamespace: - type: string - endpoint: - type: string - endpointCA: - type: string - folder: - type: string - insecureTLSSkipVerify: - type: boolean - region: - type: string - type: object - type: object - required: - - backupFilename - type: object - status: - properties: - backupSource: - type: string - conditions: - items: - properties: - lastTransitionTime: - type: string - lastUpdateTime: - type: string - message: - type: string - reason: - type: string - status: - type: string - type: - type: string - type: object - nullable: true - type: array - observedGeneration: - type: integer - restoreCompletionTs: - type: string - summary: - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-backup/rancher-backup/1.0.200/Chart.yaml b/charts/rancher-backup/rancher-backup/1.0.200/Chart.yaml deleted file mode 100755 index 714ad0b16..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.2 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.0.200 diff --git a/charts/rancher-backup/rancher-backup/1.0.200/README.md b/charts/rancher-backup/rancher-backup/1.0.200/README.md deleted file mode 100755 index feb526977..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -``` -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -``` -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -``` -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -``` -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.0.200/templates/_helpers.tpl deleted file mode 100755 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/clusterrolebinding.yaml deleted file mode 100755 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/deployment.yaml deleted file mode 100755 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/pvc.yaml deleted file mode 100755 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/rancher-resourceset.yaml deleted file mode 100755 index c04d9901c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -resourceSelectors: - - apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" - - apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-" - resourceNames: - - "eks-operator" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" - resourceNames: - - "eks-operator" - - apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|eks.cattle.io$|resources.cattle.io$" - - apiVersion: "management.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "project.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" - - apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" - - apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." - - apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" - namespaces: - - "cattle-system" -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/s3-secret.yaml deleted file mode 100755 index 0401b554b..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName }} - {{- if .folder }} - folder: {{ .folder }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/serviceaccount.yaml deleted file mode 100755 index f333b746c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} diff --git a/charts/rancher-backup/rancher-backup/1.0.200/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.0.200/templates/validate-install-crd.yaml deleted file mode 100755 index 8f04e51e8..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-backup-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-backup/rancher-backup/1.0.200/values.yaml b/charts/rancher-backup/rancher-backup/1.0.200/values.yaml deleted file mode 100755 index dafb30b76..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.200/values.yaml +++ /dev/null @@ -1,49 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.0.2 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/Chart.yaml b/charts/rancher-backup/rancher-backup/1.0.201/Chart.yaml deleted file mode 100755 index c646351b1..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Rancher Backups - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.2 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.0.201 diff --git a/charts/rancher-backup/rancher-backup/1.0.201/README.md b/charts/rancher-backup/rancher-backup/1.0.201/README.md deleted file mode 100755 index feb526977..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -``` -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -``` -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -``` -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -``` -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.0.201/app-readme.md b/charts/rancher-backup/rancher-backup/1.0.201/app-readme.md deleted file mode 100755 index 15a021cdb..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Backup - -This chart enables ability to capture backups of the Rancher application and restore from these backups. This chart can be used to migrate Rancher from one Kubernetes cluster to a different Kubernetes cluster. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/backups/v2.5/). - -This chart installs the following components: - -- [backup-restore-operator](https://github.com/rancher/backup-restore-operator) - - The operator handles backing up all Kubernetes resources and CRDs that Rancher creates and manages from the local cluster. It gathers these resources by querying the Kubernetes API server, packages all the resources to create a tarball file and saves it in the configured backup storage location. - - The operator can be configured to store backups in S3-compatible object stores such as AWS S3 and MinIO, and in persistent volumes. During deployment, you can create a default storage location, but there is always the option to override the default storage location with each backup, but will be limited to using an S3-compatible object store. - - It preserves the ownerReferences on all resources, hence maintaining dependencies between objects. - - This operator provides encryption support, to encrypt user specified resources before saving them in the backup file. It uses the same encryption configuration that is used to enable [Kubernetes Encryption at Rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/). -- Backup - A backup is a CRD (`Backup`) that defines when to take backups, where to store the backup and what encryption to use (optional). Backups can be taken ad hoc or scheduled to be taken in intervals. -- Restore - A restore is a CRD (`Restore`) that defines which backup to use to restore the Rancher application to. diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.0.201/templates/_helpers.tpl deleted file mode 100755 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/clusterrolebinding.yaml deleted file mode 100755 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/deployment.yaml deleted file mode 100755 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/pvc.yaml deleted file mode 100755 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/rancher-resourceset.yaml deleted file mode 100755 index c04d9901c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -resourceSelectors: - - apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" - - apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-" - resourceNames: - - "eks-operator" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" - resourceNames: - - "eks-operator" - - apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|eks.cattle.io$|resources.cattle.io$" - - apiVersion: "management.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "project.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" - - apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" - - apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." - - apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" - namespaces: - - "cattle-system" -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/s3-secret.yaml deleted file mode 100755 index 0401b554b..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName }} - {{- if .folder }} - folder: {{ .folder }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/serviceaccount.yaml deleted file mode 100755 index f333b746c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.0.201/templates/validate-install-crd.yaml deleted file mode 100755 index 8f04e51e8..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-backup-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-backup/rancher-backup/1.0.201/values.yaml b/charts/rancher-backup/rancher-backup/1.0.201/values.yaml deleted file mode 100755 index dafb30b76..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.201/values.yaml +++ /dev/null @@ -1,49 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.0.2 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/Chart.yaml b/charts/rancher-backup/rancher-backup/1.0.300/Chart.yaml deleted file mode 100755 index 404b29b06..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Rancher Backups - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup -apiVersion: v1 -appVersion: v1.0.3 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.0.300 diff --git a/charts/rancher-backup/rancher-backup/1.0.300/README.md b/charts/rancher-backup/rancher-backup/1.0.300/README.md deleted file mode 100755 index feb526977..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -``` -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -``` -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -``` -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -``` -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.0.300/app-readme.md b/charts/rancher-backup/rancher-backup/1.0.300/app-readme.md deleted file mode 100755 index 15a021cdb..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Backup - -This chart enables ability to capture backups of the Rancher application and restore from these backups. This chart can be used to migrate Rancher from one Kubernetes cluster to a different Kubernetes cluster. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/backups/v2.5/). - -This chart installs the following components: - -- [backup-restore-operator](https://github.com/rancher/backup-restore-operator) - - The operator handles backing up all Kubernetes resources and CRDs that Rancher creates and manages from the local cluster. It gathers these resources by querying the Kubernetes API server, packages all the resources to create a tarball file and saves it in the configured backup storage location. - - The operator can be configured to store backups in S3-compatible object stores such as AWS S3 and MinIO, and in persistent volumes. During deployment, you can create a default storage location, but there is always the option to override the default storage location with each backup, but will be limited to using an S3-compatible object store. - - It preserves the ownerReferences on all resources, hence maintaining dependencies between objects. - - This operator provides encryption support, to encrypt user specified resources before saving them in the backup file. It uses the same encryption configuration that is used to enable [Kubernetes Encryption at Rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/). -- Backup - A backup is a CRD (`Backup`) that defines when to take backups, where to store the backup and what encryption to use (optional). Backups can be taken ad hoc or scheduled to be taken in intervals. -- Restore - A restore is a CRD (`Restore`) that defines which backup to use to restore the Rancher application to. diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.0.300/templates/_helpers.tpl deleted file mode 100755 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/clusterrolebinding.yaml deleted file mode 100755 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/deployment.yaml deleted file mode 100755 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/pvc.yaml deleted file mode 100755 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/rancher-resourceset.yaml deleted file mode 100755 index c04d9901c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -resourceSelectors: - - apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" - - apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-" - resourceNames: - - "eks-operator" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" - resourceNames: - - "eks-operator" - - apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|eks.cattle.io$|resources.cattle.io$" - - apiVersion: "management.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "project.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" - - apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" - - apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." - - apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" - namespaces: - - "cattle-system" -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/s3-secret.yaml deleted file mode 100755 index a07623d90..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName }} - {{- if .folder }} - folder: {{ .folder }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify | quote }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/serviceaccount.yaml deleted file mode 100755 index f333b746c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.0.300/templates/validate-install-crd.yaml deleted file mode 100755 index 8f04e51e8..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-backup-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-backup/rancher-backup/1.0.300/values.yaml b/charts/rancher-backup/rancher-backup/1.0.300/values.yaml deleted file mode 100755 index 46d231fd2..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.300/values.yaml +++ /dev/null @@ -1,49 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.0.3 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-backup/rancher-backup/1.0.301/Chart.yaml b/charts/rancher-backup/rancher-backup/1.0.301/Chart.yaml deleted file mode 100755 index aa39ba99d..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Rancher Backups - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup -apiVersion: v1 -appVersion: v1.0.3 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.0.301 diff --git a/charts/rancher-backup/rancher-backup/1.0.301/README.md b/charts/rancher-backup/rancher-backup/1.0.301/README.md deleted file mode 100755 index 67f7cc4d9..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -``` -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -``` -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials. This can be any namespace. | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -``` -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -``` -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.0.301/app-readme.md b/charts/rancher-backup/rancher-backup/1.0.301/app-readme.md deleted file mode 100755 index 15a021cdb..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Backup - -This chart enables ability to capture backups of the Rancher application and restore from these backups. This chart can be used to migrate Rancher from one Kubernetes cluster to a different Kubernetes cluster. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/backups/v2.5/). - -This chart installs the following components: - -- [backup-restore-operator](https://github.com/rancher/backup-restore-operator) - - The operator handles backing up all Kubernetes resources and CRDs that Rancher creates and manages from the local cluster. It gathers these resources by querying the Kubernetes API server, packages all the resources to create a tarball file and saves it in the configured backup storage location. - - The operator can be configured to store backups in S3-compatible object stores such as AWS S3 and MinIO, and in persistent volumes. During deployment, you can create a default storage location, but there is always the option to override the default storage location with each backup, but will be limited to using an S3-compatible object store. - - It preserves the ownerReferences on all resources, hence maintaining dependencies between objects. - - This operator provides encryption support, to encrypt user specified resources before saving them in the backup file. It uses the same encryption configuration that is used to enable [Kubernetes Encryption at Rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/). -- Backup - A backup is a CRD (`Backup`) that defines when to take backups, where to store the backup and what encryption to use (optional). Backups can be taken ad hoc or scheduled to be taken in intervals. -- Restore - A restore is a CRD (`Restore`) that defines which backup to use to restore the Rancher application to. diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.0.301/templates/_helpers.tpl deleted file mode 100755 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/clusterrolebinding.yaml deleted file mode 100755 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/deployment.yaml deleted file mode 100755 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/pvc.yaml deleted file mode 100755 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/rancher-resourceset.yaml deleted file mode 100755 index c04d9901c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -resourceSelectors: - - apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" - - apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-" - resourceNames: - - "eks-operator" - - apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" - resourceNames: - - "eks-operator" - - apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|eks.cattle.io$|resources.cattle.io$" - - apiVersion: "management.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "project.cattle.io/v3" - kindsRegexp: "." - - apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" - - apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" - - apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." - - apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" - namespaces: - - "cattle-system" -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/s3-secret.yaml deleted file mode 100755 index a07623d90..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName }} - {{- if .folder }} - folder: {{ .folder }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify | quote }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/serviceaccount.yaml deleted file mode 100755 index f333b746c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} diff --git a/charts/rancher-backup/rancher-backup/1.0.301/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.0.301/templates/validate-install-crd.yaml deleted file mode 100755 index f63fd2e2e..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-backup/rancher-backup/1.0.301/values.yaml b/charts/rancher-backup/rancher-backup/1.0.301/values.yaml deleted file mode 100755 index 46d231fd2..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.301/values.yaml +++ /dev/null @@ -1,49 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.0.3 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/Chart.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/Chart.yaml deleted file mode 100644 index 99990f942..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Rancher Backups - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup -apiVersion: v2 -appVersion: 1.0.4 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.0.400+up1.0.4-rc4 diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/README.md b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/README.md deleted file mode 100644 index 00fc96d92..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -```bash -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -```bash -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials. This can be any namespace. | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -```bash -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -```bash -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/app-readme.md b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/app-readme.md deleted file mode 100644 index 15a021cdb..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Backup - -This chart enables ability to capture backups of the Rancher application and restore from these backups. This chart can be used to migrate Rancher from one Kubernetes cluster to a different Kubernetes cluster. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/backups/v2.5/). - -This chart installs the following components: - -- [backup-restore-operator](https://github.com/rancher/backup-restore-operator) - - The operator handles backing up all Kubernetes resources and CRDs that Rancher creates and manages from the local cluster. It gathers these resources by querying the Kubernetes API server, packages all the resources to create a tarball file and saves it in the configured backup storage location. - - The operator can be configured to store backups in S3-compatible object stores such as AWS S3 and MinIO, and in persistent volumes. During deployment, you can create a default storage location, but there is always the option to override the default storage location with each backup, but will be limited to using an S3-compatible object store. - - It preserves the ownerReferences on all resources, hence maintaining dependencies between objects. - - This operator provides encryption support, to encrypt user specified resources before saving them in the backup file. It uses the same encryption configuration that is used to enable [Kubernetes Encryption at Rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/). -- Backup - A backup is a CRD (`Backup`) that defines when to take backups, where to store the backup and what encryption to use (optional). Backups can be taken ad hoc or scheduled to be taken in intervals. -- Restore - A restore is a CRD (`Restore`) that defines which backup to use to restore the Rancher application to. diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/eks.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/eks.yaml deleted file mode 100644 index 59f47ce47..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/eks.yaml +++ /dev/null @@ -1,17 +0,0 @@ -- apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "eks.cattle.io$" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "eks-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "eks-operator" diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/fleet.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/fleet.yaml deleted file mode 100644 index 140a11978..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/fleet.yaml +++ /dev/null @@ -1,49 +0,0 @@ -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - key: "fleet.cattle.io/managed" - operator: "In" - values: ["true"] -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^fleet-|^gitjob-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^fleet-" - resourceNames: - - "gitjob" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "fleet.cattle.io$|gitjob.cattle.io$" -- apiVersion: "fleet.cattle.io/v1alpha1" - kindsRegexp: "." -- apiVersion: "gitjob.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - resourceNameRegexp: "^fleet-" - resourceNames: - - "gitjob" -- apiVersion: "apps/v1" - kindsRegexp: "^services$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - resourceNames: - - "gitjob" diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/gke.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/gke.yaml deleted file mode 100644 index a77019235..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/gke.yaml +++ /dev/null @@ -1,17 +0,0 @@ -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "gke.cattle.io$" -- apiVersion: "gke.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "gke-config-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "gke-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "gke-operator" diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher-operator.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher-operator.yaml deleted file mode 100644 index 3518fb5b7..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher-operator.yaml +++ /dev/null @@ -1,27 +0,0 @@ -- apiVersion: "rancher.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "rancher-operator" - namespaces: - - "rancher-operator-system" -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaces: - - "rancher-operator-system" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "rancher-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "rancher-operator" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "rancher.cattle.io$" -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNames: - - "rancher-operator-system" diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher.yaml deleted file mode 100644 index 14d65a8d6..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/files/default-resourceset-contents/rancher.yaml +++ /dev/null @@ -1,44 +0,0 @@ -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - namespaces: - - "cattle-system" -- apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" -- apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-|^crb-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|resources.cattle.io$" -- apiVersion: "management.cattle.io/v3" - kindsRegexp: "." -- apiVersion: "project.cattle.io/v3" - kindsRegexp: "." -- apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" -- apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/_helpers.tpl deleted file mode 100644 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/clusterrolebinding.yaml deleted file mode 100644 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/deployment.yaml deleted file mode 100644 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/pvc.yaml deleted file mode 100644 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/rancher-resourceset.yaml deleted file mode 100644 index 05add8824..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" -resourceSelectors: -{{- range $path, $_ := .Files.Glob "files/default-resourceset-contents/*.yaml" -}} - {{- $.Files.Get $path | nindent 2 -}} -{{- end -}} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/s3-secret.yaml deleted file mode 100644 index a07623d90..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName }} - {{- if .folder }} - folder: {{ .folder }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify | quote }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/serviceaccount.yaml deleted file mode 100644 index f333b746c..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/validate-install-crd.yaml deleted file mode 100644 index f63fd2e2e..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/values.yaml b/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/values.yaml deleted file mode 100644 index 69ed2e011..000000000 --- a/charts/rancher-backup/rancher-backup/1.0.400+up1.0.4-rc4/values.yaml +++ /dev/null @@ -1,49 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.0.4-rc4 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/Chart.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/Chart.yaml deleted file mode 100644 index 356a363b5..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-backup-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Rancher Backups - catalog.cattle.io/namespace: cattle-resources-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: resources.cattle.io.resourceset/v1 - catalog.cattle.io/release-name: rancher-backup - catalog.cattle.io/scope: management - catalog.cattle.io/ui-component: rancher-backup -apiVersion: v2 -appVersion: 1.1.1 -description: Provides ability to back up and restore the Rancher application running - on any Kubernetes cluster -icon: https://charts.rancher.io/assets/logos/backup-restore.svg -keywords: -- applications -- infrastructure -name: rancher-backup -version: 1.1.100+up1.1.1 diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/README.md b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/README.md deleted file mode 100644 index 8d645b479..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# Rancher Backup - -This chart provides ability to back up and restore the Rancher application running on any Kubernetes cluster. - -Refer [this](https://github.com/rancher/backup-restore-operator) repository for implementation details. - ------ - -### Get Repo Info -```bash -helm repo add rancher-chart https://charts.rancher.io -helm repo update -``` - ------ - -### Install Chart -```bash -helm install rancher-backup-crd rancher-chart/rancher-backup-crd -n cattle-resources-system --create-namespace -helm install rancher-backup rancher-chart/rancher-backup -n cattle-resources-system -``` - ------ - -### Configuration -The following table lists the configurable parameters of the rancher-backup chart and their default values: - -| Parameter | Description | Default | -|----------|---------------|-------| -| image.repository | Container image repository | rancher/backup-restore-operator | -| image.tag | Container image tag | v0.1.0-rc1 | -| s3.enabled | Configure S3 compatible default storage location. Current version supports S3 and MinIO | false | -| s3.credentialSecretName | Name of the Secret containing S3 credentials. This is an optional field. Skip this field in order to use IAM Role authentication. The Secret must contain following two keys, `accessKey` and `secretKey` | "" | -| s3.credentialSecretNamespace | Namespace of the Secret containing S3 credentials. This can be any namespace. | "" | -| s3.region | Region of the S3 Bucket (Required for S3, not valid for MinIO) | "" | -| s3.bucketName | Name of the Bucket | "" | -| s3.folder | Base folder within the Bucket (optional) | "" | -| s3.endpoint | Endpoint for the S3 storage provider | "" | -| s3.endpointCA | Base64 encoded CA cert for the S3 storage provider (optional) | "" | -| s3.insecureTLSSkipVerify | Skip SSL verification | false | -| persistence.enabled | Configure a Persistent Volume as the default storage location. It accepts either a StorageClass name to create a PVC, or directly accepts the PV to use. The Persistent Volume is mounted at `/var/lib/backups` in the operator pod | false | -| persistence.storageClass | StorageClass to use for dynamically provisioning the Persistent Volume, which will be used for storing backups | "" | -| persistence.volumeName | Persistent Volume to use for storing backups | "" | -| persistence.size | Requested size of the Persistent Volume (Applicable when using dynamic provisioning) | "" | -| nodeSelector | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector | {} | -| tolerations | https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration | [] | -| affinity | https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity | {} | -| serviceAccount.annotations | Annotations to apply to created service account | {} | - ------ - -### CRDs - -Refer [this](https://github.com/rancher/backup-restore-operator#crds) section for information on CRDs that this chart installs. Also refer [this](https://github.com/rancher/backup-restore-operator/tree/master/examples) folder containing sample manifests for the CRDs. - ------ -### Upgrading Chart -```bash -helm upgrade rancher-backup-crd -n cattle-resources-system -helm upgrade rancher-backup -n cattle-resources-system -``` - ------ -### Uninstall Chart - -```bash -helm uninstall rancher-backup -n cattle-resources-system -helm uninstall rancher-backup-crd -n cattle-resources-system -``` - diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/app-readme.md b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/app-readme.md deleted file mode 100644 index 15a021cdb..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Backup - -This chart enables ability to capture backups of the Rancher application and restore from these backups. This chart can be used to migrate Rancher from one Kubernetes cluster to a different Kubernetes cluster. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/backups/v2.5/). - -This chart installs the following components: - -- [backup-restore-operator](https://github.com/rancher/backup-restore-operator) - - The operator handles backing up all Kubernetes resources and CRDs that Rancher creates and manages from the local cluster. It gathers these resources by querying the Kubernetes API server, packages all the resources to create a tarball file and saves it in the configured backup storage location. - - The operator can be configured to store backups in S3-compatible object stores such as AWS S3 and MinIO, and in persistent volumes. During deployment, you can create a default storage location, but there is always the option to override the default storage location with each backup, but will be limited to using an S3-compatible object store. - - It preserves the ownerReferences on all resources, hence maintaining dependencies between objects. - - This operator provides encryption support, to encrypt user specified resources before saving them in the backup file. It uses the same encryption configuration that is used to enable [Kubernetes Encryption at Rest](https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/). -- Backup - A backup is a CRD (`Backup`) that defines when to take backups, where to store the backup and what encryption to use (optional). Backups can be taken ad hoc or scheduled to be taken in intervals. -- Restore - A restore is a CRD (`Restore`) that defines which backup to use to restore the Rancher application to. diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/aks.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/aks.yaml deleted file mode 100644 index de8ec1b8a..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/aks.yaml +++ /dev/null @@ -1,25 +0,0 @@ -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "aks.cattle.io$" -- apiVersion: "aks.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - namespaces: - - "cattle-system" - resourceNames: - - "aks-config-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "aks-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "aks-operator" -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaces: - - "cattle-system" - resourceNames: - - "aks-operator" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/eks.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/eks.yaml deleted file mode 100644 index 59f47ce47..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/eks.yaml +++ /dev/null @@ -1,17 +0,0 @@ -- apiVersion: "eks.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "eks-config-operator" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "eks.cattle.io$" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "eks-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "eks-operator" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/fleet.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/fleet.yaml deleted file mode 100644 index 140a11978..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/fleet.yaml +++ /dev/null @@ -1,49 +0,0 @@ -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] - - key: "fleet.cattle.io/managed" - operator: "In" - values: ["true"] -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^fleet-|^cluster-fleet-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^fleet-|^gitjob-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^fleet-" - resourceNames: - - "gitjob" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "fleet.cattle.io$|gitjob.cattle.io$" -- apiVersion: "fleet.cattle.io/v1alpha1" - kindsRegexp: "." -- apiVersion: "gitjob.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - resourceNameRegexp: "^fleet-" - resourceNames: - - "gitjob" -- apiVersion: "apps/v1" - kindsRegexp: "^services$" - namespaceRegexp: "^fleet-|^cluster-fleet-" - resourceNames: - - "gitjob" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/gke.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/gke.yaml deleted file mode 100644 index a77019235..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/gke.yaml +++ /dev/null @@ -1,17 +0,0 @@ -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "gke.cattle.io$" -- apiVersion: "gke.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "gke-config-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "gke-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "gke-operator" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher-operator.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher-operator.yaml deleted file mode 100644 index 3518fb5b7..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher-operator.yaml +++ /dev/null @@ -1,27 +0,0 @@ -- apiVersion: "rancher.cattle.io/v1" - kindsRegexp: "." -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - resourceNames: - - "rancher-operator" - namespaces: - - "rancher-operator-system" -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaces: - - "rancher-operator-system" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNames: - - "rancher-operator" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNames: - - "rancher-operator" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "rancher.cattle.io$" -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNames: - - "rancher-operator-system" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher.yaml deleted file mode 100644 index 14d65a8d6..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/files/default-resourceset-contents/rancher.yaml +++ /dev/null @@ -1,44 +0,0 @@ -- apiVersion: "v1" - kindsRegexp: "^namespaces$" - resourceNameRegexp: "^cattle-|^p-|^c-|^user-|^u-" - resourceNames: - - "local" -- apiVersion: "apps/v1" - kindsRegexp: "^deployments$" - namespaces: - - "cattle-system" -- apiVersion: "v1" - kindsRegexp: "^secrets$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" - labelSelectors: - matchExpressions: - - key: "owner" - operator: "NotIn" - values: ["helm"] -- apiVersion: "v1" - kindsRegexp: "^serviceaccounts$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" -- apiVersion: "v1" - kindsRegexp: "^configmaps$" - namespaces: - - "cattle-system" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^roles$|^rolebindings$" - namespaceRegexp: "^cattle-|^p-|^c-|^local$|^user-|^u-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterrolebindings$" - resourceNameRegexp: "^cattle-|^clusterrolebinding-|^globaladmin-user-|^grb-u-|^crb-" -- apiVersion: "rbac.authorization.k8s.io/v1" - kindsRegexp: "^clusterroles$" - resourceNameRegexp: "^cattle-|^p-|^c-|^local-|^user-|^u-|^project-|^create-ns$" -- apiVersion: "apiextensions.k8s.io/v1beta1" - kindsRegexp: "." - resourceNameRegexp: "management.cattle.io$|project.cattle.io$|catalog.cattle.io$|resources.cattle.io$" -- apiVersion: "management.cattle.io/v3" - kindsRegexp: "." -- apiVersion: "project.cattle.io/v3" - kindsRegexp: "." -- apiVersion: "catalog.cattle.io/v1" - kindsRegexp: "^clusterrepos$" -- apiVersion: "resources.cattle.io/v1" - kindsRegexp: "^ResourceSet$" diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/_helpers.tpl b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/_helpers.tpl deleted file mode 100644 index 411cfc63a..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "backupRestore.fullname" -}} -{{- .Chart.Name | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "backupRestore.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "backupRestore.labels" -}} -helm.sh/chart: {{ include "backupRestore.chart" . }} -{{ include "backupRestore.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "backupRestore.selectorLabels" -}} -app.kubernetes.io/name: {{ include "backupRestore.fullname" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -resources.cattle.io/operator: backup-restore -{{- end }} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "backupRestore.serviceAccountName" -}} -{{ include "backupRestore.fullname" . }} -{{- end }} - - -{{- define "backupRestore.s3SecretName" -}} -{{- printf "%s-%s" .Chart.Name "s3" | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create PVC name using release and revision number. -*/}} -{{- define "backupRestore.pvcName" -}} -{{- printf "%s-%d" .Release.Name .Release.Revision }} -{{- end }} - diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/clusterrolebinding.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/clusterrolebinding.yaml deleted file mode 100644 index cf4abf670..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ include "backupRestore.fullname" . }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -subjects: -- kind: ServiceAccount - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/deployment.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/deployment.yaml deleted file mode 100644 index 776351ae5..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/deployment.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if and .Values.s3.enabled .Values.persistence.enabled }} -{{- fail "\n\nCannot configure both s3 and PV for storing backups" }} -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "backupRestore.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - selector: - matchLabels: - {{- include "backupRestore.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "backupRestore.selectorLabels" . | nindent 8 }} - annotations: - checksum/s3: {{ include (print $.Template.BasePath "/s3-secret.yaml") . | sha256sum }} - checksum/pvc: {{ include (print $.Template.BasePath "/pvc.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "backupRestore.serviceAccountName" . }} - containers: - - name: {{ .Chart.Name }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: Always - env: - - name: CHART_NAMESPACE - value: {{ .Release.Namespace }} - {{- if .Values.s3.enabled }} - - name: DEFAULT_S3_BACKUP_STORAGE_LOCATION - value: {{ include "backupRestore.s3SecretName" . }} - {{- end }} - {{- if .Values.persistence.enabled }} - - name: DEFAULT_PERSISTENCE_ENABLED - value: "persistence-enabled" - volumeMounts: - - mountPath: "/var/lib/backups" - name: pv-storage - volumes: - - name: pv-storage - persistentVolumeClaim: - claimName: {{ include "backupRestore.pvcName" . }} - {{- end }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux-node-tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/pvc.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/pvc.yaml deleted file mode 100644 index ff57e4dab..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/pvc.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "backupRestore.pvcName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -spec: - accessModes: - - ReadWriteOnce - resources: - {{- with .Values.persistence }} - requests: - storage: {{ .size | quote }} -{{- if .storageClass }} -{{- if (eq "-" .storageClass) }} - storageClassName: "" -{{- else }} - storageClassName: {{ .storageClass | quote }} -{{- end }} -{{- end }} -{{- if .volumeName }} - volumeName: {{ .volumeName | quote }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/rancher-resourceset.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/rancher-resourceset.yaml deleted file mode 100644 index 05add8824..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/rancher-resourceset.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: resources.cattle.io/v1 -kind: ResourceSet -metadata: - name: rancher-resource-set -controllerReferences: - - apiVersion: "apps/v1" - resource: "deployments" - name: "rancher" - namespace: "cattle-system" -resourceSelectors: -{{- range $path, $_ := .Files.Glob "files/default-resourceset-contents/*.yaml" -}} - {{- $.Files.Get $path | nindent 2 -}} -{{- end -}} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/s3-secret.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/s3-secret.yaml deleted file mode 100644 index 726509730..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/s3-secret.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if .Values.s3.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ include "backupRestore.s3SecretName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -type: Opaque -stringData: - {{- with .Values.s3 }} - {{- if .credentialSecretName }} - credentialSecretName: {{ .credentialSecretName }} - credentialSecretNamespace: {{ required "When providing a Secret containing S3 credentials, a valid .Values.credentialSecretNamespace must be provided" .credentialSecretNamespace }} - {{- end }} - {{- if .region }} - region: {{ .region | quote }} - {{- end }} - bucketName: {{ required "A valid .Values.bucketName is required for configuring S3 compatible storage as the default backup storage location" .bucketName | quote }} - {{- if .folder }} - folder: {{ .folder | quote }} - {{- end }} - endpoint: {{ required "A valid .Values.endpoint is required for configuring S3 compatible storage as the default backup storage location" .endpoint | quote }} - {{- if .endpointCA }} - endpointCA: {{ .endpointCA }} - {{- end }} - {{- if .insecureTLSSkipVerify }} - insecureTLSSkipVerify: {{ .insecureTLSSkipVerify | quote }} - {{- end }} - {{- end }} -{{ end }} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/serviceaccount.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/serviceaccount.yaml deleted file mode 100644 index 2f0147a14..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "backupRestore.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "backupRestore.labels" . | nindent 4 }} -{{- if .Values.serviceAccount.annotations }} - annotations: - {{- toYaml .Values.serviceAccount.annotations | nindent 4 }} -{{- end }} diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/validate-install-crd.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/validate-install-crd.yaml deleted file mode 100644 index f63fd2e2e..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/templates/validate-install-crd.yaml +++ /dev/null @@ -1,16 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "resources.cattle.io/v1/Backup" false -}} -# {{- set $found "resources.cattle.io/v1/ResourceSet" false -}} -# {{- set $found "resources.cattle.io/v1/Restore" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/values.yaml b/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/values.yaml deleted file mode 100644 index 6c599db73..000000000 --- a/charts/rancher-backup/rancher-backup/1.1.100+up1.1.1/values.yaml +++ /dev/null @@ -1,52 +0,0 @@ -image: - repository: rancher/backup-restore-operator - tag: v1.1.1 - -## Default s3 bucket for storing all backup files created by the backup-restore-operator -s3: - enabled: false - ## credentialSecretName if set, should be the name of the Secret containing AWS credentials. - ## To use IAM Role, don't set this field - credentialSecretName: "" - credentialSecretNamespace: "" - region: "" - bucketName: "" - folder: "" - endpoint: "" - endpointCA: "" - insecureTLSSkipVerify: false - -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## If persistence is enabled, operator will create a PVC with mountPath /var/lib/backups -persistence: - enabled: false - - ## 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. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack). - ## Refer https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1 - ## - storageClass: "-" - - ## If you want to disable dynamic provisioning by setting storageClass to "-" above, - ## and want to target a particular PV, provide name of the target volume - volumeName: "" - - ## Only certain StorageClasses allow resizing PVs; Refer https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/ - size: 2Gi - - -global: - cattle: - systemDefaultRegistry: "" - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -serviceAccount: - annotations: {} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/Chart.yaml deleted file mode 100755 index de2b2e1a4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.100 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/README.md deleted file mode 100755 index 6c3044b1a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by [rancher-cis-benchmark](https://github.com/rancher/dev-charts/tree/master/packages/rancher-cis-benchmark). diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscan.yaml deleted file mode 100755 index 921430fb4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscan.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanbenchmark.yaml deleted file mode 100755 index 4ad81c651..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNameSpace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanprofile.yaml deleted file mode 100755 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanreport.yaml deleted file mode 100755 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.100/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/Chart.yaml deleted file mode 100755 index 4f913ffe4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.200 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/README.md deleted file mode 100755 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscan.yaml deleted file mode 100755 index 921430fb4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscan.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - type: object - status: - properties: - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanbenchmark.yaml deleted file mode 100755 index 4ad81c651..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,49 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNameSpace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanprofile.yaml deleted file mode 100755 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanreport.yaml deleted file mode 100755 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.200/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/Chart.yaml deleted file mode 100755 index e5ad1ef62..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.300 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/README.md deleted file mode 100755 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscan.yaml deleted file mode 100755 index beca6e1f8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscan.yaml +++ /dev/null @@ -1,149 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.warn - name: Warn - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.scheduledScanConfig.cronSchedule - name: CronSchedule - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - scheduledScanConfig: - nullable: true - properties: - cronSchedule: - nullable: true - type: string - retentionCount: - type: integer - scanAlertRule: - nullable: true - properties: - alertOnComplete: - type: boolean - alertOnFailure: - type: boolean - type: object - type: object - scoreWarning: - enum: - - pass - - fail - nullable: true - type: string - type: object - status: - properties: - NextScanAt: - nullable: true - type: string - ScanAlertingRuleName: - nullable: true - type: string - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - warn: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanbenchmark.yaml deleted file mode 100755 index aa6fc2218..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - - JSONPath: .spec.customBenchmarkConfigMapName - name: customBenchmarkConfigMapName - type: string - - JSONPath: .spec.customBenchmarkConfigMapNamespace - name: customBenchmarkConfigMapNamespace - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNamespace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanprofile.yaml deleted file mode 100755 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanreport.yaml deleted file mode 100755 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.300/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/Chart.yaml deleted file mode 100755 index 3edb07a29..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.301 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/README.md deleted file mode 100755 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscan.yaml deleted file mode 100755 index beca6e1f8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscan.yaml +++ /dev/null @@ -1,149 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.warn - name: Warn - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.scheduledScanConfig.cronSchedule - name: CronSchedule - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - scheduledScanConfig: - nullable: true - properties: - cronSchedule: - nullable: true - type: string - retentionCount: - type: integer - scanAlertRule: - nullable: true - properties: - alertOnComplete: - type: boolean - alertOnFailure: - type: boolean - type: object - type: object - scoreWarning: - enum: - - pass - - fail - nullable: true - type: string - type: object - status: - properties: - NextScanAt: - nullable: true - type: string - ScanAlertingRuleName: - nullable: true - type: string - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - warn: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanbenchmark.yaml deleted file mode 100755 index aa6fc2218..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - - JSONPath: .spec.customBenchmarkConfigMapName - name: customBenchmarkConfigMapName - type: string - - JSONPath: .spec.customBenchmarkConfigMapNamespace - name: customBenchmarkConfigMapNamespace - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNamespace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanprofile.yaml deleted file mode 100755 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanreport.yaml deleted file mode 100755 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.301/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/Chart.yaml deleted file mode 100644 index 5d62a6b99..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.400 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/README.md deleted file mode 100644 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscan.yaml deleted file mode 100644 index beca6e1f8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscan.yaml +++ /dev/null @@ -1,149 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.warn - name: Warn - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.scheduledScanConfig.cronSchedule - name: CronSchedule - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - scheduledScanConfig: - nullable: true - properties: - cronSchedule: - nullable: true - type: string - retentionCount: - type: integer - scanAlertRule: - nullable: true - properties: - alertOnComplete: - type: boolean - alertOnFailure: - type: boolean - type: object - type: object - scoreWarning: - enum: - - pass - - fail - nullable: true - type: string - type: object - status: - properties: - NextScanAt: - nullable: true - type: string - ScanAlertingRuleName: - nullable: true - type: string - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - warn: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanbenchmark.yaml deleted file mode 100644 index aa6fc2218..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - - JSONPath: .spec.customBenchmarkConfigMapName - name: customBenchmarkConfigMapName - type: string - - JSONPath: .spec.customBenchmarkConfigMapNamespace - name: customBenchmarkConfigMapNamespace - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNamespace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanprofile.yaml deleted file mode 100644 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanreport.yaml deleted file mode 100644 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.400/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/Chart.yaml deleted file mode 100644 index 6174d0e35..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.500 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/README.md deleted file mode 100644 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscan.yaml deleted file mode 100644 index beca6e1f8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscan.yaml +++ /dev/null @@ -1,149 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.warn - name: Warn - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.scheduledScanConfig.cronSchedule - name: CronSchedule - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - scheduledScanConfig: - nullable: true - properties: - cronSchedule: - nullable: true - type: string - retentionCount: - type: integer - scanAlertRule: - nullable: true - properties: - alertOnComplete: - type: boolean - alertOnFailure: - type: boolean - type: object - type: object - scoreWarning: - enum: - - pass - - fail - nullable: true - type: string - type: object - status: - properties: - NextScanAt: - nullable: true - type: string - ScanAlertingRuleName: - nullable: true - type: string - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - warn: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanbenchmark.yaml deleted file mode 100644 index aa6fc2218..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - - JSONPath: .spec.customBenchmarkConfigMapName - name: customBenchmarkConfigMapName - type: string - - JSONPath: .spec.customBenchmarkConfigMapNamespace - name: customBenchmarkConfigMapNamespace - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNamespace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanprofile.yaml deleted file mode 100644 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanreport.yaml deleted file mode 100644 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.500/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/Chart.yaml deleted file mode 100644 index d0411bb4d..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/release-name: rancher-cis-benchmark-crd -apiVersion: v1 -description: Installs the CRDs for rancher-cis-benchmark. -name: rancher-cis-benchmark-crd -type: application -version: 1.0.501 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/README.md deleted file mode 100644 index f6d9ef621..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-cis-benchmark-crd -A Rancher chart that installs the CRDs used by rancher-cis-benchmark. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscan.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscan.yaml deleted file mode 100644 index beca6e1f8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscan.yaml +++ /dev/null @@ -1,149 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscans.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .status.lastRunScanProfileName - name: ClusterScanProfile - type: string - - JSONPath: .status.summary.total - name: Total - type: string - - JSONPath: .status.summary.pass - name: Pass - type: string - - JSONPath: .status.summary.fail - name: Fail - type: string - - JSONPath: .status.summary.skip - name: Skip - type: string - - JSONPath: .status.summary.warn - name: Warn - type: string - - JSONPath: .status.summary.notApplicable - name: Not Applicable - type: string - - JSONPath: .status.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.scheduledScanConfig.cronSchedule - name: CronSchedule - type: string - group: cis.cattle.io - names: - kind: ClusterScan - plural: clusterscans - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - scanProfileName: - nullable: true - type: string - scheduledScanConfig: - nullable: true - properties: - cronSchedule: - nullable: true - type: string - retentionCount: - type: integer - scanAlertRule: - nullable: true - properties: - alertOnComplete: - type: boolean - alertOnFailure: - type: boolean - type: object - type: object - scoreWarning: - enum: - - pass - - fail - nullable: true - type: string - type: object - status: - properties: - NextScanAt: - nullable: true - type: string - ScanAlertingRuleName: - nullable: true - type: string - conditions: - items: - properties: - lastTransitionTime: - nullable: true - type: string - lastUpdateTime: - nullable: true - type: string - message: - nullable: true - type: string - reason: - nullable: true - type: string - status: - nullable: true - type: string - type: - nullable: true - type: string - type: object - nullable: true - type: array - display: - nullable: true - properties: - error: - type: boolean - message: - nullable: true - type: string - state: - nullable: true - type: string - transitioning: - type: boolean - type: object - lastRunScanProfileName: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - observedGeneration: - type: integer - summary: - nullable: true - properties: - fail: - type: integer - notApplicable: - type: integer - pass: - type: integer - skip: - type: integer - total: - type: integer - warn: - type: integer - type: object - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanbenchmark.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanbenchmark.yaml deleted file mode 100644 index aa6fc2218..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanbenchmark.yaml +++ /dev/null @@ -1,55 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanbenchmarks.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.clusterProvider - name: ClusterProvider - type: string - - JSONPath: .spec.minKubernetesVersion - name: MinKubernetesVersion - type: string - - JSONPath: .spec.maxKubernetesVersion - name: MaxKubernetesVersion - type: string - - JSONPath: .spec.customBenchmarkConfigMapName - name: customBenchmarkConfigMapName - type: string - - JSONPath: .spec.customBenchmarkConfigMapNamespace - name: customBenchmarkConfigMapNamespace - type: string - group: cis.cattle.io - names: - kind: ClusterScanBenchmark - plural: clusterscanbenchmarks - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterProvider: - nullable: true - type: string - customBenchmarkConfigMapName: - nullable: true - type: string - customBenchmarkConfigMapNamespace: - nullable: true - type: string - maxKubernetesVersion: - nullable: true - type: string - minKubernetesVersion: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanprofile.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanprofile.yaml deleted file mode 100644 index 21bb68396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanprofile.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanprofiles.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanProfile - plural: clusterscanprofiles - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - skipTests: - items: - nullable: true - type: string - nullable: true - type: array - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanreport.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanreport.yaml deleted file mode 100644 index 017020a95..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark-crd/1.0.501/templates/clusterscanreport.yaml +++ /dev/null @@ -1,40 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: clusterscanreports.cis.cattle.io -spec: - additionalPrinterColumns: - - JSONPath: .spec.lastRunTimestamp - name: LastRunTimestamp - type: string - - JSONPath: .spec.benchmarkVersion - name: BenchmarkVersion - type: string - group: cis.cattle.io - names: - kind: ClusterScanReport - plural: clusterscanreports - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - benchmarkVersion: - nullable: true - type: string - lastRunTimestamp: - nullable: true - type: string - reportJSON: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/Chart.yaml deleted file mode 100755 index 7ba2c55be..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/Chart.yaml +++ /dev/null @@ -1,17 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.1 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.100 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/README.md deleted file mode 100755 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/_helpers.tpl deleted file mode 100755 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-cis-1.5.yaml deleted file mode 100755 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-eks-1.0.yaml deleted file mode 100755 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-gke-1.0.yaml deleted file mode 100755 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100755 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100755 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/cis-roles.yaml deleted file mode 100755 index 08af2b185..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/cis-roles.yaml +++ /dev/null @@ -1,51 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: cis-admin - namespace: {{ template "cis.namespace" . }} -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "cis.namespace" . }} - name: cis-edit -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "cis.namespace" . }} - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/configmap.yaml deleted file mode 100755 index 7f14b1396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: "rke-profile-permissive" - eks: "eks-profile" - gke: "gke-profile" - default: "cis-1.5-profile" \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/deployment.yaml deleted file mode 100755 index 1f64ea5db..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/deployment.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/network_policy_allow_all.yaml deleted file mode 100755 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/patch_default_serviceaccount.yaml deleted file mode 100755 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/rbac.yaml deleted file mode 100755 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-cis-1.5.yml deleted file mode 100755 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-hardened.yml deleted file mode 100755 index 2a9819389..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-permissive.yml deleted file mode 100755 index 01266cf06..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofile-rke-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofileeks.yml deleted file mode 100755 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofilegke.yml deleted file mode 100755 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/serviceaccount.yaml deleted file mode 100755 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/validate-install-crd.yaml deleted file mode 100755 index bf516759a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-cis-benchmark-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/values.yaml deleted file mode 100755 index c726c9bc4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.100/values.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.1 - securityScan: - repository: rancher/security-scan - tag: v0.2.1 - sonobuoy: - repository: rancher/sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/Chart.yaml deleted file mode 100755 index f07e91e78..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v1.0.2 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.200 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/README.md deleted file mode 100755 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/app-readme.md deleted file mode 100755 index f170ba263..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/app-readme.md +++ /dev/null @@ -1,12 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/_helpers.tpl deleted file mode 100755 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-cis-1.5.yaml deleted file mode 100755 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-eks-1.0.yaml deleted file mode 100755 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-gke-1.0.yaml deleted file mode 100755 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100755 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100755 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/cis-roles.yaml deleted file mode 100755 index b8b3989dc..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/cis-roles.yaml +++ /dev/null @@ -1,28 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/configmap.yaml deleted file mode 100755 index 7f14b1396..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/configmap.yaml +++ /dev/null @@ -1,11 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: "rke-profile-permissive" - eks: "eks-profile" - gke: "gke-profile" - default: "cis-1.5-profile" \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/deployment.yaml deleted file mode 100755 index 1f64ea5db..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/deployment.yaml +++ /dev/null @@ -1,46 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/network_policy_allow_all.yaml deleted file mode 100755 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/patch_default_serviceaccount.yaml deleted file mode 100755 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/rbac.yaml deleted file mode 100755 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-cis-1.5.yml deleted file mode 100755 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-hardened.yml deleted file mode 100755 index 2a9819389..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-permissive.yml deleted file mode 100755 index 01266cf06..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofile-rke-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofileeks.yml deleted file mode 100755 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofilegke.yml deleted file mode 100755 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/serviceaccount.yaml deleted file mode 100755 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/validate-install-crd.yaml deleted file mode 100755 index bf516759a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-cis-benchmark-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/values.yaml deleted file mode 100755 index c726c9bc4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.200/values.yaml +++ /dev/null @@ -1,39 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.1 - securityScan: - repository: rancher/security-scan - tag: v0.2.1 - sonobuoy: - repository: rancher/sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/Chart.yaml deleted file mode 100755 index a55691657..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark -apiVersion: v1 -appVersion: v1.0.3 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.300 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/README.md deleted file mode 100755 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/app-readme.md deleted file mode 100755 index 5e495d605..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. -- Alerting Resources - Rancher's CIS Benchmark application lets you run a cluster scan on a schedule, and send alerts when scans finish. - - If you want to enable alerts to be delivered when a cluster scan completes, you need to ensure that [Rancher's Monitoring and Alerting](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/) application is pre-installed and the [Receivers and Routes](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/configuration/#alertmanager-config) are configured to send out alerts. - - Additionally, you need to set `alerts: true` in the Values YAML while installing or upgrading this chart. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/_helpers.tpl deleted file mode 100755 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/alertingrule.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/alertingrule.yaml deleted file mode 100755 index 1787c88a0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/alertingrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.alerts.enabled -}} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: rancher-cis-pod-monitor - namespace: {{ template "cis.namespace" . }} -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - podMetricsEndpoints: - - port: cismetrics -{{- end }} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.5.yaml deleted file mode 100755 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.6.yaml deleted file mode 100755 index 93ba064f4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-cis-1.6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.6 -spec: - clusterProvider: "" - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-eks-1.0.yaml deleted file mode 100755 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-gke-1.0.yaml deleted file mode 100755 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100755 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100755 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-hardened.yaml deleted file mode 100755 index d75de8154..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-permissive.yaml deleted file mode 100755 index 52428f4a7..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-hardened.yaml deleted file mode 100755 index 3d83e9bd8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-permissive.yaml deleted file mode 100755 index f66aa8f6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/benchmark-rke2-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/cis-roles.yaml deleted file mode 100755 index 23c93dc65..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/cis-roles.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/configmap.yaml deleted file mode 100755 index 16e43f576..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/configmap.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: |- - <1.16.0: rke-profile-permissive-1.5 - >=1.16.0: rke-profile-permissive-1.6 - rke2: "rke2-cis-1.5-profile-permissive" - eks: "eks-profile" - gke: "gke-profile" - default: "cis-1.6-profile" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/deployment.yaml deleted file mode 100755 index 0d3c75e39..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - ports: - - name: cismetrics - containerPort: {{ .Values.alerts.metricsPort }} - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - - name: CIS_ALERTS_METRICS_PORT - value: '{{ .Values.alerts.metricsPort }}' - - name: CIS_ALERTS_SEVERITY - value: {{ .Values.alerts.severity }} - - name: CIS_ALERTS_ENABLED - value: {{ .Values.alerts.enabled | default "false" | quote }} - - name: CLUSTER_NAME - value: {{ .Values.global.cattle.clusterName }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/network_policy_allow_all.yaml deleted file mode 100755 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/patch_default_serviceaccount.yaml deleted file mode 100755 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/rbac.yaml deleted file mode 100755 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.5.yml deleted file mode 100755 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.6.yaml deleted file mode 100755 index 8a8d8bf88..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-cis-1.6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.6-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-hardened.yml deleted file mode 100755 index 4eabe158a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-permissive.yml deleted file mode 100755 index 1f78751d1..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-hardened.yaml deleted file mode 100755 index d38febd80..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-hardened.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-permissive.yaml deleted file mode 100755 index d31b5b0d2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke-1.6-permissive.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-hardened.yml deleted file mode 100755 index 83eb3131e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-permissive.yml deleted file mode 100755 index 40dc44bdf..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofile-rke2-cis-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofileeks.yml deleted file mode 100755 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofilegke.yml deleted file mode 100755 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/serviceaccount.yaml deleted file mode 100755 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/validate-install-crd.yaml deleted file mode 100755 index bf516759a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-cis-benchmark-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/values.yaml deleted file mode 100755 index b75a7b6fc..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.300/values.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.3 - securityScan: - repository: rancher/security-scan - tag: v0.2.2 - sonobuoy: - repository: rancher/sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - clusterName: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 - -alerts: - enabled: false - severity: warning - metricsPort: 8080 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/Chart.yaml deleted file mode 100755 index 876903b86..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark -apiVersion: v1 -appVersion: v1.0.3 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.301 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/README.md deleted file mode 100755 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/app-readme.md deleted file mode 100755 index 5e495d605..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. -- Alerting Resources - Rancher's CIS Benchmark application lets you run a cluster scan on a schedule, and send alerts when scans finish. - - If you want to enable alerts to be delivered when a cluster scan completes, you need to ensure that [Rancher's Monitoring and Alerting](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/) application is pre-installed and the [Receivers and Routes](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/configuration/#alertmanager-config) are configured to send out alerts. - - Additionally, you need to set `alerts: true` in the Values YAML while installing or upgrading this chart. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/_helpers.tpl deleted file mode 100755 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/alertingrule.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/alertingrule.yaml deleted file mode 100755 index 1787c88a0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/alertingrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.alerts.enabled -}} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: rancher-cis-pod-monitor - namespace: {{ template "cis.namespace" . }} -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - podMetricsEndpoints: - - port: cismetrics -{{- end }} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.5.yaml deleted file mode 100755 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.6.yaml deleted file mode 100755 index 93ba064f4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-cis-1.6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.6 -spec: - clusterProvider: "" - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-eks-1.0.yaml deleted file mode 100755 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-gke-1.0.yaml deleted file mode 100755 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100755 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100755 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-hardened.yaml deleted file mode 100755 index d75de8154..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-permissive.yaml deleted file mode 100755 index 52428f4a7..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-hardened.yaml deleted file mode 100755 index 3d83e9bd8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-permissive.yaml deleted file mode 100755 index f66aa8f6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/benchmark-rke2-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/cis-roles.yaml deleted file mode 100755 index 23c93dc65..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/cis-roles.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/configmap.yaml deleted file mode 100755 index 16e43f576..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/configmap.yaml +++ /dev/null @@ -1,14 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: |- - <1.16.0: rke-profile-permissive-1.5 - >=1.16.0: rke-profile-permissive-1.6 - rke2: "rke2-cis-1.5-profile-permissive" - eks: "eks-profile" - gke: "gke-profile" - default: "cis-1.6-profile" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/deployment.yaml deleted file mode 100755 index 0d3c75e39..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - ports: - - name: cismetrics - containerPort: {{ .Values.alerts.metricsPort }} - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - - name: CIS_ALERTS_METRICS_PORT - value: '{{ .Values.alerts.metricsPort }}' - - name: CIS_ALERTS_SEVERITY - value: {{ .Values.alerts.severity }} - - name: CIS_ALERTS_ENABLED - value: {{ .Values.alerts.enabled | default "false" | quote }} - - name: CLUSTER_NAME - value: {{ .Values.global.cattle.clusterName }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/network_policy_allow_all.yaml deleted file mode 100755 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/patch_default_serviceaccount.yaml deleted file mode 100755 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/rbac.yaml deleted file mode 100755 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.5.yml deleted file mode 100755 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.6.yaml deleted file mode 100755 index 8a8d8bf88..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-cis-1.6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.6-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-hardened.yml deleted file mode 100755 index 4eabe158a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-permissive.yml deleted file mode 100755 index 1f78751d1..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-hardened.yaml deleted file mode 100755 index d38febd80..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-hardened.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-permissive.yaml deleted file mode 100755 index d31b5b0d2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke-1.6-permissive.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-hardened.yml deleted file mode 100755 index 83eb3131e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-permissive.yml deleted file mode 100755 index 40dc44bdf..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofile-rke2-cis-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofileeks.yml deleted file mode 100755 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofilegke.yml deleted file mode 100755 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/serviceaccount.yaml deleted file mode 100755 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/validate-install-crd.yaml deleted file mode 100755 index 562295791..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/values.yaml deleted file mode 100755 index bfb6b96b2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.301/values.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.3 - securityScan: - repository: rancher/security-scan - tag: v0.2.2 - sonobuoy: - repository: rancher/mirrored-sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - clusterName: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 - -alerts: - enabled: false - severity: warning - metricsPort: 8080 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/Chart.yaml deleted file mode 100644 index 2ca42fb2b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark -apiVersion: v1 -appVersion: v1.0.4 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.400 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/README.md deleted file mode 100644 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/app-readme.md deleted file mode 100644 index 5e495d605..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. -- Alerting Resources - Rancher's CIS Benchmark application lets you run a cluster scan on a schedule, and send alerts when scans finish. - - If you want to enable alerts to be delivered when a cluster scan completes, you need to ensure that [Rancher's Monitoring and Alerting](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/) application is pre-installed and the [Receivers and Routes](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/configuration/#alertmanager-config) are configured to send out alerts. - - Additionally, you need to set `alerts: true` in the Values YAML while installing or upgrading this chart. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/_helpers.tpl deleted file mode 100644 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/alertingrule.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/alertingrule.yaml deleted file mode 100644 index 1787c88a0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/alertingrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.alerts.enabled -}} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: rancher-cis-pod-monitor - namespace: {{ template "cis.namespace" . }} -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - podMetricsEndpoints: - - port: cismetrics -{{- end }} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.5.yaml deleted file mode 100644 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.6.yaml deleted file mode 100644 index 93ba064f4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-cis-1.6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.6 -spec: - clusterProvider: "" - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-eks-1.0.yaml deleted file mode 100644 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-gke-1.0.yaml deleted file mode 100644 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-hardened.yaml deleted file mode 100644 index 3ca9b6009..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-hardened -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-permissive.yaml deleted file mode 100644 index 6d4253c6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-k3s-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-permissive -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100644 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100644 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-hardened.yaml deleted file mode 100644 index d75de8154..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-permissive.yaml deleted file mode 100644 index 52428f4a7..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-hardened.yaml deleted file mode 100644 index 3d83e9bd8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-permissive.yaml deleted file mode 100644 index f66aa8f6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-hardened.yaml deleted file mode 100644 index 3593bf371..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-permissive.yaml deleted file mode 100644 index 522f846ae..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/benchmark-rke2-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/cis-roles.yaml deleted file mode 100644 index 23c93dc65..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/cis-roles.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/configmap.yaml deleted file mode 100644 index 6cbc23db4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: |- - <1.16.0: rke-profile-permissive-1.5 - >=1.16.0: rke-profile-permissive-1.6 - rke2: |- - <1.20.5: rke2-cis-1.5-profile-permissive - >=1.20.5: rke2-cis-1.6-profile-permissive - eks: "eks-profile" - gke: "gke-profile" - k3s: "k3s-cis-1.6-profile-permissive" - default: "cis-1.6-profile" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/deployment.yaml deleted file mode 100644 index 0d3c75e39..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - ports: - - name: cismetrics - containerPort: {{ .Values.alerts.metricsPort }} - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - - name: CIS_ALERTS_METRICS_PORT - value: '{{ .Values.alerts.metricsPort }}' - - name: CIS_ALERTS_SEVERITY - value: {{ .Values.alerts.severity }} - - name: CIS_ALERTS_ENABLED - value: {{ .Values.alerts.enabled | default "false" | quote }} - - name: CLUSTER_NAME - value: {{ .Values.global.cattle.clusterName }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/network_policy_allow_all.yaml deleted file mode 100644 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/patch_default_serviceaccount.yaml deleted file mode 100644 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/rbac.yaml deleted file mode 100644 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.5.yml deleted file mode 100644 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.6.yaml deleted file mode 100644 index 8a8d8bf88..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-cis-1.6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.6-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-hardened.yml deleted file mode 100644 index 095e977ab..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-permissive.yml deleted file mode 100644 index 3b22a80c8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-k3s-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-hardened.yml deleted file mode 100644 index 4eabe158a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-permissive.yml deleted file mode 100644 index 1f78751d1..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-hardened.yaml deleted file mode 100644 index d38febd80..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-hardened.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-permissive.yaml deleted file mode 100644 index d31b5b0d2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke-1.6-permissive.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-hardened.yml deleted file mode 100644 index 83eb3131e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-permissive.yml deleted file mode 100644 index 40dc44bdf..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-hardened.yml deleted file mode 100644 index c7ac7f949..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-permissive.yml deleted file mode 100644 index 96ca1345a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofile-rke2-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofileeks.yml deleted file mode 100644 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofilegke.yml deleted file mode 100644 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/serviceaccount.yaml deleted file mode 100644 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/validate-install-crd.yaml deleted file mode 100644 index 562295791..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/values.yaml deleted file mode 100644 index 05bcdac4f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.400/values.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.4 - securityScan: - repository: rancher/security-scan - tag: v0.2.3 - sonobuoy: - repository: rancher/mirrored-sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - clusterName: "" - kubectl: - repository: rancher/kubectl - tag: v1.20.2 - -alerts: - enabled: false - severity: warning - metricsPort: 8080 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/Chart.yaml deleted file mode 100644 index ada7fb8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark -apiVersion: v1 -appVersion: v1.0.5 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.500 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/README.md deleted file mode 100644 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/app-readme.md deleted file mode 100644 index 5e495d605..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. -- Alerting Resources - Rancher's CIS Benchmark application lets you run a cluster scan on a schedule, and send alerts when scans finish. - - If you want to enable alerts to be delivered when a cluster scan completes, you need to ensure that [Rancher's Monitoring and Alerting](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/) application is pre-installed and the [Receivers and Routes](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/configuration/#alertmanager-config) are configured to send out alerts. - - Additionally, you need to set `alerts: true` in the Values YAML while installing or upgrading this chart. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/_helpers.tpl deleted file mode 100644 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/alertingrule.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/alertingrule.yaml deleted file mode 100644 index 1787c88a0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/alertingrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.alerts.enabled -}} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: rancher-cis-pod-monitor - namespace: {{ template "cis.namespace" . }} -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - podMetricsEndpoints: - - port: cismetrics -{{- end }} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.5.yaml deleted file mode 100644 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.6.yaml deleted file mode 100644 index 93ba064f4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-cis-1.6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.6 -spec: - clusterProvider: "" - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-eks-1.0.yaml deleted file mode 100644 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-gke-1.0.yaml deleted file mode 100644 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-hardened.yaml deleted file mode 100644 index 3ca9b6009..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-hardened -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-permissive.yaml deleted file mode 100644 index 6d4253c6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-k3s-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-permissive -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100644 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100644 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-hardened.yaml deleted file mode 100644 index d75de8154..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-permissive.yaml deleted file mode 100644 index 52428f4a7..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-hardened.yaml deleted file mode 100644 index 3d83e9bd8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-permissive.yaml deleted file mode 100644 index f66aa8f6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-hardened.yaml deleted file mode 100644 index 3593bf371..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-permissive.yaml deleted file mode 100644 index 522f846ae..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/benchmark-rke2-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/cis-roles.yaml deleted file mode 100644 index 23c93dc65..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/cis-roles.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/configmap.yaml deleted file mode 100644 index 6cbc23db4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: |- - <1.16.0: rke-profile-permissive-1.5 - >=1.16.0: rke-profile-permissive-1.6 - rke2: |- - <1.20.5: rke2-cis-1.5-profile-permissive - >=1.20.5: rke2-cis-1.6-profile-permissive - eks: "eks-profile" - gke: "gke-profile" - k3s: "k3s-cis-1.6-profile-permissive" - default: "cis-1.6-profile" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/deployment.yaml deleted file mode 100644 index 0d3c75e39..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - ports: - - name: cismetrics - containerPort: {{ .Values.alerts.metricsPort }} - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - - name: CIS_ALERTS_METRICS_PORT - value: '{{ .Values.alerts.metricsPort }}' - - name: CIS_ALERTS_SEVERITY - value: {{ .Values.alerts.severity }} - - name: CIS_ALERTS_ENABLED - value: {{ .Values.alerts.enabled | default "false" | quote }} - - name: CLUSTER_NAME - value: {{ .Values.global.cattle.clusterName }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/network_policy_allow_all.yaml deleted file mode 100644 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/patch_default_serviceaccount.yaml deleted file mode 100644 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/rbac.yaml deleted file mode 100644 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.5.yml deleted file mode 100644 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.6.yaml deleted file mode 100644 index 8a8d8bf88..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-cis-1.6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.6-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-hardened.yml deleted file mode 100644 index 095e977ab..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-permissive.yml deleted file mode 100644 index 3b22a80c8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-k3s-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-hardened.yml deleted file mode 100644 index 4eabe158a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-permissive.yml deleted file mode 100644 index 1f78751d1..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-hardened.yaml deleted file mode 100644 index d38febd80..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-hardened.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-permissive.yaml deleted file mode 100644 index d31b5b0d2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke-1.6-permissive.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-hardened.yml deleted file mode 100644 index 83eb3131e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-permissive.yml deleted file mode 100644 index 40dc44bdf..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-hardened.yml deleted file mode 100644 index c7ac7f949..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-permissive.yml deleted file mode 100644 index 96ca1345a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofile-rke2-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofileeks.yml deleted file mode 100644 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofilegke.yml deleted file mode 100644 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/serviceaccount.yaml deleted file mode 100644 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/validate-install-crd.yaml deleted file mode 100644 index 562295791..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/values.yaml deleted file mode 100644 index e1086b1ac..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.500/values.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.5-rc1 - securityScan: - repository: rancher/security-scan - tag: v0.2.3 - sonobuoy: - repository: rancher/mirrored-sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - clusterName: "" - kubectl: - repository: rancher/kubectl - tag: v1.20.2 - -alerts: - enabled: false - severity: warning - metricsPort: 8080 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/Chart.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/Chart.yaml deleted file mode 100644 index a3879521b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-cis-benchmark-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: CIS Benchmark - catalog.cattle.io/namespace: cis-operator-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: cis.cattle.io.clusterscans/v1 - catalog.cattle.io/release-name: rancher-cis-benchmark - catalog.cattle.io/ui-component: rancher-cis-benchmark -apiVersion: v1 -appVersion: v1.0.5 -description: The cis-operator enables running CIS benchmark security scans on a kubernetes - cluster -icon: https://charts.rancher.io/assets/logos/cis-kube-bench.svg -keywords: -- security -name: rancher-cis-benchmark -version: 1.0.501 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/README.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/README.md deleted file mode 100644 index 50beab58b..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Rancher CIS Benchmark Chart - -The cis-operator enables running CIS benchmark security scans on a kubernetes cluster and generate compliance reports that can be downloaded. - -# Installation - -``` -helm install rancher-cis-benchmark ./ --create-namespace -n cis-operator-system -``` diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/app-readme.md b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/app-readme.md deleted file mode 100644 index 5e495d605..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/app-readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher CIS Benchmarks - -This chart enables security scanning of the cluster using [CIS (Center for Internet Security) benchmarks](https://www.cisecurity.org/benchmark/kubernetes/). - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/cis-scans/v2.5/). - -This chart installs the following components: - -- [cis-operator](https://github.com/rancher/cis-operator) - The cis-operator handles launching the [kube-bench](https://github.com/aquasecurity/kube-bench) tool that runs a suite of CIS tests on the nodes of your Kubernetes cluster. After scans finish, the cis-operator generates a compliance report that can be downloaded. -- Scans - A scan is a CRD (`ClusterScan`) that defines when to trigger CIS scans on the cluster based on the defined profile. A report is created after the scan is completed. -- Profiles - A profile is a CRD (`ClusterScanProfile`) that defines the configuration for the CIS scan, which is the benchmark versions to use and any specific tests to skip in that benchmark. This chart installs a few default `ClusterScanProfile` custom resources with no skipped tests, which can immediately be used to launch CIS scans. -- Benchmark Versions - A benchmark version is a CRD (`ClusterScanBenchmark`) that defines the CIS benchmark version to run using kube-bench as well as the valid configuration parameters for that benchmark. This chart installs a few default `ClusterScanBenchmark` custom resources. -- Alerting Resources - Rancher's CIS Benchmark application lets you run a cluster scan on a schedule, and send alerts when scans finish. - - If you want to enable alerts to be delivered when a cluster scan completes, you need to ensure that [Rancher's Monitoring and Alerting](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/) application is pre-installed and the [Receivers and Routes](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/configuration/#alertmanager-config) are configured to send out alerts. - - Additionally, you need to set `alerts: true` in the Values YAML while installing or upgrading this chart. diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/_helpers.tpl b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/_helpers.tpl deleted file mode 100644 index 67f4ce116..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/_helpers.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "cis.namespace" -}} - {{- .Release.Namespace | default "cis-operator-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux_node_tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/alertingrule.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/alertingrule.yaml deleted file mode 100644 index 1787c88a0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/alertingrule.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.alerts.enabled -}} ---- -apiVersion: monitoring.coreos.com/v1 -kind: PodMonitor -metadata: - name: rancher-cis-pod-monitor - namespace: {{ template "cis.namespace" . }} -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - podMetricsEndpoints: - - port: cismetrics -{{- end }} diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.5.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.5.yaml deleted file mode 100644 index 39e8b834a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.5.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.5 -spec: - clusterProvider: "" - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.6.yaml deleted file mode 100644 index 93ba064f4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-cis-1.6.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: cis-1.6 -spec: - clusterProvider: "" - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-eks-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-eks-1.0.yaml deleted file mode 100644 index bd2e32cd3..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-eks-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: eks-1.0 -spec: - clusterProvider: eks - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-gke-1.0.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-gke-1.0.yaml deleted file mode 100644 index 72122e8c5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-gke-1.0.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: gke-1.0 -spec: - clusterProvider: gke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-hardened.yaml deleted file mode 100644 index 3ca9b6009..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-hardened -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-permissive.yaml deleted file mode 100644 index 6d4253c6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-k3s-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: k3s-cis-1.6-permissive -spec: - clusterProvider: k3s - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-hardened.yaml deleted file mode 100644 index b5627f966..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-permissive.yaml deleted file mode 100644 index 95f80c0f0..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.5-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.15.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-hardened.yaml deleted file mode 100644 index d75de8154..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-hardened -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-permissive.yaml deleted file mode 100644 index 52428f4a7..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke-cis-1.6-permissive -spec: - clusterProvider: rke - minKubernetesVersion: "1.16.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-hardened.yaml deleted file mode 100644 index 3d83e9bd8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-permissive.yaml deleted file mode 100644 index f66aa8f6e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.5-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.5-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.18.0" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-hardened.yaml deleted file mode 100644 index 3593bf371..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-hardened.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-hardened -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-permissive.yaml deleted file mode 100644 index 522f846ae..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/benchmark-rke2-cis-1.6-permissive.yaml +++ /dev/null @@ -1,8 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanBenchmark -metadata: - name: rke2-cis-1.6-permissive -spec: - clusterProvider: rke2 - minKubernetesVersion: "1.20.5" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/cis-roles.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/cis-roles.yaml deleted file mode 100644 index 23c93dc65..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/cis-roles.yaml +++ /dev/null @@ -1,49 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-admin -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["create", "update", "delete", "patch","get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: cis-view -rules: - - apiGroups: - - cis.cattle.io - resources: - - clusterscanbenchmarks - - clusterscanprofiles - - clusterscans - - clusterscanreports - verbs: ["get", "watch", "list"] - - apiGroups: - - catalog.cattle.io - resources: ["apps"] - resourceNames: ["rancher-cis-benchmark"] - verbs: ["get", "watch", "list"] - - apiGroups: - - "" - resources: - - configmaps - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/configmap.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/configmap.yaml deleted file mode 100644 index 6cbc23db4..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -kind: ConfigMap -apiVersion: v1 -metadata: - name: default-clusterscanprofiles - namespace: {{ template "cis.namespace" . }} -data: - # Default ClusterScanProfiles per cluster provider type - rke: |- - <1.16.0: rke-profile-permissive-1.5 - >=1.16.0: rke-profile-permissive-1.6 - rke2: |- - <1.20.5: rke2-cis-1.5-profile-permissive - >=1.20.5: rke2-cis-1.6-profile-permissive - eks: "eks-profile" - gke: "gke-profile" - k3s: "k3s-cis-1.6-profile-permissive" - default: "cis-1.6-profile" diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/deployment.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/deployment.yaml deleted file mode 100644 index 0d3c75e39..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/deployment.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: cis-operator - namespace: {{ template "cis.namespace" . }} - labels: - cis.cattle.io/operator: cis-operator -spec: - selector: - matchLabels: - cis.cattle.io/operator: cis-operator - template: - metadata: - labels: - cis.cattle.io/operator: cis-operator - spec: - serviceAccountName: cis-operator-serviceaccount - containers: - - name: cis-operator - image: '{{ template "system_default_registry" . }}{{ .Values.image.cisoperator.repository }}:{{ .Values.image.cisoperator.tag }}' - imagePullPolicy: Always - ports: - - name: cismetrics - containerPort: {{ .Values.alerts.metricsPort }} - env: - - name: SECURITY_SCAN_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.securityScan.repository }} - - name: SECURITY_SCAN_IMAGE_TAG - value: {{ .Values.image.securityScan.tag }} - - name: SONOBUOY_IMAGE - value: {{ template "system_default_registry" . }}{{ .Values.image.sonobuoy.repository }} - - name: SONOBUOY_IMAGE_TAG - value: {{ .Values.image.sonobuoy.tag }} - - name: CIS_ALERTS_METRICS_PORT - value: '{{ .Values.alerts.metricsPort }}' - - name: CIS_ALERTS_SEVERITY - value: {{ .Values.alerts.severity }} - - name: CIS_ALERTS_ENABLED - value: {{ .Values.alerts.enabled | default "false" | quote }} - - name: CLUSTER_NAME - value: {{ .Values.global.cattle.clusterName }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - nodeSelector: - kubernetes.io/os: linux - {{- with .Values.nodeSelector }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - tolerations: - {{- include "linux_node_tolerations" . | nindent 8}} - {{- with .Values.tolerations }} - {{- toYaml . | nindent 8 }} - {{- end }} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/network_policy_allow_all.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/network_policy_allow_all.yaml deleted file mode 100644 index 6ed5d645e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/network_policy_allow_all.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ template "cis.namespace" . }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/patch_default_serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/patch_default_serviceaccount.yaml deleted file mode 100644 index 1efa3ed1c..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/patch_default_serviceaccount.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - spec: - serviceAccountName: cis-operator-serviceaccount - restartPolicy: Never - containers: - - name: sa - image: "{{ template "system_default_registry" . }}{{ .Values.global.kubectl.repository }}:{{ .Values.global.kubectl.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", {{ template "cis.namespace" . }}] - backoffLimit: 1 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/rbac.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/rbac.yaml deleted file mode 100644 index 816991f23..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/rbac.yaml +++ /dev/null @@ -1,43 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-operator-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: cis-operator-role -subjects: -- kind: ServiceAccount - name: cis-serviceaccount - namespace: {{ template "cis.namespace" . }} ---- -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: cis-operator-installer -subjects: -- kind: ServiceAccount - name: cis-operator-serviceaccount - namespace: {{ template "cis.namespace" . }} -roleRef: - kind: ClusterRole - name: cluster-admin - apiGroup: rbac.authorization.k8s.io \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.5.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.5.yml deleted file mode 100644 index d69ae9dd5..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.5.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.5-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.5 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.6.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.6.yaml deleted file mode 100644 index 8a8d8bf88..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-cis-1.6.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: cis-1.6-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: cis-1.6 diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-hardened.yml deleted file mode 100644 index 095e977ab..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-permissive.yml deleted file mode 100644 index 3b22a80c8..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-k3s-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: k3s-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: k3s-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-hardened.yml deleted file mode 100644 index 4eabe158a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-hardened \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-permissive.yml deleted file mode 100644 index 1f78751d1..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.5 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-hardened.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-hardened.yaml deleted file mode 100644 index d38febd80..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-hardened.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-hardened-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-permissive.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-permissive.yaml deleted file mode 100644 index d31b5b0d2..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke-1.6-permissive.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke-profile-permissive-1.6 - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-hardened.yml deleted file mode 100644 index 83eb3131e..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-permissive.yml deleted file mode 100644 index 40dc44bdf..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.5-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.5-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.5-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-hardened.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-hardened.yml deleted file mode 100644 index c7ac7f949..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-hardened.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-hardened - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-hardened diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-permissive.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-permissive.yml deleted file mode 100644 index 96ca1345a..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofile-rke2-cis-1.6-permissive.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: rke2-cis-1.6-profile-permissive - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: rke2-cis-1.6-permissive diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofileeks.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofileeks.yml deleted file mode 100644 index 49c7e0246..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofileeks.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: eks-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: eks-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofilegke.yml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofilegke.yml deleted file mode 100644 index 2ddd0686f..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/scanprofilegke.yml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: cis.cattle.io/v1 -kind: ClusterScanProfile -metadata: - name: gke-profile - annotations: - clusterscanprofile.cis.cattle.io/builtin: "true" -spec: - benchmarkVersion: gke-1.0 \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/serviceaccount.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/serviceaccount.yaml deleted file mode 100644 index ec48ec622..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/serviceaccount.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - name: cis-operator-serviceaccount ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: {{ template "cis.namespace" . }} - labels: - app.kubernetes.io/name: rancher-cis-benchmark - app.kubernetes.io/instance: release-name - name: cis-serviceaccount diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/validate-install-crd.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/validate-install-crd.yaml deleted file mode 100644 index 562295791..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "cis.cattle.io/v1/ClusterScan" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanBenchmark" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanProfile" false -}} -# {{- set $found "cis.cattle.io/v1/ClusterScanReport" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/values.yaml b/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/values.yaml deleted file mode 100644 index e1086b1ac..000000000 --- a/charts/rancher-cis-benchmark/rancher-cis-benchmark/1.0.501/values.yaml +++ /dev/null @@ -1,45 +0,0 @@ -# Default values for rancher-cis-benchmark. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -image: - cisoperator: - repository: rancher/cis-operator - tag: v1.0.5-rc1 - securityScan: - repository: rancher/security-scan - tag: v0.2.3 - sonobuoy: - repository: rancher/mirrored-sonobuoy-sonobuoy - tag: v0.16.3 - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -global: - cattle: - systemDefaultRegistry: "" - clusterName: "" - kubectl: - repository: rancher/kubectl - tag: v1.20.2 - -alerts: - enabled: false - severity: warning - metricsPort: 8080 diff --git a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/Chart.yaml b/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/Chart.yaml deleted file mode 100644 index bd747c6a4..000000000 --- a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-eks-operator-crd -apiVersion: v2 -appVersion: 1.1.1-rc1 -description: EKS Operator CustomResourceDefinitions -name: rancher-eks-operator-crd -version: 1.1.100-rc1+up1.1.1-rc1 diff --git a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/templates/crds.yaml b/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/templates/crds.yaml deleted file mode 100644 index 9a4634d81..000000000 --- a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc1+up1.1.1-rc1/templates/crds.yaml +++ /dev/null @@ -1,216 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - helm.sh/resource-policy: keep - name: eksclusterconfigs.eks.cattle.io -spec: - group: eks.cattle.io - names: - kind: EKSClusterConfig - plural: eksclusterconfigs - shortNames: - - ekscc - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - amazonCredentialSecret: - nullable: true - type: string - displayName: - nullable: true - type: string - imported: - type: boolean - kmsKey: - nullable: true - type: string - kubernetesVersion: - nullable: true - type: string - loggingTypes: - items: - nullable: true - type: string - nullable: true - type: array - nodeGroups: - items: - properties: - desiredSize: - nullable: true - type: integer - diskSize: - nullable: true - type: integer - ec2SshKey: - nullable: true - type: string - gpu: - nullable: true - type: boolean - imageId: - nullable: true - type: string - instanceType: - nullable: true - type: string - labels: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - launchTemplate: - nullable: true - properties: - id: - nullable: true - type: string - name: - nullable: true - type: string - version: - nullable: true - type: integer - type: object - maxSize: - nullable: true - type: integer - minSize: - nullable: true - type: integer - nodegroupName: - nullable: true - type: string - requestSpotInstances: - nullable: true - type: boolean - resourceTags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - spotInstanceTypes: - items: - nullable: true - type: string - nullable: true - type: array - subnets: - items: - nullable: true - type: string - nullable: true - type: array - tags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - userData: - nullable: true - type: string - version: - nullable: true - type: string - required: - - nodegroupName - type: object - nullable: true - type: array - privateAccess: - nullable: true - type: boolean - publicAccess: - nullable: true - type: boolean - publicAccessSources: - items: - nullable: true - type: string - nullable: true - type: array - region: - nullable: true - type: string - secretsEncryption: - nullable: true - type: boolean - securityGroups: - items: - nullable: true - type: string - nullable: true - type: array - serviceRole: - nullable: true - type: string - subnets: - items: - nullable: true - type: string - nullable: true - type: array - tags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - type: object - status: - properties: - failureMessage: - nullable: true - type: string - managedLaunchTemplateID: - nullable: true - type: string - managedLaunchTemplateVersions: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - networkFieldsSource: - nullable: true - type: string - phase: - nullable: true - type: string - securityGroups: - items: - nullable: true - type: string - nullable: true - type: array - subnets: - items: - nullable: true - type: string - nullable: true - type: array - templateVersionsToDelete: - items: - nullable: true - type: string - nullable: true - type: array - virtualNetwork: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml b/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml deleted file mode 100644 index 26b736248..000000000 --- a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-eks-operator-crd -apiVersion: v2 -appVersion: 1.1.1-rc2 -description: EKS Operator CustomResourceDefinitions -name: rancher-eks-operator-crd -version: 1.1.100-rc2+up1.1.1-rc2 diff --git a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml b/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml deleted file mode 100644 index 9a4634d81..000000000 --- a/charts/rancher-eks-operator-crd/rancher-eks-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml +++ /dev/null @@ -1,216 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - helm.sh/resource-policy: keep - name: eksclusterconfigs.eks.cattle.io -spec: - group: eks.cattle.io - names: - kind: EKSClusterConfig - plural: eksclusterconfigs - shortNames: - - ekscc - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - amazonCredentialSecret: - nullable: true - type: string - displayName: - nullable: true - type: string - imported: - type: boolean - kmsKey: - nullable: true - type: string - kubernetesVersion: - nullable: true - type: string - loggingTypes: - items: - nullable: true - type: string - nullable: true - type: array - nodeGroups: - items: - properties: - desiredSize: - nullable: true - type: integer - diskSize: - nullable: true - type: integer - ec2SshKey: - nullable: true - type: string - gpu: - nullable: true - type: boolean - imageId: - nullable: true - type: string - instanceType: - nullable: true - type: string - labels: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - launchTemplate: - nullable: true - properties: - id: - nullable: true - type: string - name: - nullable: true - type: string - version: - nullable: true - type: integer - type: object - maxSize: - nullable: true - type: integer - minSize: - nullable: true - type: integer - nodegroupName: - nullable: true - type: string - requestSpotInstances: - nullable: true - type: boolean - resourceTags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - spotInstanceTypes: - items: - nullable: true - type: string - nullable: true - type: array - subnets: - items: - nullable: true - type: string - nullable: true - type: array - tags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - userData: - nullable: true - type: string - version: - nullable: true - type: string - required: - - nodegroupName - type: object - nullable: true - type: array - privateAccess: - nullable: true - type: boolean - publicAccess: - nullable: true - type: boolean - publicAccessSources: - items: - nullable: true - type: string - nullable: true - type: array - region: - nullable: true - type: string - secretsEncryption: - nullable: true - type: boolean - securityGroups: - items: - nullable: true - type: string - nullable: true - type: array - serviceRole: - nullable: true - type: string - subnets: - items: - nullable: true - type: string - nullable: true - type: array - tags: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - type: object - status: - properties: - failureMessage: - nullable: true - type: string - managedLaunchTemplateID: - nullable: true - type: string - managedLaunchTemplateVersions: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - networkFieldsSource: - nullable: true - type: string - phase: - nullable: true - type: string - securityGroups: - items: - nullable: true - type: string - nullable: true - type: array - subnets: - items: - nullable: true - type: string - nullable: true - type: array - templateVersionsToDelete: - items: - nullable: true - type: string - nullable: true - type: array - virtualNetwork: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/Chart.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/Chart.yaml deleted file mode 100644 index f566cf911..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-eks-operator-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: eksclusterconfigs.eks.cattle.io/v1 - catalog.cattle.io/rancher-version: '>= 2.6.0-alpha' - catalog.cattle.io/release-name: rancher-eks-operator - catalog.cattle.io/scope: management -apiVersion: v2 -appVersion: 1.1.1-rc1 -description: A Helm chart for provisioning EKS clusters -home: https://github.com/rancher/eks-operator -name: rancher-eks-operator -sources: -- https://github.com/rancher/eks-operator -version: 1.1.100-rc1+up1.1.1-rc1 diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/NOTES.txt b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/NOTES.txt deleted file mode 100644 index 23a1b4a8b..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/NOTES.txt +++ /dev/null @@ -1,4 +0,0 @@ -You have deployed the Rancher EKS operator -Version: {{ .Chart.AppVersion }} -Description: This operator provisions EKS clusters -from EKSClusterConfig CRs. diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/_helpers.tpl b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/_helpers.tpl deleted file mode 100644 index be11b4a66..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/_helpers.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrole.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrole.yaml deleted file mode 100644 index d0d561b6e..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrole.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: eks-operator - namespace: cattle-system -rules: - - apiGroups: [''] - resources: ['secrets'] - verbs: ['get', 'list', 'create', 'watch'] - - apiGroups: ['eks.cattle.io'] - resources: ['eksclusterconfigs'] - verbs: ['get', 'list', 'update', 'watch'] - - apiGroups: ['eks.cattle.io'] - resources: ['eksclusterconfigs/status'] - verbs: ['update'] diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrolebinding.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrolebinding.yaml deleted file mode 100644 index 2b1846353..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: eks-operator - namespace: cattle-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: eks-operator -subjects: -- kind: ServiceAccount - name: eks-operator - namespace: cattle-system diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/deployment.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/deployment.yaml deleted file mode 100644 index 8847d7d34..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/deployment.yaml +++ /dev/null @@ -1,27 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: eks-config-operator - namespace: cattle-system -spec: - replicas: 1 - selector: - matchLabels: - ke.cattle.io/operator: eks - template: - metadata: - labels: - ke.cattle.io/operator: eks - spec: - serviceAccountName: eks-operator - containers: - - name: eks-operator - image: {{ template "system_default_registry" . }}{{ .Values.eksOperator.image.repository }}:{{ .Values.eksOperator.image.tag }} - imagePullPolicy: IfNotPresent - env: - - name: HTTP_PROXY - value: {{ .Values.httpProxy }} - - name: HTTPS_PROXY - value: {{ .Values.httpsProxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/serviceaccount.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/serviceaccount.yaml deleted file mode 100644 index 934de07e0..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: cattle-system - name: eks-operator diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/values.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/values.yaml deleted file mode 100644 index 5fd249954..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc1+up1.1.1-rc1/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -global: - systemDefaultRegistry: "" - -eksOperator: - image: - repository: rancher/eks-operator - tag: v1.1.1-rc1 - -httpProxy: "" -httpsProxy: "" -noProxy: "" diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml deleted file mode 100644 index c4b5d4373..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-eks-operator-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: eksclusterconfigs.eks.cattle.io/v1 - catalog.cattle.io/rancher-version: '>= 2.6.0-alpha' - catalog.cattle.io/release-name: rancher-eks-operator - catalog.cattle.io/scope: management -apiVersion: v2 -appVersion: 1.1.1-rc2 -description: A Helm chart for provisioning EKS clusters -home: https://github.com/rancher/eks-operator -name: rancher-eks-operator -sources: -- https://github.com/rancher/eks-operator -version: 1.1.100-rc2+up1.1.1-rc2 diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt deleted file mode 100644 index 23a1b4a8b..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt +++ /dev/null @@ -1,4 +0,0 @@ -You have deployed the Rancher EKS operator -Version: {{ .Chart.AppVersion }} -Description: This operator provisions EKS clusters -from EKSClusterConfig CRs. diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl deleted file mode 100644 index be11b4a66..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml deleted file mode 100644 index d0d561b6e..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: eks-operator - namespace: cattle-system -rules: - - apiGroups: [''] - resources: ['secrets'] - verbs: ['get', 'list', 'create', 'watch'] - - apiGroups: ['eks.cattle.io'] - resources: ['eksclusterconfigs'] - verbs: ['get', 'list', 'update', 'watch'] - - apiGroups: ['eks.cattle.io'] - resources: ['eksclusterconfigs/status'] - verbs: ['update'] diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml deleted file mode 100644 index 2b1846353..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: eks-operator - namespace: cattle-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: eks-operator -subjects: -- kind: ServiceAccount - name: eks-operator - namespace: cattle-system diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml deleted file mode 100644 index 8b1213efd..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: eks-config-operator - namespace: cattle-system -spec: - replicas: 1 - selector: - matchLabels: - ke.cattle.io/operator: eks - template: - metadata: - labels: - ke.cattle.io/operator: eks - spec: - serviceAccountName: eks-operator - containers: - - name: eks-operator - image: {{ template "system_default_registry" . }}{{ .Values.eksOperator.image.repository }}:{{ .Values.eksOperator.image.tag }} - imagePullPolicy: IfNotPresent - env: - - name: HTTP_PROXY - value: {{ .Values.httpProxy }} - - name: HTTPS_PROXY - value: {{ .Values.httpsProxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} -{{- if .Values.additionalTrustedCAs }} - volumeMounts: - - mountPath: /etc/ssl/certs/ca-additional.pem - name: tls-ca-additional-volume - subPath: ca-additional.pem - readOnly: true - volumes: - - name: tls-ca-additional-volume - secret: - defaultMode: 0400 - secretName: tls-ca-additional - {{- end }} diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml deleted file mode 100644 index 934de07e0..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: cattle-system - name: eks-operator diff --git a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml b/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml deleted file mode 100644 index a356bdaba..000000000 --- a/charts/rancher-eks-operator/rancher-eks-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml +++ /dev/null @@ -1,12 +0,0 @@ -global: - systemDefaultRegistry: "" - -eksOperator: - image: - repository: rancher/eks-operator - tag: v1.1.1-rc2 - -httpProxy: "" -httpsProxy: "" -noProxy: "" -additionalTrustedCAs: false diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/.helmignore b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/Chart.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/Chart.yaml deleted file mode 100755 index a6867f4ef..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: External IP Webhook - catalog.cattle.io/namespace: cattle-externalip-system - catalog.cattle.io/release-name: rancher-external-ip-webhook - catalog.cattle.io/ui-component: rancher-external-ip-webhook - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v0.1.4 -description: | - Deploy the external-ip-webhook to mitigate k8s CVE-2020-8554 -home: https://github.com/rancher/externalip-webhook -keywords: -- cve -- externalip -- webhook -- security -maintainers: -- email: raul@rancher.com - name: rawmind0 -name: rancher-external-ip-webhook -sources: -- https://github.com/rancher/externalip-webhook -version: 0.1.400 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/README.md deleted file mode 100755 index 9223987da..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/README.md +++ /dev/null @@ -1,70 +0,0 @@ -# externalip-webhook - -## Chart Details - -This chart will create a deployment of `externalip-webhook` within your Kubernetes Cluster. It's required to mitigate k8s CVE-2020-8554. - -## Installing the Chart - -To install the chart with the release name `rancher-external-ip-webhook`: - - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -## Configuration - -The following table lists the configurable parameters of the externalip-webhook chart and their default values. - - -| Parameter | Description | Default | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| `allowedExternalIPCidrs` | Set allowed external IP CIDRs separated by a comma | `""` | -| `certificates.caBundle` | If cert-manager integration is disabled, add here self signed ca.crt in base64 format | `""` | -| `certificates.certManager.enabled` | Enable cert manager integration. Cert manager should be already installed at the k8s cluster | `true` | -| `certificates.certManager.version` | Cert manager version to use | `""` | -| `certificates.secretName` | If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt & tls.key) as k8s secretName in the namespace | `"webhook-server-cert"` | -| `global.systemDefaultRegistry` | Pull docker images from systemDefaultRegistry | `""` | -| `image.pullPolicy` | Webhook server docker pull policy | `"IfNotPresent"` | -| `image.pullSecrets` | Webhook server docker pull secret | `""` | -| `image.repository` | Webhook server docker image repository | `"rancher/externalip-webhook"` | -| `image.tag` | Webhook server docker image tag Defaults to | `".Chart.appVersion"` | -| `metrics.enabled` | Enable metrics endpoint | `false` | -| `metrics.port` | Webhook metrics pod port | `8443` | -| `metrics.prometheusExport` | Enable Prometheus export. Follow [exporting-metrics-for-prometheus](https://book.kubebuilder.io/reference/metrics.html#exporting-metrics-for-prometheus) to export the webhook metrics | `false` | -| `metrics.authProxy.enabled` | Enable auth proxy for metrics endpoint | `false` | -| `metrics.authProxy.port` | Webhook auth proxy pod port | `8080` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker pull policy | `"IfNotPresent"` | -| `metrics.authProxy.image.pullSecrets`| Webhook auth proxy docker pull secrets | `""` | -| `metrics.authProxy.image.repository` | Webhook auth proxy docker image repository | `"gcr.io/kubebuilder/kube-rbac-proxy"` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker image tag | `"v0.5.0"` | -| `metrics.authProxy.resources.limits.cpu` | Webhook auth proxy resource cpu limit | `"100m"` | -| `metrics.authProxy.resources.limits.memory` | Webhook auth proxy resource memory limit | `"30Mi"` | -| `metrics.authProxy.resources.requests.cpu` | Webhook auth proxy wesource cpu reservation | `"100m"` | -| `metrics.authProxy.resources.requests.memory` | Webhook auth proxy resource memory reservation | `"20Mi"` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `rbac.apiVersion` | Rbac API version to use | `"v1"` | -| `resources.limits.cpu` | Resource cpu limit | `"100m"` | -| `resources.limits.memory` | Resource memory limit | `"30Mi"` | -| `resources.requests.cpu` | Resource cpu reservation | `"100m"` | -| `resources.requests.memory` | Resource memory reservation | `"20Mi"` | -| `service.metricsPort` | Webhook metrics service port | `8443` | -| `service.webhookPort` | Webhook server service port | `443` | -| `serviceAccountName` | Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false | `"default"` | -| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` | -| `webhookPort` | Webhook server pod port | `9443` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/app-README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/app-README.md deleted file mode 100755 index 38c317119..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/app-README.md +++ /dev/null @@ -1,9 +0,0 @@ -# externalip-webhook - -This chart was created to mitigate [CVE-2020-8554](https://www.cvedetails.com/cve/CVE-2020-8554/) - -External IP Webhook is a validating k8s webhook which prevents services from using random external IPs. Cluster administrators -can specify list of CIDRs allowed to be used as external IP by specifying `allowed-external-ip-cidrs` parameter. -The webhook will only allow services which either don’t set external IP, or whose external IPs are within the range specified by the administrator. - -For more information, review the Helm README of this chart. diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/questions.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/questions.yaml deleted file mode 100755 index 8b0e19040..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/questions.yaml +++ /dev/null @@ -1,7 +0,0 @@ -questions: -# allowedExternalIPCidrs -- variable: allowedExternalIPCidrs - label: Allowed external IP cidrs - description: Set allowed external IP CIDRs separated by a comma - type: string - group: Configuration \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/NOTES.txt b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/NOTES.txt deleted file mode 100755 index 74271bdd5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/NOTES.txt +++ /dev/null @@ -1,3 +0,0 @@ -To verify that externalip-webhook has started, run: - - kubectl --namespace={{ .Release.Namespace }} get pods -l "app={{ template "externalip-webhook.name" . }},release={{ .Release.Name }}" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/_helpers.tpl b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/_helpers.tpl deleted file mode 100755 index cc8a9a0d3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/_helpers.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "externalip-webhook.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "externalip-webhook.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if ne $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s" $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* Generate basic labels */}} -{{- define "externalip-webhook.labels" }} -app: {{ template "externalip-webhook.name" . }} -heritage: {{.Release.Service }} -release: {{.Release.Name }} -{{- end }} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -kubernetes.io/os: linux -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/admissionregistration.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/admissionregistration.yaml deleted file mode 100755 index d8152faa5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/admissionregistration.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: -{{- if .Values.certificates.certManager.enabled }} - annotations: - cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "externalip-webhook.fullname" . }}-server-cert -{{- end }} - creationTimestamp: null - name: {{ template "externalip-webhook.fullname" . }}-validating-webhook-configuration -webhooks: -- clientConfig: -{{- if not (.Values.certificates.certManager.enabled) }} - caBundle: {{ .Values.certificates.caBundle }} -{{- end }} - service: - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} - path: /validate-service - failurePolicy: Ignore - name: {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - services \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrole.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrole.yaml deleted file mode 100755 index 46e18bf00..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) -}} -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-reader -rules: -- nonResourceURLs: - - /metrics - verbs: - - get -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrolebinding.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrolebinding.yaml deleted file mode 100755 index 2fa40817f..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-cluster-view -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: view -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/deployment.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/deployment.yaml deleted file mode 100755 index c82754deb..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/deployment.yaml +++ /dev/null @@ -1,107 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} - template: - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 8 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - spec: - containers: - {{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} - - name: {{ template "externalip-webhook.fullname" . }}-auth-proxy - args: - - --secure-listen-address=0.0.0.0:{{ .Values.metrics.port }} - - --upstream=http://127.0.0.1:{{ .Values.metrics.authProxy.port }}/ - - --logtostderr=true - - --v=10 - image: {{ template "system_default_registry" . }}{{ .Values.metrics.authProxy.image.repository}}:{{ .Values.metrics.authProxy.image.tag }} - imagePullPolicy: "{{ .Values.metrics.authProxy.image.pullPolicy }}" - ports: - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - resources: -{{ toYaml .Values.metrics.authProxy.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - {{- end }} - - name: {{ template "externalip-webhook.fullname" . }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository}}:{{ default .Chart.AppVersion .Values.image.tag }} - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - command: - - /webhook - args: - - --webhook-port={{ .Values.webhookPort }} - {{- if .Values.allowedExternalIPCidrs }} - - --allowed-external-ip-cidrs={{ .Values.allowedExternalIPCidrs }} - {{- end }} - {{- if .Values.metrics.enabled }} - {{- if .Values.metrics.authProxy.enabled }} - - --metrics-addr=127.0.0.1:{{ .Values.metrics.authProxy.port }} - {{- else }} - - --metrics-addr=0.0.0.0:{{ .Values.metrics.port }} - {{- end }} - {{- end }} - ports: - - containerPort: {{ .Values.webhookPort }} - name: webhook-server - protocol: TCP - {{- if and (.Values.metrics.enabled) (not (.Values.metrics.authProxy.enabled)) }} - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - {{- end }} - volumeMounts: - - name: server-cert - mountPath: /tmp/k8s-webhook-server/serving-certs - readOnly: true - resources: -{{ toYaml .Values.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - livenessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 6}} - {{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 6 }} - {{- end }} - serviceAccountName: {{ template "externalip-webhook.fullname" . }} - volumes: - - name: server-cert - secret: - defaultMode: 420 - secretName: {{ .Values.certificates.secretName }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/issuer.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/issuer.yaml deleted file mode 100755 index ff1c2de10..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/issuer.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.certificates.certManager.enabled -}} - {{- $certmanagerVer := split "." .Values.certificates.certManager.version -}} - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Certificate -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-server-cert - namespace: {{ .Release.Namespace }} -spec: - dnsNames: - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - issuerRef: - kind: Issuer - name: {{ template "externalip-webhook.fullname" . }}-issuer - secretName: {{ .Values.certificates.secretName }} ---- - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Issuer -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-issuer - namespace: {{ .Release.Namespace }} -spec: - selfSigned: {} -{{- end -}} - - diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/service.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/service.yaml deleted file mode 100755 index 256add3e4..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-server - port: {{ .Values.service.webhookPort }} - protocol: TCP - targetPort: {{ .Values.webhookPort }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- if .Values.metrics.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-service - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-metrics - port: {{ .Values.service.metricsPort }} - protocol: TCP - targetPort: {{ .Values.metrics.port }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/serviceaccount.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/serviceaccount.yaml deleted file mode 100755 index 895df4f5b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/servicemonitor.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/servicemonitor.yaml deleted file mode 100755 index c481ea31d..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/templates/servicemonitor.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.prometheusExport) -}} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-monitor - namespace: {{ .Release.Namespace }} -spec: - endpoints: - - path: /metrics - port: https - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/admissionregistration_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/admissionregistration_test.yaml deleted file mode 100755 index 0660aa6e8..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/admissionregistration_test.yaml +++ /dev/null @@ -1,32 +0,0 @@ -suite: Test Admission Registration -templates: -- admissionregistration.yaml -tests: -- it: should render Admission Registration - asserts: - - equal: - path: apiVersion - value: admissionregistration.k8s.io/v1beta1 -- it: should render Admission Registration annotation and not caBundle if certificates.certManager.enabled = true - release: - name: rancher-externalip-webhook - namespace: test - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: metadata.annotations - value: - cert-manager.io/inject-ca-from: test/rancher-externalip-webhook-server-cert - - isNull: - path: webhooks[0].clientConfig.caBundle -- it: should render Admission Registration caBundle and not annotation if certificates.certManager.enabled = false - set: - certificates.caBundle: test - certificates.certManager.enabled: false - asserts: - - equal: - path: webhooks[0].clientConfig.caBundle - value: test - - isNull: - path: metadata.annotations diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrole_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrole_test.yaml deleted file mode 100755 index 9e563807b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrole_test.yaml +++ /dev/null @@ -1,37 +0,0 @@ -suite: Test Cluster Roles -templates: -- clusterrole.yaml -tests: -- it: should not render Cluster Roles if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 0 - template: clusterrole.yaml -- it: should render Cluster Roles if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrole.yaml -- it: should render Cluster Roles with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Roles with custom rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrolebinding_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrolebinding_test.yaml deleted file mode 100755 index 2129573a3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/clusterrolebinding_test.yaml +++ /dev/null @@ -1,42 +0,0 @@ -suite: Test Cluster Role Bindings -templates: -- clusterrolebinding.yaml -tests: -- it: should render Cluster Role Bindings with default rbac api version - set: - rbac.apiVersion: v1 - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Role Bindings with custom rbac api version - set: - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta -- it: should not render Cluster Role Binding proxy if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 1 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings proxy if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/deployment_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/deployment_test.yaml deleted file mode 100755 index 50e3f9ec1..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/deployment_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -suite: Test Deployments -templates: -- deployment.yaml -tests: -- it: should render Deployment with allowed-external-ip-cidrs arg if allowedExternalIPCidrs is set - release: - name: rancher-externalip-webhook - set: - allowedExternalIPCidrs: "1,2" - asserts: - - equal: - path: spec.template.spec.containers[0].args[1] - value: --allowed-external-ip-cidrs=1,2 -- it: should render Deployment with default port, nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux -- it: should render Deployment with default port and custom nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - tolerations: - - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - nodeSelector: - kubernetes.io/test: linux - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.tolerations[1] - value: - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux - kubernetes.io/test: linux -- it: should render Deployment with custom port and image if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - webhookPort: 9000 - image.repository: test - image.tag: dev-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with custom metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.port: 8000 - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP -- it: should render Deployment with custom metrics port and image if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - metrics.port: 8000 - webhookPort: 9000 - image.repository: test - image.tag: dev-test - metrics.authProxy.image.repository: auth - metrics.authProxy.image.tag: auth-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].image - value: auth:auth-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/issuer_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/issuer_test.yaml deleted file mode 100755 index eeeb660b2..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/issuer_test.yaml +++ /dev/null @@ -1,106 +0,0 @@ -suite: Test Issuers -templates: -- issuer.yaml -tests: -- it: should not render issuer if certificates.certManager.enabled = false - set: - certificates.certManager.enabled: false - asserts: - - hasDocuments: - count: 0 - template: issuer.yaml -- it: should render issuer if certificates.certManager.enabled = true - set: - certificates.certManager.enabled: true - asserts: - - hasDocuments: - count: 2 - template: issuer.yaml -- it: should set issuer apiVersion with default cert-manager - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1beta1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1alpha2 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager < 0.11.0 using capabilities - capabilities: - apiversions: - - certmanager.k8s.io/v1alpha1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using parameter - set: - certificates.certManager.version: 1.0.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using parameter - set: - certificates.certManager.version: 0.16.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using parameter - set: - certificates.certManager.version: 0.11.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set letsEncrypt apiVersion with cert-manager < 0.11.0 using parameter - set: - certificates.certManager.version: 0.9.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/service_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/service_test.yaml deleted file mode 100755 index a0ba4d352..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/service_test.yaml +++ /dev/null @@ -1,69 +0,0 @@ -suite: Test Services -templates: -- service.yaml -tests: -- it: should render webhook-server service with default webhookPort if metrics.enabled = false - set: - metrics.enabled: false - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 -- it: should render webhook-server service with custom webhookPort if metrics.enabled = false - set: - metrics.enabled: false - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 -- it: should render webhook-server and webhook-metrics services with default webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8443 - documentIndex: 1 -- it: should render webhook-server and webhook-metrics services with custom webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - metrics.port: 8000 - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8000 - documentIndex: 1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/serviceaccount_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/serviceaccount_test.yaml deleted file mode 100755 index 5aebbc74b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/serviceaccount_test.yaml +++ /dev/null @@ -1,9 +0,0 @@ -suite: Test Service Accounts -templates: -- serviceaccount.yaml -tests: -- it: should render Service Account - asserts: - - hasDocuments: - count: 1 - template: serviceaccount.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/servicemonitor_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/servicemonitor_test.yaml deleted file mode 100755 index 21989265e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/tests/servicemonitor_test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -suite: Test Service Monitors -templates: -- servicemonitor.yaml -tests: -- it: should not render Service Monitor if metrics.enabled = false or metrics.prometheusExport = false - set: - metrics.enabled: false - metrics.prometheusExport: false - asserts: - - hasDocuments: - count: 0 - template: servicemonitor.yaml -- it: should render Service Account if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.prometheusExport: true - asserts: - - hasDocuments: - count: 1 - template: servicemonitor.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/values.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/values.yaml deleted file mode 100755 index dc17e9796..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.400/values.yaml +++ /dev/null @@ -1,67 +0,0 @@ -## Allowed external IP cidrs -allowedExternalIPCidrs: "" -## Certificates generation for webhook -certificates: - certManager: - # Enable cert manager integration. Cert manager should be already installed at the k8s cluster - enabled: true - version: "" - # If cert-manager integration is disabled, add self signed ca.crt in base64 format - caBundle: "" - # If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt and tls.key) as k8s secretName in the namespace - secretName: webhook-server-cert -## Details about the image to be pulled. -image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/externalip-webhook - tag: v0.1.4 -## Enabling metrics endpoint -# Webhook emits `webhook_failed_request_count` metrics whenever it rejects service creation or update operation -metrics: - enabled: false - port: 8443 - # Enable webhook metrics export to Prometheus - prometheusExport: false - # Webhook metrics auth proxy. This option is just available for amd64 arch - authProxy: - enabled: false - port: 8080 - image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/kube-rbac-proxy - tag: v0.5.0 - resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} -## RBAC -rbac: - apiVersion: v1 -## CPU and Memory limit and request for externalip-webhook -resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -service: - metricsPort: 8443 - webhookPort: 443 -## Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false -serviceAccountName: default -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -## Webhook server pod port -webhookPort: 9443 -global: - systemDefaultRegistry: "" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/.helmignore b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/Chart.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/Chart.yaml deleted file mode 100755 index 3143d5139..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: External IP Webhook - catalog.cattle.io/namespace: cattle-externalip-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-external-ip-webhook - catalog.cattle.io/ui-component: rancher-external-ip-webhook -apiVersion: v1 -appVersion: v0.1.6 -description: | - Deploy the external-ip-webhook to mitigate k8s CVE-2020-8554 -home: https://github.com/rancher/externalip-webhook -keywords: -- cve -- externalip -- webhook -- security -maintainers: -- email: raul@rancher.com - name: rawmind0 -name: rancher-external-ip-webhook -sources: -- https://github.com/rancher/externalip-webhook -version: 0.1.600 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/README.md deleted file mode 100755 index 4890065a7..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# externalip-webhook - -## Chart Details - -This chart will create a deployment of `externalip-webhook` within your Kubernetes Cluster. It's required to mitigate k8s CVE-2020-8554. - -## Installing the Chart - -To install the chart with the release name `rancher-external-ip-webhook`: - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -## Configuration - -The following table lists the configurable parameters of the externalip-webhook chart and their default values. - - -| Parameter | Description | Default | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| `allowedExternalIPCidrs` | Set allowed external IP CIDRs separated by a comma | `""` | -| `certificates.caBundle` | If cert-manager integration is disabled, add here self signed ca.crt in base64 format | `""` | -| `certificates.certManager.enabled` | Enable cert manager integration. Cert manager should be already installed at the k8s cluster | `true` | -| `certificates.certManager.version` | Cert manager version to use | `""` | -| `certificates.secretName` | If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt & tls.key) as k8s secretName in the namespace | `"webhook-server-cert"` | -| `global.systemDefaultRegistry` | Pull docker images from systemDefaultRegistry | `""` | -| `image.pullPolicy` | Webhook server docker pull policy | `"IfNotPresent"` | -| `image.pullSecrets` | Webhook server docker pull secret | `""` | -| `image.repository` | Webhook server docker image repository | `"rancher/externalip-webhook"` | -| `image.tag` | Webhook server docker image tag Defaults to | `".Chart.appVersion"` | -| `metrics.enabled` | Enable metrics endpoint | `false` | -| `metrics.port` | Webhook metrics pod port | `8443` | -| `metrics.prometheusExport` | Enable Prometheus export. Follow [exporting-metrics-for-prometheus](https://book.kubebuilder.io/reference/metrics.html#exporting-metrics-for-prometheus) to export the webhook metrics | `false` | -| `metrics.authProxy.enabled` | Enable auth proxy for metrics endpoint | `false` | -| `metrics.authProxy.port` | Webhook auth proxy pod port | `8080` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker pull policy | `"IfNotPresent"` | -| `metrics.authProxy.image.pullSecrets`| Webhook auth proxy docker pull secrets | `""` | -| `metrics.authProxy.image.repository` | Webhook auth proxy docker image repository | `"gcr.io/kubebuilder/kube-rbac-proxy"` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker image tag | `"v0.5.0"` | -| `metrics.authProxy.resources.limits.cpu` | Webhook auth proxy resource cpu limit | `"100m"` | -| `metrics.authProxy.resources.limits.memory` | Webhook auth proxy resource memory limit | `"30Mi"` | -| `metrics.authProxy.resources.requests.cpu` | Webhook auth proxy wesource cpu reservation | `"100m"` | -| `metrics.authProxy.resources.requests.memory` | Webhook auth proxy resource memory reservation | `"20Mi"` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `rbac.apiVersion` | Rbac API version to use | `"v1"` | -| `resources.limits.cpu` | Resource cpu limit | `"100m"` | -| `resources.limits.memory` | Resource memory limit | `"30Mi"` | -| `resources.requests.cpu` | Resource cpu reservation | `"100m"` | -| `resources.requests.memory` | Resource memory reservation | `"20Mi"` | -| `service.metricsPort` | Webhook metrics service port | `8443` | -| `service.webhookPort` | Webhook server service port | `443` | -| `serviceAccountName` | Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false | `"default"` | -| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` | -| `webhookPort` | Webhook server pod port | `9443` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -> **Tip**: You can use the default [values.yaml](https://github.com/rancher/externalip-webhook/blob/master/chart/values.yaml) diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/app-README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/app-README.md deleted file mode 100755 index bd8acd382..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/app-README.md +++ /dev/null @@ -1,12 +0,0 @@ -# externalip-webhook - -This chart was created to mitigate [CVE-2020-8554](https://www.cvedetails.com/cve/CVE-2020-8554/) - -External IP Webhook is a validating k8s webhook which prevents services from using random external IPs. -Cluster administrators can specify list of CIDRs allowed to be used as external IP by specifying `allowed-external-ip-cidrs` parameter. The webhook will only allow services which either don’t set external IP, or whose external IPs are within the range specified by the administrator. - -External IP Webhook certificates are required. They can be generated in 2 ways: -* cert-manager: This is the default chart configuration. Cert manager should be already installed at the k8s cluster -* uploading certs: Disable `Cert Manager integration` and set `Secret name` and `CA Bundle` at `Certificates` section. - -For more information, review the Helm README of this chart. diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/questions.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/questions.yaml deleted file mode 100755 index 3ea9edd93..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/questions.yaml +++ /dev/null @@ -1,26 +0,0 @@ -questions: -# allowedExternalIPCidrs -- variable: allowedExternalIPCidrs - label: Allowed external IP cidrs - description: Set allowed external IP CIDRs separated by a comma - type: string - group: Configuration -- variable: certificates.certManager.enabled - default: true - description: Enable cert manager integration. Cert manager should be already installed - label: Enable Cert Manager integration - type: boolean - group: "Certificates" - show_subquestion_if: false - subquestions: - - variable: certificates.secretName - default: webhook-server-cert - description: Use certificates from secret. Secret should exists in the app namespace, with certs data (ca.crt, tls.crt & tls.key) - label: Secret name - type: string - required: true - - variable: certificates.caBundle - description: Use self signed CA Bundle. It should be provided in base64 format - label: CA Bundle - type: string - required: true diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/NOTES.txt b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/NOTES.txt deleted file mode 100755 index 74271bdd5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/NOTES.txt +++ /dev/null @@ -1,3 +0,0 @@ -To verify that externalip-webhook has started, run: - - kubectl --namespace={{ .Release.Namespace }} get pods -l "app={{ template "externalip-webhook.name" . }},release={{ .Release.Name }}" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/_helpers.tpl b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/_helpers.tpl deleted file mode 100755 index cc8a9a0d3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/_helpers.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "externalip-webhook.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "externalip-webhook.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if ne $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s" $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* Generate basic labels */}} -{{- define "externalip-webhook.labels" }} -app: {{ template "externalip-webhook.name" . }} -heritage: {{.Release.Service }} -release: {{.Release.Name }} -{{- end }} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -kubernetes.io/os: linux -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/admissionregistration.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/admissionregistration.yaml deleted file mode 100755 index d8152faa5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/admissionregistration.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: -{{- if .Values.certificates.certManager.enabled }} - annotations: - cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "externalip-webhook.fullname" . }}-server-cert -{{- end }} - creationTimestamp: null - name: {{ template "externalip-webhook.fullname" . }}-validating-webhook-configuration -webhooks: -- clientConfig: -{{- if not (.Values.certificates.certManager.enabled) }} - caBundle: {{ .Values.certificates.caBundle }} -{{- end }} - service: - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} - path: /validate-service - failurePolicy: Ignore - name: {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - services \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrole.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrole.yaml deleted file mode 100755 index 46e18bf00..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) -}} -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-reader -rules: -- nonResourceURLs: - - /metrics - verbs: - - get -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrolebinding.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrolebinding.yaml deleted file mode 100755 index 2fa40817f..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-cluster-view -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: view -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/deployment.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/deployment.yaml deleted file mode 100755 index c82754deb..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/deployment.yaml +++ /dev/null @@ -1,107 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} - template: - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 8 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - spec: - containers: - {{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} - - name: {{ template "externalip-webhook.fullname" . }}-auth-proxy - args: - - --secure-listen-address=0.0.0.0:{{ .Values.metrics.port }} - - --upstream=http://127.0.0.1:{{ .Values.metrics.authProxy.port }}/ - - --logtostderr=true - - --v=10 - image: {{ template "system_default_registry" . }}{{ .Values.metrics.authProxy.image.repository}}:{{ .Values.metrics.authProxy.image.tag }} - imagePullPolicy: "{{ .Values.metrics.authProxy.image.pullPolicy }}" - ports: - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - resources: -{{ toYaml .Values.metrics.authProxy.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - {{- end }} - - name: {{ template "externalip-webhook.fullname" . }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository}}:{{ default .Chart.AppVersion .Values.image.tag }} - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - command: - - /webhook - args: - - --webhook-port={{ .Values.webhookPort }} - {{- if .Values.allowedExternalIPCidrs }} - - --allowed-external-ip-cidrs={{ .Values.allowedExternalIPCidrs }} - {{- end }} - {{- if .Values.metrics.enabled }} - {{- if .Values.metrics.authProxy.enabled }} - - --metrics-addr=127.0.0.1:{{ .Values.metrics.authProxy.port }} - {{- else }} - - --metrics-addr=0.0.0.0:{{ .Values.metrics.port }} - {{- end }} - {{- end }} - ports: - - containerPort: {{ .Values.webhookPort }} - name: webhook-server - protocol: TCP - {{- if and (.Values.metrics.enabled) (not (.Values.metrics.authProxy.enabled)) }} - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - {{- end }} - volumeMounts: - - name: server-cert - mountPath: /tmp/k8s-webhook-server/serving-certs - readOnly: true - resources: -{{ toYaml .Values.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - livenessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 6}} - {{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 6 }} - {{- end }} - serviceAccountName: {{ template "externalip-webhook.fullname" . }} - volumes: - - name: server-cert - secret: - defaultMode: 420 - secretName: {{ .Values.certificates.secretName }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/issuer.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/issuer.yaml deleted file mode 100755 index ff1c2de10..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/issuer.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.certificates.certManager.enabled -}} - {{- $certmanagerVer := split "." .Values.certificates.certManager.version -}} - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Certificate -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-server-cert - namespace: {{ .Release.Namespace }} -spec: - dnsNames: - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - issuerRef: - kind: Issuer - name: {{ template "externalip-webhook.fullname" . }}-issuer - secretName: {{ .Values.certificates.secretName }} ---- - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Issuer -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-issuer - namespace: {{ .Release.Namespace }} -spec: - selfSigned: {} -{{- end -}} - - diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/service.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/service.yaml deleted file mode 100755 index 256add3e4..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-server - port: {{ .Values.service.webhookPort }} - protocol: TCP - targetPort: {{ .Values.webhookPort }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- if .Values.metrics.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-service - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-metrics - port: {{ .Values.service.metricsPort }} - protocol: TCP - targetPort: {{ .Values.metrics.port }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/serviceaccount.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/serviceaccount.yaml deleted file mode 100755 index 895df4f5b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/servicemonitor.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/servicemonitor.yaml deleted file mode 100755 index c481ea31d..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/templates/servicemonitor.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.prometheusExport) -}} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-monitor - namespace: {{ .Release.Namespace }} -spec: - endpoints: - - path: /metrics - port: https - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/admissionregistration_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/admissionregistration_test.yaml deleted file mode 100755 index 0660aa6e8..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/admissionregistration_test.yaml +++ /dev/null @@ -1,32 +0,0 @@ -suite: Test Admission Registration -templates: -- admissionregistration.yaml -tests: -- it: should render Admission Registration - asserts: - - equal: - path: apiVersion - value: admissionregistration.k8s.io/v1beta1 -- it: should render Admission Registration annotation and not caBundle if certificates.certManager.enabled = true - release: - name: rancher-externalip-webhook - namespace: test - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: metadata.annotations - value: - cert-manager.io/inject-ca-from: test/rancher-externalip-webhook-server-cert - - isNull: - path: webhooks[0].clientConfig.caBundle -- it: should render Admission Registration caBundle and not annotation if certificates.certManager.enabled = false - set: - certificates.caBundle: test - certificates.certManager.enabled: false - asserts: - - equal: - path: webhooks[0].clientConfig.caBundle - value: test - - isNull: - path: metadata.annotations diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrole_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrole_test.yaml deleted file mode 100755 index 9e563807b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrole_test.yaml +++ /dev/null @@ -1,37 +0,0 @@ -suite: Test Cluster Roles -templates: -- clusterrole.yaml -tests: -- it: should not render Cluster Roles if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 0 - template: clusterrole.yaml -- it: should render Cluster Roles if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrole.yaml -- it: should render Cluster Roles with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Roles with custom rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrolebinding_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrolebinding_test.yaml deleted file mode 100755 index 2129573a3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/clusterrolebinding_test.yaml +++ /dev/null @@ -1,42 +0,0 @@ -suite: Test Cluster Role Bindings -templates: -- clusterrolebinding.yaml -tests: -- it: should render Cluster Role Bindings with default rbac api version - set: - rbac.apiVersion: v1 - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Role Bindings with custom rbac api version - set: - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta -- it: should not render Cluster Role Binding proxy if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 1 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings proxy if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/deployment_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/deployment_test.yaml deleted file mode 100755 index 50e3f9ec1..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/deployment_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -suite: Test Deployments -templates: -- deployment.yaml -tests: -- it: should render Deployment with allowed-external-ip-cidrs arg if allowedExternalIPCidrs is set - release: - name: rancher-externalip-webhook - set: - allowedExternalIPCidrs: "1,2" - asserts: - - equal: - path: spec.template.spec.containers[0].args[1] - value: --allowed-external-ip-cidrs=1,2 -- it: should render Deployment with default port, nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux -- it: should render Deployment with default port and custom nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - tolerations: - - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - nodeSelector: - kubernetes.io/test: linux - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.tolerations[1] - value: - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux - kubernetes.io/test: linux -- it: should render Deployment with custom port and image if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - webhookPort: 9000 - image.repository: test - image.tag: dev-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with custom metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.port: 8000 - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP -- it: should render Deployment with custom metrics port and image if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - metrics.port: 8000 - webhookPort: 9000 - image.repository: test - image.tag: dev-test - metrics.authProxy.image.repository: auth - metrics.authProxy.image.tag: auth-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].image - value: auth:auth-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/issuer_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/issuer_test.yaml deleted file mode 100755 index eeeb660b2..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/issuer_test.yaml +++ /dev/null @@ -1,106 +0,0 @@ -suite: Test Issuers -templates: -- issuer.yaml -tests: -- it: should not render issuer if certificates.certManager.enabled = false - set: - certificates.certManager.enabled: false - asserts: - - hasDocuments: - count: 0 - template: issuer.yaml -- it: should render issuer if certificates.certManager.enabled = true - set: - certificates.certManager.enabled: true - asserts: - - hasDocuments: - count: 2 - template: issuer.yaml -- it: should set issuer apiVersion with default cert-manager - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1beta1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1alpha2 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager < 0.11.0 using capabilities - capabilities: - apiversions: - - certmanager.k8s.io/v1alpha1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using parameter - set: - certificates.certManager.version: 1.0.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using parameter - set: - certificates.certManager.version: 0.16.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using parameter - set: - certificates.certManager.version: 0.11.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set letsEncrypt apiVersion with cert-manager < 0.11.0 using parameter - set: - certificates.certManager.version: 0.9.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/service_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/service_test.yaml deleted file mode 100755 index a0ba4d352..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/service_test.yaml +++ /dev/null @@ -1,69 +0,0 @@ -suite: Test Services -templates: -- service.yaml -tests: -- it: should render webhook-server service with default webhookPort if metrics.enabled = false - set: - metrics.enabled: false - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 -- it: should render webhook-server service with custom webhookPort if metrics.enabled = false - set: - metrics.enabled: false - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 -- it: should render webhook-server and webhook-metrics services with default webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8443 - documentIndex: 1 -- it: should render webhook-server and webhook-metrics services with custom webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - metrics.port: 8000 - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8000 - documentIndex: 1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/serviceaccount_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/serviceaccount_test.yaml deleted file mode 100755 index 5aebbc74b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/serviceaccount_test.yaml +++ /dev/null @@ -1,9 +0,0 @@ -suite: Test Service Accounts -templates: -- serviceaccount.yaml -tests: -- it: should render Service Account - asserts: - - hasDocuments: - count: 1 - template: serviceaccount.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/servicemonitor_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/servicemonitor_test.yaml deleted file mode 100755 index 21989265e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/tests/servicemonitor_test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -suite: Test Service Monitors -templates: -- servicemonitor.yaml -tests: -- it: should not render Service Monitor if metrics.enabled = false or metrics.prometheusExport = false - set: - metrics.enabled: false - metrics.prometheusExport: false - asserts: - - hasDocuments: - count: 0 - template: servicemonitor.yaml -- it: should render Service Account if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.prometheusExport: true - asserts: - - hasDocuments: - count: 1 - template: servicemonitor.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/values.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/values.yaml deleted file mode 100755 index 19145a81b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.600/values.yaml +++ /dev/null @@ -1,67 +0,0 @@ -## Allowed external IP cidrs -allowedExternalIPCidrs: "" -## Certificates generation for webhook -certificates: - certManager: - # Enable cert manager integration. Cert manager should be already installed at the k8s cluster - enabled: true - version: "" - # If cert-manager integration is disabled, add self signed ca.crt in base64 format - caBundle: "" - # If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt and tls.key) as k8s secretName in the namespace - secretName: webhook-server-cert -## Details about the image to be pulled. -image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/externalip-webhook - tag: v0.1.6 -## Enabling metrics endpoint -# Webhook emits `webhook_failed_request_count` metrics whenever it rejects service creation or update operation -metrics: - enabled: false - port: 8443 - # Enable webhook metrics export to Prometheus - prometheusExport: false - # Webhook metrics auth proxy. This option is just available for amd64 arch - authProxy: - enabled: false - port: 8080 - image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/kube-rbac-proxy - tag: v0.5.0 - resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} -## RBAC -rbac: - apiVersion: v1 -## CPU and Memory limit and request for externalip-webhook -resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -service: - metricsPort: 8443 - webhookPort: 443 -## Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false -serviceAccountName: default -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -## Webhook server pod port -webhookPort: 9443 -global: - systemDefaultRegistry: "" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/.helmignore b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/Chart.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/Chart.yaml deleted file mode 100644 index 755fa94aa..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: External IP Webhook - catalog.cattle.io/namespace: cattle-externalip-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-external-ip-webhook - catalog.cattle.io/ui-component: rancher-external-ip-webhook -apiVersion: v1 -appVersion: v0.1.6 -description: | - Deploy the external-ip-webhook to mitigate k8s CVE-2020-8554 -home: https://github.com/rancher/externalip-webhook -keywords: -- cve -- externalip -- webhook -- security -maintainers: -- email: raul@rancher.com - name: rawmind0 -name: rancher-external-ip-webhook -sources: -- https://github.com/rancher/externalip-webhook -version: 0.1.601+up0.1.6 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/README.md deleted file mode 100644 index 4890065a7..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# externalip-webhook - -## Chart Details - -This chart will create a deployment of `externalip-webhook` within your Kubernetes Cluster. It's required to mitigate k8s CVE-2020-8554. - -## Installing the Chart - -To install the chart with the release name `rancher-external-ip-webhook`: - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -## Configuration - -The following table lists the configurable parameters of the externalip-webhook chart and their default values. - - -| Parameter | Description | Default | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| `allowedExternalIPCidrs` | Set allowed external IP CIDRs separated by a comma | `""` | -| `certificates.caBundle` | If cert-manager integration is disabled, add here self signed ca.crt in base64 format | `""` | -| `certificates.certManager.enabled` | Enable cert manager integration. Cert manager should be already installed at the k8s cluster | `true` | -| `certificates.certManager.version` | Cert manager version to use | `""` | -| `certificates.secretName` | If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt & tls.key) as k8s secretName in the namespace | `"webhook-server-cert"` | -| `global.systemDefaultRegistry` | Pull docker images from systemDefaultRegistry | `""` | -| `image.pullPolicy` | Webhook server docker pull policy | `"IfNotPresent"` | -| `image.pullSecrets` | Webhook server docker pull secret | `""` | -| `image.repository` | Webhook server docker image repository | `"rancher/externalip-webhook"` | -| `image.tag` | Webhook server docker image tag Defaults to | `".Chart.appVersion"` | -| `metrics.enabled` | Enable metrics endpoint | `false` | -| `metrics.port` | Webhook metrics pod port | `8443` | -| `metrics.prometheusExport` | Enable Prometheus export. Follow [exporting-metrics-for-prometheus](https://book.kubebuilder.io/reference/metrics.html#exporting-metrics-for-prometheus) to export the webhook metrics | `false` | -| `metrics.authProxy.enabled` | Enable auth proxy for metrics endpoint | `false` | -| `metrics.authProxy.port` | Webhook auth proxy pod port | `8080` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker pull policy | `"IfNotPresent"` | -| `metrics.authProxy.image.pullSecrets`| Webhook auth proxy docker pull secrets | `""` | -| `metrics.authProxy.image.repository` | Webhook auth proxy docker image repository | `"gcr.io/kubebuilder/kube-rbac-proxy"` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker image tag | `"v0.5.0"` | -| `metrics.authProxy.resources.limits.cpu` | Webhook auth proxy resource cpu limit | `"100m"` | -| `metrics.authProxy.resources.limits.memory` | Webhook auth proxy resource memory limit | `"30Mi"` | -| `metrics.authProxy.resources.requests.cpu` | Webhook auth proxy wesource cpu reservation | `"100m"` | -| `metrics.authProxy.resources.requests.memory` | Webhook auth proxy resource memory reservation | `"20Mi"` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `rbac.apiVersion` | Rbac API version to use | `"v1"` | -| `resources.limits.cpu` | Resource cpu limit | `"100m"` | -| `resources.limits.memory` | Resource memory limit | `"30Mi"` | -| `resources.requests.cpu` | Resource cpu reservation | `"100m"` | -| `resources.requests.memory` | Resource memory reservation | `"20Mi"` | -| `service.metricsPort` | Webhook metrics service port | `8443` | -| `service.webhookPort` | Webhook server service port | `443` | -| `serviceAccountName` | Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false | `"default"` | -| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` | -| `webhookPort` | Webhook server pod port | `9443` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -> **Tip**: You can use the default [values.yaml](https://github.com/rancher/externalip-webhook/blob/master/chart/values.yaml) diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/app-README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/app-README.md deleted file mode 100644 index bd8acd382..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/app-README.md +++ /dev/null @@ -1,12 +0,0 @@ -# externalip-webhook - -This chart was created to mitigate [CVE-2020-8554](https://www.cvedetails.com/cve/CVE-2020-8554/) - -External IP Webhook is a validating k8s webhook which prevents services from using random external IPs. -Cluster administrators can specify list of CIDRs allowed to be used as external IP by specifying `allowed-external-ip-cidrs` parameter. The webhook will only allow services which either don’t set external IP, or whose external IPs are within the range specified by the administrator. - -External IP Webhook certificates are required. They can be generated in 2 ways: -* cert-manager: This is the default chart configuration. Cert manager should be already installed at the k8s cluster -* uploading certs: Disable `Cert Manager integration` and set `Secret name` and `CA Bundle` at `Certificates` section. - -For more information, review the Helm README of this chart. diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/questions.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/questions.yaml deleted file mode 100644 index 3ea9edd93..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/questions.yaml +++ /dev/null @@ -1,26 +0,0 @@ -questions: -# allowedExternalIPCidrs -- variable: allowedExternalIPCidrs - label: Allowed external IP cidrs - description: Set allowed external IP CIDRs separated by a comma - type: string - group: Configuration -- variable: certificates.certManager.enabled - default: true - description: Enable cert manager integration. Cert manager should be already installed - label: Enable Cert Manager integration - type: boolean - group: "Certificates" - show_subquestion_if: false - subquestions: - - variable: certificates.secretName - default: webhook-server-cert - description: Use certificates from secret. Secret should exists in the app namespace, with certs data (ca.crt, tls.crt & tls.key) - label: Secret name - type: string - required: true - - variable: certificates.caBundle - description: Use self signed CA Bundle. It should be provided in base64 format - label: CA Bundle - type: string - required: true diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/NOTES.txt b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/NOTES.txt deleted file mode 100644 index 74271bdd5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/NOTES.txt +++ /dev/null @@ -1,3 +0,0 @@ -To verify that externalip-webhook has started, run: - - kubectl --namespace={{ .Release.Namespace }} get pods -l "app={{ template "externalip-webhook.name" . }},release={{ .Release.Name }}" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/_helpers.tpl b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/_helpers.tpl deleted file mode 100644 index cc8a9a0d3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/_helpers.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "externalip-webhook.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "externalip-webhook.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if ne $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s" $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* Generate basic labels */}} -{{- define "externalip-webhook.labels" }} -app: {{ template "externalip-webhook.name" . }} -heritage: {{.Release.Service }} -release: {{.Release.Name }} -{{- end }} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -kubernetes.io/os: linux -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/admissionregistration.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/admissionregistration.yaml deleted file mode 100644 index d8152faa5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/admissionregistration.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: -{{- if .Values.certificates.certManager.enabled }} - annotations: - cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "externalip-webhook.fullname" . }}-server-cert -{{- end }} - creationTimestamp: null - name: {{ template "externalip-webhook.fullname" . }}-validating-webhook-configuration -webhooks: -- clientConfig: -{{- if not (.Values.certificates.certManager.enabled) }} - caBundle: {{ .Values.certificates.caBundle }} -{{- end }} - service: - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} - path: /validate-service - failurePolicy: Ignore - name: {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - services \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrole.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrole.yaml deleted file mode 100644 index 46e18bf00..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) -}} -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-reader -rules: -- nonResourceURLs: - - /metrics - verbs: - - get -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrolebinding.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrolebinding.yaml deleted file mode 100644 index 2fa40817f..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-cluster-view -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: view -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/deployment.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/deployment.yaml deleted file mode 100644 index c82754deb..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/deployment.yaml +++ /dev/null @@ -1,107 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} - template: - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 8 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - spec: - containers: - {{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} - - name: {{ template "externalip-webhook.fullname" . }}-auth-proxy - args: - - --secure-listen-address=0.0.0.0:{{ .Values.metrics.port }} - - --upstream=http://127.0.0.1:{{ .Values.metrics.authProxy.port }}/ - - --logtostderr=true - - --v=10 - image: {{ template "system_default_registry" . }}{{ .Values.metrics.authProxy.image.repository}}:{{ .Values.metrics.authProxy.image.tag }} - imagePullPolicy: "{{ .Values.metrics.authProxy.image.pullPolicy }}" - ports: - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - resources: -{{ toYaml .Values.metrics.authProxy.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - {{- end }} - - name: {{ template "externalip-webhook.fullname" . }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository}}:{{ default .Chart.AppVersion .Values.image.tag }} - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - command: - - /webhook - args: - - --webhook-port={{ .Values.webhookPort }} - {{- if .Values.allowedExternalIPCidrs }} - - --allowed-external-ip-cidrs={{ .Values.allowedExternalIPCidrs }} - {{- end }} - {{- if .Values.metrics.enabled }} - {{- if .Values.metrics.authProxy.enabled }} - - --metrics-addr=127.0.0.1:{{ .Values.metrics.authProxy.port }} - {{- else }} - - --metrics-addr=0.0.0.0:{{ .Values.metrics.port }} - {{- end }} - {{- end }} - ports: - - containerPort: {{ .Values.webhookPort }} - name: webhook-server - protocol: TCP - {{- if and (.Values.metrics.enabled) (not (.Values.metrics.authProxy.enabled)) }} - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - {{- end }} - volumeMounts: - - name: server-cert - mountPath: /tmp/k8s-webhook-server/serving-certs - readOnly: true - resources: -{{ toYaml .Values.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - livenessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 6}} - {{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 6 }} - {{- end }} - serviceAccountName: {{ template "externalip-webhook.fullname" . }} - volumes: - - name: server-cert - secret: - defaultMode: 420 - secretName: {{ .Values.certificates.secretName }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/issuer.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/issuer.yaml deleted file mode 100644 index ff1c2de10..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/issuer.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.certificates.certManager.enabled -}} - {{- $certmanagerVer := split "." .Values.certificates.certManager.version -}} - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Certificate -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-server-cert - namespace: {{ .Release.Namespace }} -spec: - dnsNames: - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - issuerRef: - kind: Issuer - name: {{ template "externalip-webhook.fullname" . }}-issuer - secretName: {{ .Values.certificates.secretName }} ---- - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Issuer -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-issuer - namespace: {{ .Release.Namespace }} -spec: - selfSigned: {} -{{- end -}} - - diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/service.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/service.yaml deleted file mode 100644 index 256add3e4..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-server - port: {{ .Values.service.webhookPort }} - protocol: TCP - targetPort: {{ .Values.webhookPort }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- if .Values.metrics.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-service - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-metrics - port: {{ .Values.service.metricsPort }} - protocol: TCP - targetPort: {{ .Values.metrics.port }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/serviceaccount.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/serviceaccount.yaml deleted file mode 100644 index 895df4f5b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/servicemonitor.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/servicemonitor.yaml deleted file mode 100644 index c481ea31d..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/templates/servicemonitor.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.prometheusExport) -}} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-monitor - namespace: {{ .Release.Namespace }} -spec: - endpoints: - - path: /metrics - port: https - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/admissionregistration_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/admissionregistration_test.yaml deleted file mode 100644 index 0660aa6e8..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/admissionregistration_test.yaml +++ /dev/null @@ -1,32 +0,0 @@ -suite: Test Admission Registration -templates: -- admissionregistration.yaml -tests: -- it: should render Admission Registration - asserts: - - equal: - path: apiVersion - value: admissionregistration.k8s.io/v1beta1 -- it: should render Admission Registration annotation and not caBundle if certificates.certManager.enabled = true - release: - name: rancher-externalip-webhook - namespace: test - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: metadata.annotations - value: - cert-manager.io/inject-ca-from: test/rancher-externalip-webhook-server-cert - - isNull: - path: webhooks[0].clientConfig.caBundle -- it: should render Admission Registration caBundle and not annotation if certificates.certManager.enabled = false - set: - certificates.caBundle: test - certificates.certManager.enabled: false - asserts: - - equal: - path: webhooks[0].clientConfig.caBundle - value: test - - isNull: - path: metadata.annotations diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrole_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrole_test.yaml deleted file mode 100644 index 9e563807b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrole_test.yaml +++ /dev/null @@ -1,37 +0,0 @@ -suite: Test Cluster Roles -templates: -- clusterrole.yaml -tests: -- it: should not render Cluster Roles if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 0 - template: clusterrole.yaml -- it: should render Cluster Roles if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrole.yaml -- it: should render Cluster Roles with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Roles with custom rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrolebinding_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrolebinding_test.yaml deleted file mode 100644 index 2129573a3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/clusterrolebinding_test.yaml +++ /dev/null @@ -1,42 +0,0 @@ -suite: Test Cluster Role Bindings -templates: -- clusterrolebinding.yaml -tests: -- it: should render Cluster Role Bindings with default rbac api version - set: - rbac.apiVersion: v1 - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Role Bindings with custom rbac api version - set: - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta -- it: should not render Cluster Role Binding proxy if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 1 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings proxy if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/deployment_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/deployment_test.yaml deleted file mode 100644 index 50e3f9ec1..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/deployment_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -suite: Test Deployments -templates: -- deployment.yaml -tests: -- it: should render Deployment with allowed-external-ip-cidrs arg if allowedExternalIPCidrs is set - release: - name: rancher-externalip-webhook - set: - allowedExternalIPCidrs: "1,2" - asserts: - - equal: - path: spec.template.spec.containers[0].args[1] - value: --allowed-external-ip-cidrs=1,2 -- it: should render Deployment with default port, nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux -- it: should render Deployment with default port and custom nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - tolerations: - - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - nodeSelector: - kubernetes.io/test: linux - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.tolerations[1] - value: - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux - kubernetes.io/test: linux -- it: should render Deployment with custom port and image if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - webhookPort: 9000 - image.repository: test - image.tag: dev-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with custom metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.port: 8000 - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP -- it: should render Deployment with custom metrics port and image if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - metrics.port: 8000 - webhookPort: 9000 - image.repository: test - image.tag: dev-test - metrics.authProxy.image.repository: auth - metrics.authProxy.image.tag: auth-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].image - value: auth:auth-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/issuer_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/issuer_test.yaml deleted file mode 100644 index eeeb660b2..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/issuer_test.yaml +++ /dev/null @@ -1,106 +0,0 @@ -suite: Test Issuers -templates: -- issuer.yaml -tests: -- it: should not render issuer if certificates.certManager.enabled = false - set: - certificates.certManager.enabled: false - asserts: - - hasDocuments: - count: 0 - template: issuer.yaml -- it: should render issuer if certificates.certManager.enabled = true - set: - certificates.certManager.enabled: true - asserts: - - hasDocuments: - count: 2 - template: issuer.yaml -- it: should set issuer apiVersion with default cert-manager - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1beta1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1alpha2 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager < 0.11.0 using capabilities - capabilities: - apiversions: - - certmanager.k8s.io/v1alpha1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using parameter - set: - certificates.certManager.version: 1.0.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using parameter - set: - certificates.certManager.version: 0.16.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using parameter - set: - certificates.certManager.version: 0.11.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set letsEncrypt apiVersion with cert-manager < 0.11.0 using parameter - set: - certificates.certManager.version: 0.9.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/service_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/service_test.yaml deleted file mode 100644 index a0ba4d352..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/service_test.yaml +++ /dev/null @@ -1,69 +0,0 @@ -suite: Test Services -templates: -- service.yaml -tests: -- it: should render webhook-server service with default webhookPort if metrics.enabled = false - set: - metrics.enabled: false - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 -- it: should render webhook-server service with custom webhookPort if metrics.enabled = false - set: - metrics.enabled: false - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 -- it: should render webhook-server and webhook-metrics services with default webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8443 - documentIndex: 1 -- it: should render webhook-server and webhook-metrics services with custom webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - metrics.port: 8000 - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8000 - documentIndex: 1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/serviceaccount_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/serviceaccount_test.yaml deleted file mode 100644 index 5aebbc74b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/serviceaccount_test.yaml +++ /dev/null @@ -1,9 +0,0 @@ -suite: Test Service Accounts -templates: -- serviceaccount.yaml -tests: -- it: should render Service Account - asserts: - - hasDocuments: - count: 1 - template: serviceaccount.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/servicemonitor_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/servicemonitor_test.yaml deleted file mode 100644 index 21989265e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/tests/servicemonitor_test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -suite: Test Service Monitors -templates: -- servicemonitor.yaml -tests: -- it: should not render Service Monitor if metrics.enabled = false or metrics.prometheusExport = false - set: - metrics.enabled: false - metrics.prometheusExport: false - asserts: - - hasDocuments: - count: 0 - template: servicemonitor.yaml -- it: should render Service Account if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.prometheusExport: true - asserts: - - hasDocuments: - count: 1 - template: servicemonitor.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/values.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/values.yaml deleted file mode 100644 index 832d2199e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601+up0.1.6/values.yaml +++ /dev/null @@ -1,67 +0,0 @@ -## Allowed external IP cidrs -allowedExternalIPCidrs: "" -## Certificates generation for webhook -certificates: - certManager: - # Enable cert manager integration. Cert manager should be already installed at the k8s cluster - enabled: true - version: "" - # If cert-manager integration is disabled, add self signed ca.crt in base64 format - caBundle: "" - # If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt and tls.key) as k8s secretName in the namespace - secretName: webhook-server-cert -## Details about the image to be pulled. -image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/externalip-webhook - tag: v0.1.6 -## Enabling metrics endpoint -# Webhook emits `webhook_failed_request_count` metrics whenever it rejects service creation or update operation -metrics: - enabled: false - port: 8443 - # Enable webhook metrics export to Prometheus - prometheusExport: false - # Webhook metrics auth proxy. This option is just available for amd64 arch - authProxy: - enabled: false - port: 8080 - image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/mirrored-kube-rbac-proxy - tag: v0.5.0 - resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} -## RBAC -rbac: - apiVersion: v1 -## CPU and Memory limit and request for externalip-webhook -resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -service: - metricsPort: 8443 - webhookPort: 443 -## Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false -serviceAccountName: default -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -## Webhook server pod port -webhookPort: 9443 -global: - systemDefaultRegistry: "" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/.helmignore b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/Chart.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/Chart.yaml deleted file mode 100755 index aebc35572..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: External IP Webhook - catalog.cattle.io/namespace: cattle-externalip-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-external-ip-webhook - catalog.cattle.io/ui-component: rancher-external-ip-webhook -apiVersion: v1 -appVersion: v0.1.6 -description: | - Deploy the external-ip-webhook to mitigate k8s CVE-2020-8554 -home: https://github.com/rancher/externalip-webhook -keywords: -- cve -- externalip -- webhook -- security -maintainers: -- email: raul@rancher.com - name: rawmind0 -name: rancher-external-ip-webhook -sources: -- https://github.com/rancher/externalip-webhook -version: 0.1.601 diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/README.md deleted file mode 100755 index 4890065a7..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# externalip-webhook - -## Chart Details - -This chart will create a deployment of `externalip-webhook` within your Kubernetes Cluster. It's required to mitigate k8s CVE-2020-8554. - -## Installing the Chart - -To install the chart with the release name `rancher-external-ip-webhook`: - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -## Configuration - -The following table lists the configurable parameters of the externalip-webhook chart and their default values. - - -| Parameter | Description | Default | -| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | -| `allowedExternalIPCidrs` | Set allowed external IP CIDRs separated by a comma | `""` | -| `certificates.caBundle` | If cert-manager integration is disabled, add here self signed ca.crt in base64 format | `""` | -| `certificates.certManager.enabled` | Enable cert manager integration. Cert manager should be already installed at the k8s cluster | `true` | -| `certificates.certManager.version` | Cert manager version to use | `""` | -| `certificates.secretName` | If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt & tls.key) as k8s secretName in the namespace | `"webhook-server-cert"` | -| `global.systemDefaultRegistry` | Pull docker images from systemDefaultRegistry | `""` | -| `image.pullPolicy` | Webhook server docker pull policy | `"IfNotPresent"` | -| `image.pullSecrets` | Webhook server docker pull secret | `""` | -| `image.repository` | Webhook server docker image repository | `"rancher/externalip-webhook"` | -| `image.tag` | Webhook server docker image tag Defaults to | `".Chart.appVersion"` | -| `metrics.enabled` | Enable metrics endpoint | `false` | -| `metrics.port` | Webhook metrics pod port | `8443` | -| `metrics.prometheusExport` | Enable Prometheus export. Follow [exporting-metrics-for-prometheus](https://book.kubebuilder.io/reference/metrics.html#exporting-metrics-for-prometheus) to export the webhook metrics | `false` | -| `metrics.authProxy.enabled` | Enable auth proxy for metrics endpoint | `false` | -| `metrics.authProxy.port` | Webhook auth proxy pod port | `8080` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker pull policy | `"IfNotPresent"` | -| `metrics.authProxy.image.pullSecrets`| Webhook auth proxy docker pull secrets | `""` | -| `metrics.authProxy.image.repository` | Webhook auth proxy docker image repository | `"gcr.io/kubebuilder/kube-rbac-proxy"` | -| `metrics.authProxy.image.pullPolicy` | Webhook auth proxy docker image tag | `"v0.5.0"` | -| `metrics.authProxy.resources.limits.cpu` | Webhook auth proxy resource cpu limit | `"100m"` | -| `metrics.authProxy.resources.limits.memory` | Webhook auth proxy resource memory limit | `"30Mi"` | -| `metrics.authProxy.resources.requests.cpu` | Webhook auth proxy wesource cpu reservation | `"100m"` | -| `metrics.authProxy.resources.requests.memory` | Webhook auth proxy resource memory reservation | `"20Mi"` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `rbac.apiVersion` | Rbac API version to use | `"v1"` | -| `resources.limits.cpu` | Resource cpu limit | `"100m"` | -| `resources.limits.memory` | Resource memory limit | `"30Mi"` | -| `resources.requests.cpu` | Resource cpu reservation | `"100m"` | -| `resources.requests.memory` | Resource memory reservation | `"20Mi"` | -| `service.metricsPort` | Webhook metrics service port | `8443` | -| `service.webhookPort` | Webhook server service port | `443` | -| `serviceAccountName` | Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false | `"default"` | -| `tolerations` | List of node taints to tolerate (requires Kubernetes >= 1.6) | `[]` | -| `webhookPort` | Webhook server pod port | `9443` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, - -```bash -$ helm repo add rancher-chart https://charts.rancher.io -$ helm repo update -$ helm install rancher-external-ip-webhook rancher-chart/rancher-external-ip-webhook --namespace cattle-externalip-system -f values.yaml -``` - -> **Tip**: You can use the default [values.yaml](https://github.com/rancher/externalip-webhook/blob/master/chart/values.yaml) diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/app-README.md b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/app-README.md deleted file mode 100755 index bd8acd382..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/app-README.md +++ /dev/null @@ -1,12 +0,0 @@ -# externalip-webhook - -This chart was created to mitigate [CVE-2020-8554](https://www.cvedetails.com/cve/CVE-2020-8554/) - -External IP Webhook is a validating k8s webhook which prevents services from using random external IPs. -Cluster administrators can specify list of CIDRs allowed to be used as external IP by specifying `allowed-external-ip-cidrs` parameter. The webhook will only allow services which either don’t set external IP, or whose external IPs are within the range specified by the administrator. - -External IP Webhook certificates are required. They can be generated in 2 ways: -* cert-manager: This is the default chart configuration. Cert manager should be already installed at the k8s cluster -* uploading certs: Disable `Cert Manager integration` and set `Secret name` and `CA Bundle` at `Certificates` section. - -For more information, review the Helm README of this chart. diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/questions.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/questions.yaml deleted file mode 100755 index 3ea9edd93..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/questions.yaml +++ /dev/null @@ -1,26 +0,0 @@ -questions: -# allowedExternalIPCidrs -- variable: allowedExternalIPCidrs - label: Allowed external IP cidrs - description: Set allowed external IP CIDRs separated by a comma - type: string - group: Configuration -- variable: certificates.certManager.enabled - default: true - description: Enable cert manager integration. Cert manager should be already installed - label: Enable Cert Manager integration - type: boolean - group: "Certificates" - show_subquestion_if: false - subquestions: - - variable: certificates.secretName - default: webhook-server-cert - description: Use certificates from secret. Secret should exists in the app namespace, with certs data (ca.crt, tls.crt & tls.key) - label: Secret name - type: string - required: true - - variable: certificates.caBundle - description: Use self signed CA Bundle. It should be provided in base64 format - label: CA Bundle - type: string - required: true diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/NOTES.txt b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/NOTES.txt deleted file mode 100755 index 74271bdd5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/NOTES.txt +++ /dev/null @@ -1,3 +0,0 @@ -To verify that externalip-webhook has started, run: - - kubectl --namespace={{ .Release.Namespace }} get pods -l "app={{ template "externalip-webhook.name" . }},release={{ .Release.Name }}" diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/_helpers.tpl b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/_helpers.tpl deleted file mode 100755 index cc8a9a0d3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/_helpers.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "externalip-webhook.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "externalip-webhook.fullname" -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if ne $name .Release.Name -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s" $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} - -{{/* Generate basic labels */}} -{{- define "externalip-webhook.labels" }} -app: {{ template "externalip-webhook.name" . }} -heritage: {{.Release.Service }} -release: {{.Release.Name }} -{{- end }} - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -kubernetes.io/os: linux -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/admissionregistration.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/admissionregistration.yaml deleted file mode 100755 index d8152faa5..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/admissionregistration.yaml +++ /dev/null @@ -1,30 +0,0 @@ -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: -{{- if .Values.certificates.certManager.enabled }} - annotations: - cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ template "externalip-webhook.fullname" . }}-server-cert -{{- end }} - creationTimestamp: null - name: {{ template "externalip-webhook.fullname" . }}-validating-webhook-configuration -webhooks: -- clientConfig: -{{- if not (.Values.certificates.certManager.enabled) }} - caBundle: {{ .Values.certificates.caBundle }} -{{- end }} - service: - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} - path: /validate-service - failurePolicy: Ignore - name: {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - rules: - - apiGroups: - - "" - apiVersions: - - v1 - operations: - - CREATE - - UPDATE - resources: - - services \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrole.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrole.yaml deleted file mode 100755 index 46e18bf00..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) -}} -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -rules: -- apiGroups: - - authentication.k8s.io - resources: - - tokenreviews - verbs: - - create -- apiGroups: - - authorization.k8s.io - resources: - - subjectaccessreviews - verbs: - - create ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRole -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-reader -rules: -- nonResourceURLs: - - /metrics - verbs: - - get -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrolebinding.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrolebinding.yaml deleted file mode 100755 index 2fa40817f..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-cluster-view -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: view -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} ---- -apiVersion: rbac.authorization.k8s.io/{{ .Values.rbac.apiVersion }} -kind: ClusterRoleBinding -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-proxy-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "externalip-webhook.fullname" . }}-proxy-role -subjects: -- kind: ServiceAccount - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/deployment.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/deployment.yaml deleted file mode 100755 index c82754deb..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/deployment.yaml +++ /dev/null @@ -1,107 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} - template: - metadata: - annotations: - seccomp.security.alpha.kubernetes.io/pod: runtime/default - labels: {{ include "externalip-webhook.labels" . | indent 8 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - spec: - containers: - {{- if and (.Values.metrics.enabled) (.Values.metrics.authProxy.enabled) }} - - name: {{ template "externalip-webhook.fullname" . }}-auth-proxy - args: - - --secure-listen-address=0.0.0.0:{{ .Values.metrics.port }} - - --upstream=http://127.0.0.1:{{ .Values.metrics.authProxy.port }}/ - - --logtostderr=true - - --v=10 - image: {{ template "system_default_registry" . }}{{ .Values.metrics.authProxy.image.repository}}:{{ .Values.metrics.authProxy.image.tag }} - imagePullPolicy: "{{ .Values.metrics.authProxy.image.pullPolicy }}" - ports: - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - resources: -{{ toYaml .Values.metrics.authProxy.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - periodSeconds: 10 - livenessProbe: - tcpSocket: - port: webhook-metrics - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - {{- end }} - - name: {{ template "externalip-webhook.fullname" . }} - image: {{ template "system_default_registry" . }}{{ .Values.image.repository}}:{{ default .Chart.AppVersion .Values.image.tag }} - imagePullPolicy: "{{ .Values.image.pullPolicy }}" - command: - - /webhook - args: - - --webhook-port={{ .Values.webhookPort }} - {{- if .Values.allowedExternalIPCidrs }} - - --allowed-external-ip-cidrs={{ .Values.allowedExternalIPCidrs }} - {{- end }} - {{- if .Values.metrics.enabled }} - {{- if .Values.metrics.authProxy.enabled }} - - --metrics-addr=127.0.0.1:{{ .Values.metrics.authProxy.port }} - {{- else }} - - --metrics-addr=0.0.0.0:{{ .Values.metrics.port }} - {{- end }} - {{- end }} - ports: - - containerPort: {{ .Values.webhookPort }} - name: webhook-server - protocol: TCP - {{- if and (.Values.metrics.enabled) (not (.Values.metrics.authProxy.enabled)) }} - - containerPort: {{ .Values.metrics.port }} - name: webhook-metrics - protocol: TCP - {{- end }} - volumeMounts: - - name: server-cert - mountPath: /tmp/k8s-webhook-server/serving-certs - readOnly: true - resources: -{{ toYaml .Values.resources | indent 10 }} - readinessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - livenessProbe: - tcpSocket: - port: webhook-server - initialDelaySeconds: 5 - failureThreshold: 10 - periodSeconds: 30 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 6}} - {{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 6 }} - {{- end }} - serviceAccountName: {{ template "externalip-webhook.fullname" . }} - volumes: - - name: server-cert - secret: - defaultMode: 420 - secretName: {{ .Values.certificates.secretName }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/issuer.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/issuer.yaml deleted file mode 100755 index ff1c2de10..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/issuer.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.certificates.certManager.enabled -}} - {{- $certmanagerVer := split "." .Values.certificates.certManager.version -}} - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Certificate -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-server-cert - namespace: {{ .Release.Namespace }} -spec: - dnsNames: - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc - - {{ template "externalip-webhook.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local - issuerRef: - kind: Issuer - name: {{ template "externalip-webhook.fullname" . }}-issuer - secretName: {{ .Values.certificates.secretName }} ---- - {{- if or (.Capabilities.APIVersions.Has "cert-manager.io/v1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 1) (ge (int $certmanagerVer._1) 0)) }} -apiVersion: cert-manager.io/v1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1beta1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 16)) }} -apiVersion: cert-manager.io/v1beta1 - {{- else if or (.Capabilities.APIVersions.Has "cert-manager.io/v1alpha2") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (ge (int $certmanagerVer._1) 11)) }} -apiVersion: cert-manager.io/v1alpha2 - {{- else if or (.Capabilities.APIVersions.Has "certmanager.k8s.io/v1alpha1") (and (gt (len $certmanagerVer._0) 0) (eq (int $certmanagerVer._0) 0) (lt (int $certmanagerVer._1) 11)) }} -apiVersion: certmanager.k8s.io/v1alpha1 - {{- else }} -# Setting latest version as default -apiVersion: cert-manager.io/v1 - {{- end }} -kind: Issuer -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-issuer - namespace: {{ .Release.Namespace }} -spec: - selfSigned: {} -{{- end -}} - - diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/service.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/service.yaml deleted file mode 100755 index 256add3e4..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/service.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-server - port: {{ .Values.service.webhookPort }} - protocol: TCP - targetPort: {{ .Values.webhookPort }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- if .Values.metrics.enabled }} ---- -apiVersion: v1 -kind: Service -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-metrics-service - namespace: {{ .Release.Namespace }} -spec: - ports: - - name: webhook-metrics - port: {{ .Values.service.metricsPort }} - protocol: TCP - targetPort: {{ .Values.metrics.port }} - selector: - app: {{ template "externalip-webhook.name" . }} - type: "ClusterIP" -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/serviceaccount.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/serviceaccount.yaml deleted file mode 100755 index 895df4f5b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/serviceaccount.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }} - namespace: {{ .Release.Namespace }} diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/servicemonitor.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/servicemonitor.yaml deleted file mode 100755 index c481ea31d..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/templates/servicemonitor.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and (.Values.metrics.enabled) (.Values.metrics.prometheusExport) -}} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "externalip-webhook.labels" . | indent 4 }} - chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} - name: {{ template "externalip-webhook.fullname" . }}-monitor - namespace: {{ .Release.Namespace }} -spec: - endpoints: - - path: /metrics - port: https - selector: - matchLabels: - app: {{ template "externalip-webhook.name" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/admissionregistration_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/admissionregistration_test.yaml deleted file mode 100755 index 0660aa6e8..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/admissionregistration_test.yaml +++ /dev/null @@ -1,32 +0,0 @@ -suite: Test Admission Registration -templates: -- admissionregistration.yaml -tests: -- it: should render Admission Registration - asserts: - - equal: - path: apiVersion - value: admissionregistration.k8s.io/v1beta1 -- it: should render Admission Registration annotation and not caBundle if certificates.certManager.enabled = true - release: - name: rancher-externalip-webhook - namespace: test - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: metadata.annotations - value: - cert-manager.io/inject-ca-from: test/rancher-externalip-webhook-server-cert - - isNull: - path: webhooks[0].clientConfig.caBundle -- it: should render Admission Registration caBundle and not annotation if certificates.certManager.enabled = false - set: - certificates.caBundle: test - certificates.certManager.enabled: false - asserts: - - equal: - path: webhooks[0].clientConfig.caBundle - value: test - - isNull: - path: metadata.annotations diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrole_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrole_test.yaml deleted file mode 100755 index 9e563807b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrole_test.yaml +++ /dev/null @@ -1,37 +0,0 @@ -suite: Test Cluster Roles -templates: -- clusterrole.yaml -tests: -- it: should not render Cluster Roles if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 0 - template: clusterrole.yaml -- it: should render Cluster Roles if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrole.yaml -- it: should render Cluster Roles with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Roles with custom rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrolebinding_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrolebinding_test.yaml deleted file mode 100755 index 2129573a3..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/clusterrolebinding_test.yaml +++ /dev/null @@ -1,42 +0,0 @@ -suite: Test Cluster Role Bindings -templates: -- clusterrolebinding.yaml -tests: -- it: should render Cluster Role Bindings with default rbac api version - set: - rbac.apiVersion: v1 - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 -- it: should render Cluster Role Bindings with custom rbac api version - set: - rbac.apiVersion: v1beta - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1beta -- it: should not render Cluster Role Binding proxy if metrics.enabled = false or metrics.authProxy.enabled = false - set: - metrics.enabled: false - metrics.authProxy.enabled: false - asserts: - - hasDocuments: - count: 1 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings proxy if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - hasDocuments: - count: 2 - template: clusterrolebinding.yaml -- it: should render Cluster Role Bindings with default rbac api version if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: apiVersion - value: rbac.authorization.k8s.io/v1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/deployment_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/deployment_test.yaml deleted file mode 100755 index 50e3f9ec1..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/deployment_test.yaml +++ /dev/null @@ -1,202 +0,0 @@ -suite: Test Deployments -templates: -- deployment.yaml -tests: -- it: should render Deployment with allowed-external-ip-cidrs arg if allowedExternalIPCidrs is set - release: - name: rancher-externalip-webhook - set: - allowedExternalIPCidrs: "1,2" - asserts: - - equal: - path: spec.template.spec.containers[0].args[1] - value: --allowed-external-ip-cidrs=1,2 -- it: should render Deployment with default port, nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux -- it: should render Deployment with default port and custom nodeSelector and tolerations if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - tolerations: - - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - nodeSelector: - kubernetes.io/test: linux - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.tolerations[0] - value: - key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.tolerations[1] - value: - key: "cattle.io/test" - value: "linux" - effect: "NoSchedule" - operator: "Equal" - - equal: - path: spec.template.spec.nodeSelector - value: - kubernetes.io/os: linux - kubernetes.io/test: linux -- it: should render Deployment with custom port and image if metrics.enabled = false and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - webhookPort: 9000 - image.repository: test - image.tag: dev-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with custom metrics port if metrics.enabled = true and metrics.authProxy.enabled = false - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.port: 8000 - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP - - equal: - path: spec.template.spec.containers[0].ports[1] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP -- it: should render Deployment with default metrics port if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8443 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9443 - name: webhook-server - protocol: TCP -- it: should render Deployment with custom metrics port and image if metrics.enabled = true and metrics.authProxy.enabled = true - release: - name: rancher-externalip-webhook - set: - metrics.enabled: true - metrics.authProxy.enabled: true - metrics.port: 8000 - webhookPort: 9000 - image.repository: test - image.tag: dev-test - metrics.authProxy.image.repository: auth - metrics.authProxy.image.tag: auth-test - asserts: - - equal: - path: spec.template.spec.containers[0].name - value: rancher-externalip-webhook-auth-proxy - - equal: - path: spec.template.spec.containers[0].image - value: auth:auth-test - - equal: - path: spec.template.spec.containers[0].ports[0] - value: - containerPort: 8000 - name: webhook-metrics - protocol: TCP - - equal: - path: spec.template.spec.containers[1].name - value: rancher-externalip-webhook - - equal: - path: spec.template.spec.containers[1].image - value: test:dev-test - - equal: - path: spec.template.spec.containers[1].ports[0] - value: - containerPort: 9000 - name: webhook-server - protocol: TCP \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/issuer_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/issuer_test.yaml deleted file mode 100755 index eeeb660b2..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/issuer_test.yaml +++ /dev/null @@ -1,106 +0,0 @@ -suite: Test Issuers -templates: -- issuer.yaml -tests: -- it: should not render issuer if certificates.certManager.enabled = false - set: - certificates.certManager.enabled: false - asserts: - - hasDocuments: - count: 0 - template: issuer.yaml -- it: should render issuer if certificates.certManager.enabled = true - set: - certificates.certManager.enabled: true - asserts: - - hasDocuments: - count: 2 - template: issuer.yaml -- it: should set issuer apiVersion with default cert-manager - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1beta1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using capabilities - capabilities: - apiversions: - - cert-manager.io/v1alpha2 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager < 0.11.0 using capabilities - capabilities: - apiversions: - - certmanager.k8s.io/v1alpha1 - set: - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 1.0.0 using parameter - set: - certificates.certManager.version: 1.0.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.16.0 using parameter - set: - certificates.certManager.version: 0.16.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1beta1 - template: issuer.yaml -- it: should set issuer apiVersion with cert-manager >= 0.11.0 using parameter - set: - certificates.certManager.version: 0.11.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: cert-manager.io/v1alpha2 - template: issuer.yaml -- it: should set letsEncrypt apiVersion with cert-manager < 0.11.0 using parameter - set: - certificates.certManager.version: 0.9.0 - certificates.certManager.enabled: true - asserts: - - equal: - path: apiVersion - value: certmanager.k8s.io/v1alpha1 - template: issuer.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/service_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/service_test.yaml deleted file mode 100755 index a0ba4d352..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/service_test.yaml +++ /dev/null @@ -1,69 +0,0 @@ -suite: Test Services -templates: -- service.yaml -tests: -- it: should render webhook-server service with default webhookPort if metrics.enabled = false - set: - metrics.enabled: false - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 -- it: should render webhook-server service with custom webhookPort if metrics.enabled = false - set: - metrics.enabled: false - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 -- it: should render webhook-server and webhook-metrics services with default webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9443 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8443 - documentIndex: 1 -- it: should render webhook-server and webhook-metrics services with custom webhookPort and metrics.port, if metrics.enabled = true - set: - metrics.enabled: true - metrics.port: 8000 - webhookPort: 9000 - asserts: - - equal: - path: spec.ports[0] - value: - name: webhook-server - port: 443 - protocol: TCP - targetPort: 9000 - documentIndex: 0 - - equal: - path: spec.ports[0] - value: - name: webhook-metrics - port: 8443 - protocol: TCP - targetPort: 8000 - documentIndex: 1 \ No newline at end of file diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/serviceaccount_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/serviceaccount_test.yaml deleted file mode 100755 index 5aebbc74b..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/serviceaccount_test.yaml +++ /dev/null @@ -1,9 +0,0 @@ -suite: Test Service Accounts -templates: -- serviceaccount.yaml -tests: -- it: should render Service Account - asserts: - - hasDocuments: - count: 1 - template: serviceaccount.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/servicemonitor_test.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/servicemonitor_test.yaml deleted file mode 100755 index 21989265e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/tests/servicemonitor_test.yaml +++ /dev/null @@ -1,20 +0,0 @@ -suite: Test Service Monitors -templates: -- servicemonitor.yaml -tests: -- it: should not render Service Monitor if metrics.enabled = false or metrics.prometheusExport = false - set: - metrics.enabled: false - metrics.prometheusExport: false - asserts: - - hasDocuments: - count: 0 - template: servicemonitor.yaml -- it: should render Service Account if metrics.enabled = true and metrics.authProxy.enabled = true - set: - metrics.enabled: true - metrics.prometheusExport: true - asserts: - - hasDocuments: - count: 1 - template: servicemonitor.yaml diff --git a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/values.yaml b/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/values.yaml deleted file mode 100755 index 832d2199e..000000000 --- a/charts/rancher-external-ip-webhook/rancher-external-ip-webhook/0.1.601/values.yaml +++ /dev/null @@ -1,67 +0,0 @@ -## Allowed external IP cidrs -allowedExternalIPCidrs: "" -## Certificates generation for webhook -certificates: - certManager: - # Enable cert manager integration. Cert manager should be already installed at the k8s cluster - enabled: true - version: "" - # If cert-manager integration is disabled, add self signed ca.crt in base64 format - caBundle: "" - # If cert-manager integration is disabled, upload certs data (ca.crt, tls.crt and tls.key) as k8s secretName in the namespace - secretName: webhook-server-cert -## Details about the image to be pulled. -image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/externalip-webhook - tag: v0.1.6 -## Enabling metrics endpoint -# Webhook emits `webhook_failed_request_count` metrics whenever it rejects service creation or update operation -metrics: - enabled: false - port: 8443 - # Enable webhook metrics export to Prometheus - prometheusExport: false - # Webhook metrics auth proxy. This option is just available for amd64 arch - authProxy: - enabled: false - port: 8080 - image: - pullPolicy: IfNotPresent - pullSecrets: [] - repository: rancher/mirrored-kube-rbac-proxy - tag: v0.5.0 - resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -## -nodeSelector: {} -## RBAC -rbac: - apiVersion: v1 -## CPU and Memory limit and request for externalip-webhook -resources: - limits: - memory: 30Mi - cpu: 100m - requests: - memory: 20Mi - cpu: 100m -service: - metricsPort: 8443 - webhookPort: 443 -## Webhook serviceAccountName. Just used if metrics.authProxy.enabled = false -serviceAccountName: default -## List of node taints to tolerate (requires Kubernetes >= 1.6) -tolerations: [] -## Webhook server pod port -webhookPort: 9443 -global: - systemDefaultRegistry: "" diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/Chart.yaml deleted file mode 100755 index 5ed89e38d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/release-name: rancher-gatekeeper-crd -apiVersion: v1 -description: Installs the CRDs for rancher-gatekeeper. -name: rancher-gatekeeper-crd -type: application -version: 3.1.100 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/README.md deleted file mode 100755 index a499b53e7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-gatekeeper-crd -A Rancher chart that installs the CRDs used by [rancher-gatekeeper](https://github.com/rancher/dev-charts/tree/master/packages/rancher-gatekeeper). diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/config-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/config-customresourcedefinition.yaml deleted file mode 100755 index 73ffbdc32..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/config-customresourcedefinition.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh -spec: - group: config.gatekeeper.sh - names: - kind: Config - listKind: ConfigList - plural: configs - shortNames: - - config - singular: config - scope: Namespaced - validation: - openAPIV3Schema: - description: Config is the Schema for the configs 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: ConfigSpec defines the desired state of Config - properties: - match: - description: Configuration for namespace exclusion - items: - properties: - excludedNamespaces: - items: - type: string - type: array - processes: - items: - type: string - type: array - type: object - type: array - readiness: - description: Configuration for readiness tracker - properties: - statsEnabled: - type: boolean - type: object - sync: - description: Configuration for syncing k8s objects - properties: - syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA - items: - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - type: array - type: object - validation: - description: Configuration for validation - properties: - traces: - description: List of requests to trace. Both "user" and "kinds" must be specified - items: - properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string - kind: - description: Only trace requests of the following GroupVersionKind - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - user: - description: Only trace requests from the specified user - type: string - type: object - type: array - type: object - type: object - status: - description: ConfigStatus defines the observed state of Config - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constraintpodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constraintpodstatus-customresourcedefinition.yaml deleted file mode 100755 index f8e552080..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constraintpodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintPodStatus - listKind: ConstraintPodStatusList - plural: constraintpodstatuses - singular: constraintpodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses 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 - status: - description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus - properties: - constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch - type: string - enforced: - type: boolean - errors: - items: - description: Error represents a single error caught while adding a constraint to OPA - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplate-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplate-customresourcedefinition.yaml deleted file mode 100755 index ca171c738..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplate-customresourcedefinition.yaml +++ /dev/null @@ -1,99 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh -spec: - group: templates.gatekeeper.sh - names: - kind: ConstraintTemplate - plural: constrainttemplates - shortNames: - - constraints - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - 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: - properties: - crd: - properties: - spec: - properties: - names: - properties: - kind: - type: string - shortNames: - items: - type: string - type: array - type: object - validation: - type: object - type: object - type: object - targets: - items: - properties: - libs: - items: - type: string - type: array - rego: - type: string - target: - type: string - type: object - type: array - type: object - status: - properties: - byPod: - items: - properties: - errors: - items: - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: a unique identifier for the pod that wrote the status - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: array - created: - type: boolean - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - - name: v1alpha1 - served: true - storage: false diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplatepodstatus-customresourcedefinition.yaml deleted file mode 100755 index 804dca48c..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.100/templates/constrainttemplatepodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintTemplatePodStatus - listKind: ConstraintTemplatePodStatusList - plural: constrainttemplatepodstatuses - singular: constrainttemplatepodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses 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 - status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus - properties: - errors: - items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: 'Important: Run "make" to regenerate code after modifying this file' - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - type: string - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/Chart.yaml deleted file mode 100755 index 8d1a18729..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/release-name: rancher-gatekeeper-crd -apiVersion: v1 -description: Installs the CRDs for rancher-gatekeeper. -name: rancher-gatekeeper-crd -type: application -version: 3.1.101 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/README.md deleted file mode 100755 index 26079c833..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-gatekeeper-crd -A Rancher chart that installs the CRDs used by rancher-gatekeeper. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/config-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/config-customresourcedefinition.yaml deleted file mode 100755 index 73ffbdc32..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/config-customresourcedefinition.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh -spec: - group: config.gatekeeper.sh - names: - kind: Config - listKind: ConfigList - plural: configs - shortNames: - - config - singular: config - scope: Namespaced - validation: - openAPIV3Schema: - description: Config is the Schema for the configs 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: ConfigSpec defines the desired state of Config - properties: - match: - description: Configuration for namespace exclusion - items: - properties: - excludedNamespaces: - items: - type: string - type: array - processes: - items: - type: string - type: array - type: object - type: array - readiness: - description: Configuration for readiness tracker - properties: - statsEnabled: - type: boolean - type: object - sync: - description: Configuration for syncing k8s objects - properties: - syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA - items: - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - type: array - type: object - validation: - description: Configuration for validation - properties: - traces: - description: List of requests to trace. Both "user" and "kinds" must be specified - items: - properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string - kind: - description: Only trace requests of the following GroupVersionKind - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - user: - description: Only trace requests from the specified user - type: string - type: object - type: array - type: object - type: object - status: - description: ConfigStatus defines the observed state of Config - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constraintpodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constraintpodstatus-customresourcedefinition.yaml deleted file mode 100755 index f8e552080..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constraintpodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintPodStatus - listKind: ConstraintPodStatusList - plural: constraintpodstatuses - singular: constraintpodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses 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 - status: - description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus - properties: - constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch - type: string - enforced: - type: boolean - errors: - items: - description: Error represents a single error caught while adding a constraint to OPA - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplate-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplate-customresourcedefinition.yaml deleted file mode 100755 index ca171c738..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplate-customresourcedefinition.yaml +++ /dev/null @@ -1,99 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh -spec: - group: templates.gatekeeper.sh - names: - kind: ConstraintTemplate - plural: constrainttemplates - shortNames: - - constraints - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - 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: - properties: - crd: - properties: - spec: - properties: - names: - properties: - kind: - type: string - shortNames: - items: - type: string - type: array - type: object - validation: - type: object - type: object - type: object - targets: - items: - properties: - libs: - items: - type: string - type: array - rego: - type: string - target: - type: string - type: object - type: array - type: object - status: - properties: - byPod: - items: - properties: - errors: - items: - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: a unique identifier for the pod that wrote the status - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: array - created: - type: boolean - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - - name: v1alpha1 - served: true - storage: false diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplatepodstatus-customresourcedefinition.yaml deleted file mode 100755 index 804dca48c..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.1.101/templates/constrainttemplatepodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintTemplatePodStatus - listKind: ConstraintTemplatePodStatusList - plural: constrainttemplatepodstatuses - singular: constrainttemplatepodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses 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 - status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus - properties: - errors: - items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: 'Important: Run "make" to regenerate code after modifying this file' - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - type: string - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/Chart.yaml deleted file mode 100755 index 0528569c7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/release-name: rancher-gatekeeper-crd -apiVersion: v1 -description: Installs the CRDs for rancher-gatekeeper. -name: rancher-gatekeeper-crd -type: application -version: 3.2.101 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/README.md deleted file mode 100755 index 26079c833..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-gatekeeper-crd -A Rancher chart that installs the CRDs used by rancher-gatekeeper. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/config-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/config-customresourcedefinition.yaml deleted file mode 100755 index 73ffbdc32..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/config-customresourcedefinition.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh -spec: - group: config.gatekeeper.sh - names: - kind: Config - listKind: ConfigList - plural: configs - shortNames: - - config - singular: config - scope: Namespaced - validation: - openAPIV3Schema: - description: Config is the Schema for the configs 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: ConfigSpec defines the desired state of Config - properties: - match: - description: Configuration for namespace exclusion - items: - properties: - excludedNamespaces: - items: - type: string - type: array - processes: - items: - type: string - type: array - type: object - type: array - readiness: - description: Configuration for readiness tracker - properties: - statsEnabled: - type: boolean - type: object - sync: - description: Configuration for syncing k8s objects - properties: - syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA - items: - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - type: array - type: object - validation: - description: Configuration for validation - properties: - traces: - description: List of requests to trace. Both "user" and "kinds" must be specified - items: - properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string - kind: - description: Only trace requests of the following GroupVersionKind - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - user: - description: Only trace requests from the specified user - type: string - type: object - type: array - type: object - type: object - status: - description: ConfigStatus defines the observed state of Config - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constraintpodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constraintpodstatus-customresourcedefinition.yaml deleted file mode 100755 index f8e552080..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constraintpodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintPodStatus - listKind: ConstraintPodStatusList - plural: constraintpodstatuses - singular: constraintpodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses 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 - status: - description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus - properties: - constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch - type: string - enforced: - type: boolean - errors: - items: - description: Error represents a single error caught while adding a constraint to OPA - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplate-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplate-customresourcedefinition.yaml deleted file mode 100755 index 41daf22de..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplate-customresourcedefinition.yaml +++ /dev/null @@ -1,97 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh -spec: - group: templates.gatekeeper.sh - names: - kind: ConstraintTemplate - plural: constrainttemplates - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - 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: - properties: - crd: - properties: - spec: - properties: - names: - properties: - kind: - type: string - shortNames: - items: - type: string - type: array - type: object - validation: - type: object - type: object - type: object - targets: - items: - properties: - libs: - items: - type: string - type: array - rego: - type: string - target: - type: string - type: object - type: array - type: object - status: - properties: - byPod: - items: - properties: - errors: - items: - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: a unique identifier for the pod that wrote the status - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: array - created: - type: boolean - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - - name: v1alpha1 - served: true - storage: false diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml deleted file mode 100755 index 804dca48c..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintTemplatePodStatus - listKind: ConstraintTemplatePodStatusList - plural: constrainttemplatepodstatuses - singular: constrainttemplatepodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses 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 - status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus - properties: - errors: - items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: 'Important: Run "make" to regenerate code after modifying this file' - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - type: string - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/jobs.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/manifest.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/rbac.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/rbac.yaml deleted file mode 100755 index bdda1ddad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/values.yaml deleted file mode 100755 index f65bba463..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.2.101/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-gatekeeper-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/Chart.yaml deleted file mode 100755 index f8022e80b..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/release-name: rancher-gatekeeper-crd -apiVersion: v1 -description: Installs the CRDs for rancher-gatekeeper. -name: rancher-gatekeeper-crd -type: application -version: 3.3.000 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/README.md deleted file mode 100755 index 26079c833..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-gatekeeper-crd -A Rancher chart that installs the CRDs used by rancher-gatekeeper. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/config-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/config-customresourcedefinition.yaml deleted file mode 100755 index 73ffbdc32..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/config-customresourcedefinition.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh -spec: - group: config.gatekeeper.sh - names: - kind: Config - listKind: ConfigList - plural: configs - shortNames: - - config - singular: config - scope: Namespaced - validation: - openAPIV3Schema: - description: Config is the Schema for the configs 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: ConfigSpec defines the desired state of Config - properties: - match: - description: Configuration for namespace exclusion - items: - properties: - excludedNamespaces: - items: - type: string - type: array - processes: - items: - type: string - type: array - type: object - type: array - readiness: - description: Configuration for readiness tracker - properties: - statsEnabled: - type: boolean - type: object - sync: - description: Configuration for syncing k8s objects - properties: - syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA - items: - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - type: array - type: object - validation: - description: Configuration for validation - properties: - traces: - description: List of requests to trace. Both "user" and "kinds" must be specified - items: - properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string - kind: - description: Only trace requests of the following GroupVersionKind - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - user: - description: Only trace requests from the specified user - type: string - type: object - type: array - type: object - type: object - status: - description: ConfigStatus defines the observed state of Config - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constraintpodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constraintpodstatus-customresourcedefinition.yaml deleted file mode 100755 index f8e552080..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constraintpodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintPodStatus - listKind: ConstraintPodStatusList - plural: constraintpodstatuses - singular: constraintpodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses 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 - status: - description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus - properties: - constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch - type: string - enforced: - type: boolean - errors: - items: - description: Error represents a single error caught while adding a constraint to OPA - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplate-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplate-customresourcedefinition.yaml deleted file mode 100755 index 41daf22de..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplate-customresourcedefinition.yaml +++ /dev/null @@ -1,97 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh -spec: - group: templates.gatekeeper.sh - names: - kind: ConstraintTemplate - plural: constrainttemplates - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - 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: - properties: - crd: - properties: - spec: - properties: - names: - properties: - kind: - type: string - shortNames: - items: - type: string - type: array - type: object - validation: - type: object - type: object - type: object - targets: - items: - properties: - libs: - items: - type: string - type: array - rego: - type: string - target: - type: string - type: object - type: array - type: object - status: - properties: - byPod: - items: - properties: - errors: - items: - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: a unique identifier for the pod that wrote the status - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: array - created: - type: boolean - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - - name: v1alpha1 - served: true - storage: false diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml deleted file mode 100755 index 804dca48c..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintTemplatePodStatus - listKind: ConstraintTemplatePodStatusList - plural: constrainttemplatepodstatuses - singular: constrainttemplatepodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses 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 - status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus - properties: - errors: - items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: 'Important: Run "make" to regenerate code after modifying this file' - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - type: string - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/jobs.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/manifest.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/rbac.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/rbac.yaml deleted file mode 100755 index bdda1ddad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/values.yaml deleted file mode 100755 index f65bba463..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.000/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-gatekeeper-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/Chart.yaml deleted file mode 100644 index f22e8520a..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/release-name: rancher-gatekeeper-crd -apiVersion: v1 -description: Installs the CRDs for rancher-gatekeeper. -name: rancher-gatekeeper-crd -type: application -version: 3.3.1+up3.3.0 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/README.md deleted file mode 100644 index 26079c833..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-gatekeeper-crd -A Rancher chart that installs the CRDs used by rancher-gatekeeper. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/config-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/config-customresourcedefinition.yaml deleted file mode 100644 index 73ffbdc32..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/config-customresourcedefinition.yaml +++ /dev/null @@ -1,106 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: configs.config.gatekeeper.sh -spec: - group: config.gatekeeper.sh - names: - kind: Config - listKind: ConfigList - plural: configs - shortNames: - - config - singular: config - scope: Namespaced - validation: - openAPIV3Schema: - description: Config is the Schema for the configs 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: ConfigSpec defines the desired state of Config - properties: - match: - description: Configuration for namespace exclusion - items: - properties: - excludedNamespaces: - items: - type: string - type: array - processes: - items: - type: string - type: array - type: object - type: array - readiness: - description: Configuration for readiness tracker - properties: - statsEnabled: - type: boolean - type: object - sync: - description: Configuration for syncing k8s objects - properties: - syncOnly: - description: If non-empty, only entries on this list will be replicated into OPA - items: - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - type: array - type: object - validation: - description: Configuration for validation - properties: - traces: - description: List of requests to trace. Both "user" and "kinds" must be specified - items: - properties: - dump: - description: Also dump the state of OPA with the trace. Set to `All` to dump everything. - type: string - kind: - description: Only trace requests of the following GroupVersionKind - properties: - group: - type: string - kind: - type: string - version: - type: string - type: object - user: - description: Only trace requests from the specified user - type: string - type: object - type: array - type: object - type: object - status: - description: ConfigStatus defines the observed state of Config - type: object - type: object - version: v1alpha1 - versions: - - name: v1alpha1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constraintpodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constraintpodstatus-customresourcedefinition.yaml deleted file mode 100644 index f8e552080..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constraintpodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constraintpodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintPodStatus - listKind: ConstraintPodStatusList - plural: constraintpodstatuses - singular: constraintpodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintPodStatus is the Schema for the constraintpodstatuses 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 - status: - description: ConstraintPodStatusStatus defines the observed state of ConstraintPodStatus - properties: - constraintUID: - description: Storing the constraint UID allows us to detect drift, such as when a constraint has been recreated after its CRD was deleted out from under it, interrupting the watch - type: string - enforced: - type: boolean - errors: - items: - description: Error represents a single error caught while adding a constraint to OPA - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplate-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplate-customresourcedefinition.yaml deleted file mode 100644 index 41daf22de..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplate-customresourcedefinition.yaml +++ /dev/null @@ -1,97 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplates.templates.gatekeeper.sh -spec: - group: templates.gatekeeper.sh - names: - kind: ConstraintTemplate - plural: constrainttemplates - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - 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: - properties: - crd: - properties: - spec: - properties: - names: - properties: - kind: - type: string - shortNames: - items: - type: string - type: array - type: object - validation: - type: object - type: object - type: object - targets: - items: - properties: - libs: - items: - type: string - type: array - rego: - type: string - target: - type: string - type: object - type: array - type: object - status: - properties: - byPod: - items: - properties: - errors: - items: - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: a unique identifier for the pod that wrote the status - type: string - observedGeneration: - format: int64 - type: integer - type: object - type: array - created: - type: boolean - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true - - name: v1alpha1 - served: true - storage: false diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml deleted file mode 100644 index 804dca48c..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/crd-manifest/constrainttemplatepodstatus-customresourcedefinition.yaml +++ /dev/null @@ -1,67 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.3.0 - creationTimestamp: null - labels: - gatekeeper.sh/system: "yes" - name: constrainttemplatepodstatuses.status.gatekeeper.sh -spec: - group: status.gatekeeper.sh - names: - kind: ConstraintTemplatePodStatus - listKind: ConstraintTemplatePodStatusList - plural: constrainttemplatepodstatuses - singular: constrainttemplatepodstatus - scope: Namespaced - validation: - openAPIV3Schema: - description: ConstraintTemplatePodStatus is the Schema for the constrainttemplatepodstatuses 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 - status: - description: ConstraintTemplatePodStatusStatus defines the observed state of ConstraintTemplatePodStatus - properties: - errors: - items: - description: CreateCRDError represents a single error caught during parsing, compiling, etc. - properties: - code: - type: string - location: - type: string - message: - type: string - required: - - code - - message - type: object - type: array - id: - description: 'Important: Run "make" to regenerate code after modifying this file' - type: string - observedGeneration: - format: int64 - type: integer - operations: - items: - type: string - type: array - templateUID: - description: UID is a type that holds unique ID values, including UUIDs. Because we don't ONLY use UUIDs, this is an alias to string. Being a type captures intent and helps make sure that UIDs and names do not get conflated. - type: string - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/_helpers.tpl deleted file mode 100644 index 39b26c195..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/jobs.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/jobs.yaml deleted file mode 100644 index 709005fd9..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/manifest.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/manifest.yaml deleted file mode 100644 index 31016b6ef..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/rbac.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/rbac.yaml deleted file mode 100644 index bdda1ddad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/values.yaml deleted file mode 100644 index 657ccacf8..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper-crd/3.3.1+up3.3.0/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-gatekeeper-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.20.2 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/.helmignore b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/CHANGELOG.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/CHANGELOG.md deleted file mode 100755 index c68d23c24..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog -All notable changes from the upstream OPA Gatekeeper chart will be added to this file - -## [Package Version 00] - 2020-09-10 -### Added -- Enabled the CRD chart generator in `package.yaml` - -### Modified -- Updated namespace to `cattle-gatekeeper-system` -- Updated for Helm 3 compatibility - - Moved crds to `crds` directory - - Removed `crd-install` hooks and templates from crds - -### Removed -- Removed `gatekeeper-system-namespace.yaml` as Rancher handles namespaces for chart installation diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/Chart.yaml deleted file mode 100755 index 0d94d3278..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/Chart.yaml +++ /dev/null @@ -1,21 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gatekeeper-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/experimental: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/provides-gvr: config.gatekeeper.sh.config/v1alpha1 - catalog.cattle.io/release-name: rancher-gatekeeper - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v3.1.1 -description: Modifies Open Policy Agent's upstream gatekeeper chart that provides - policy-based control for cloud native environments -home: https://github.com/open-policy-agent/gatekeeper -icon: https://charts.rancher.io/assets/logos/gatekeeper.svg -keywords: -- open policy agent -- security -name: rancher-gatekeeper -sources: -- https://github.com/open-policy-agent/gatekeeper.git -version: 3.1.100 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/README.md deleted file mode 100755 index 280a64565..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Gatekeeper Helm Chart - -## Parameters - -| Parameter | Description | Default | -| :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | -| auditInterval | The frequency with which audit is run | `300` | -| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | -| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | -| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `0` | -| disableValidatingWebhook | Disable ValidatingWebhook | `false` | -| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | -| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | -| logLevel | Minimum log level | `INFO` | -| image.pullPolicy | The image pull policy | `IfNotPresent` | -| image.repository | Image repository | `openpolicyagent/gatekeeper` | -| image.release | The image release tag to use | Current release version: `v3.1.1` | -| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | -| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | -| affinity | The node affinity to use for pod scheduling | `{}` | -| tolerations | The tolerations to use for pod scheduling | `[]` | -| replicas | The number of Gatekeeper replicas to deploy for the webhook | `1` | -| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | -| customResourceDefinitions.create | Whether the release should install CRDs. Regardless of this value, Helm v3+ will install the CRDs if those are not present already. Use --skip-crds with helm install if you want to skip CRD creation | `true` | - -## Contributing Changes - -This Helm chart is autogenerated from the Gatekeeper static manifest. The -generator code lives under `cmd/build/helmify`. To make modifications to this -template, please edit `kustomization.yaml` and `replacements.go` under that -directory and then run `make manifests`. Your changes will show up in the -`manifest_staging` directory and will be promoted to the root `charts` directory -the next time a Gatekeeper release is cut. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/_helpers.tpl deleted file mode 100755 index f5d0ab307..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/_helpers.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "gatekeeper.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "gatekeeper.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "gatekeeper.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "gatekeeper.labels" -}} -app.kubernetes.io/name: {{ include "gatekeeper.name" . }} -helm.sh/chart: {{ include "gatekeeper.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/allowedrepos.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/allowedrepos.yaml deleted file mode 100755 index 9abb84ecb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/allowedrepos.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8sallowedrepos -spec: - crd: - spec: - names: - kind: K8sAllowedRepos - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - repos: - type: array - items: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8sallowedrepos - - violation[{"msg": msg}] { - container := input.review.object.spec.containers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } - - violation[{"msg": msg}] { - container := input.review.object.spec.initContainers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-admin-serviceaccount.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-admin-serviceaccount.yaml deleted file mode 100755 index 4b68998cb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-admin-serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-audit-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-audit-deployment.yaml deleted file mode 100755 index 561ac5c6e..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-audit-deployment.yaml +++ /dev/null @@ -1,96 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-audit - namespace: '{{ .Release.Namespace }}' -spec: - replicas: 1 - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - containers: - - args: - - --audit-interval={{ .Values.auditInterval }} - - --log-level={{ .Values.logLevel }} - - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} - - --audit-from-cache={{ .Values.auditFromCache }} - - --audit-chunk-size={{ .Values.auditChunkSize }} - - --emit-audit-events={{ .Values.emitAuditEvents }} - - --operation=audit - - --operation=status - - --logtostderr - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-controller-manager-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-controller-manager-deployment.yaml deleted file mode 100755 index 06a54b686..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-controller-manager-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-controller-manager - namespace: '{{ .Release.Namespace }}' -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - containers: - - args: - - --port=8443 - - --logtostderr - - --emit-admission-events={{ .Values.emitAdmissionEvents }} - - --log-level={{ .Values.logLevel }} - - --exempt-namespace=gatekeeper-system - - --operation=webhook - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 - volumes: - - name: cert - secret: - defaultMode: 420 - secretName: gatekeeper-webhook-server-cert diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-clusterrole.yaml deleted file mode 100755 index b03f23f63..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-clusterrole.yaml +++ /dev/null @@ -1,125 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs/status - verbs: - - get - - patch - - update -- apiGroups: - - constraints.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - status.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/finalizers - verbs: - - delete - - get - - patch - - update -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - admissionregistration.k8s.io - resourceNames: - - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-role.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-role.yaml deleted file mode 100755 index 73e2c5cf7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-role-role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role - namespace: '{{ .Release.Namespace }}' -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml deleted file mode 100755 index 22194d2ad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-rolebinding.yaml deleted file mode 100755 index 4bf6087dc..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-manager-rolebinding-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding - namespace: '{{ .Release.Namespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml deleted file mode 100755 index f19216687..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if not .Values.disableValidatingWebhook }} -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-validating-webhook-configuration -webhooks: -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admit - failurePolicy: Ignore - name: validation.gatekeeper.sh - namespaceSelector: - matchExpressions: - - key: admission.gatekeeper.sh/ignore - operator: DoesNotExist - rules: - - apiGroups: - - '*' - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - '*' - sideEffects: None - timeoutSeconds: 5 -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admitlabel - failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh - rules: - - apiGroups: - - "" - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - namespaces - sideEffects: None - timeoutSeconds: 5 -{{- end }} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-server-cert-secret.yaml deleted file mode 100755 index bf89ae8b4..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-server-cert-secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-server-cert - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-service-service.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-service-service.yaml deleted file mode 100755 index 473bc4b25..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/gatekeeper-webhook-service-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' -spec: - ports: - - port: 443 - targetPort: 8443 - selector: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/requiredlabels.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/requiredlabels.yaml deleted file mode 100755 index e93e6a0a7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/requiredlabels.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8srequiredlabels -spec: - crd: - spec: - names: - kind: K8sRequiredLabels - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - message: - type: string - labels: - type: array - items: - type: object - properties: - key: - type: string - allowedRegex: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8srequiredlabels - - get_message(parameters, _default) = msg { - not parameters.message - msg := _default - } - - get_message(parameters, _default) = msg { - msg := parameters.message - } - - violation[{"msg": msg, "details": {"missing_labels": missing}}] { - provided := {label | input.review.object.metadata.labels[label]} - required := {label | label := input.parameters.labels[_].key} - missing := required - provided - count(missing) > 0 - def_msg := sprintf("you must provide labels: %v", [missing]) - msg := get_message(input.parameters, def_msg) - } - - violation[{"msg": msg}] { - value := input.review.object.metadata.labels[key] - expected := input.parameters.labels[_] - expected.key == key - # do not match if allowedRegex is not defined, or is an empty string - expected.allowedRegex != "" - not re_match(expected.allowedRegex, value) - def_msg := sprintf("Label <%v: %v> does not satisfy allowed regex: %v", [key, value, expected.allowedRegex]) - msg := get_message(input.parameters, def_msg) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/validate-install-crd.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/validate-install-crd.yaml deleted file mode 100755 index 10977fd7d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "config.gatekeeper.sh/v1alpha1/Config" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintPodStatus" false -}} -# {{- set $found "templates.gatekeeper.sh/v1beta1/ConstraintTemplate" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintTemplatePodStatus" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-gatekeeper-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/values.yaml deleted file mode 100755 index 2afac2bfe..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.100/values.yaml +++ /dev/null @@ -1,31 +0,0 @@ -replicas: 3 -auditInterval: 300 -constraintViolationsLimit: 20 -auditFromCache: false -disableValidatingWebhook: false -auditChunkSize: 0 -logLevel: INFO -emitAdmissionEvents: false -emitAuditEvents: false -image: - repository: rancher/openpolicyagent-gatekeeper - tag: v3.1.1 - pullPolicy: IfNotPresent -nodeSelector: { kubernetes.io/os: linux } -affinity: {} -tolerations: [] -podAnnotations: - { container.seccomp.security.alpha.kubernetes.io/manager: runtime/default } -resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/.helmignore b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/CHANGELOG.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/CHANGELOG.md deleted file mode 100755 index c68d23c24..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog -All notable changes from the upstream OPA Gatekeeper chart will be added to this file - -## [Package Version 00] - 2020-09-10 -### Added -- Enabled the CRD chart generator in `package.yaml` - -### Modified -- Updated namespace to `cattle-gatekeeper-system` -- Updated for Helm 3 compatibility - - Moved crds to `crds` directory - - Removed `crd-install` hooks and templates from crds - -### Removed -- Removed `gatekeeper-system-namespace.yaml` as Rancher handles namespaces for chart installation diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/Chart.yaml deleted file mode 100755 index a77621b17..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gatekeeper-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: OPA Gatekeeper - catalog.cattle.io/experimental: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/provides-gvr: config.gatekeeper.sh.config/v1alpha1 - catalog.cattle.io/release-name: rancher-gatekeeper - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: v3.1.1 -description: Modifies Open Policy Agent's upstream gatekeeper chart that provides - policy-based control for cloud native environments -home: https://github.com/open-policy-agent/gatekeeper -icon: https://charts.rancher.io/assets/logos/gatekeeper.svg -keywords: -- open policy agent -- security -name: rancher-gatekeeper -sources: -- https://github.com/open-policy-agent/gatekeeper.git -version: 3.1.101 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/README.md deleted file mode 100755 index 280a64565..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Gatekeeper Helm Chart - -## Parameters - -| Parameter | Description | Default | -| :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | -| auditInterval | The frequency with which audit is run | `300` | -| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | -| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | -| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `0` | -| disableValidatingWebhook | Disable ValidatingWebhook | `false` | -| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | -| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | -| logLevel | Minimum log level | `INFO` | -| image.pullPolicy | The image pull policy | `IfNotPresent` | -| image.repository | Image repository | `openpolicyagent/gatekeeper` | -| image.release | The image release tag to use | Current release version: `v3.1.1` | -| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | -| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | -| affinity | The node affinity to use for pod scheduling | `{}` | -| tolerations | The tolerations to use for pod scheduling | `[]` | -| replicas | The number of Gatekeeper replicas to deploy for the webhook | `1` | -| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | -| customResourceDefinitions.create | Whether the release should install CRDs. Regardless of this value, Helm v3+ will install the CRDs if those are not present already. Use --skip-crds with helm install if you want to skip CRD creation | `true` | - -## Contributing Changes - -This Helm chart is autogenerated from the Gatekeeper static manifest. The -generator code lives under `cmd/build/helmify`. To make modifications to this -template, please edit `kustomization.yaml` and `replacements.go` under that -directory and then run `make manifests`. Your changes will show up in the -`manifest_staging` directory and will be promoted to the root `charts` directory -the next time a Gatekeeper release is cut. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/app-readme.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/app-readme.md deleted file mode 100755 index d44cf7b2b..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/app-readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Rancher OPA Gatekeeper - -This chart is based off of the upstream [OPA Gatekeeper](https://github.com/open-policy-agent/gatekeeper/tree/master/charts/gatekeeper) chart. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/opa-gatekeper/). - -The chart installs the following components: - -- OPA Gatekeeper Controller-Manager - OPA Gatekeeper is a policy engine for providing policy based governance for Kubernetes clusters. The controller installs as a [validating admission controller webhook](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) on the cluster and intercepts all admission requests that create, update or delete a resource in the cluster. -- [Audit](https://github.com/open-policy-agent/gatekeeper#audit) - A periodic audit of the cluster resources against the enforced policies. Any existing resource that violates a policy will be recorded as violations. -- [Constraint Template](https://github.com/open-policy-agent/gatekeeper#constraint-templates) - A template is a CRD (`ConstraintTemplate`) that defines the schema and Rego logic of a policy to be applied to the cluster by Gatekeeper's admission controller webhook. This chart installs a few default `ConstraintTemplate` custom resources. -- [Constraint](https://github.com/open-policy-agent/gatekeeper#constraints) - A constraint is a custom resource that defines the scope of resources which a specific constraint template should apply to. The complete policy is defined by a combination of `ConstraintTemplates` (i.e. what the policy is) and `Constraints` (i.e. what resource to apply the policy to). - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/_helpers.tpl deleted file mode 100755 index f5d0ab307..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/_helpers.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "gatekeeper.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "gatekeeper.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "gatekeeper.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "gatekeeper.labels" -}} -app.kubernetes.io/name: {{ include "gatekeeper.name" . }} -helm.sh/chart: {{ include "gatekeeper.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/allowedrepos.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/allowedrepos.yaml deleted file mode 100755 index 9abb84ecb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/allowedrepos.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8sallowedrepos -spec: - crd: - spec: - names: - kind: K8sAllowedRepos - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - repos: - type: array - items: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8sallowedrepos - - violation[{"msg": msg}] { - container := input.review.object.spec.containers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } - - violation[{"msg": msg}] { - container := input.review.object.spec.initContainers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-admin-serviceaccount.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-admin-serviceaccount.yaml deleted file mode 100755 index 4b68998cb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-admin-serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-audit-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-audit-deployment.yaml deleted file mode 100755 index 561ac5c6e..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-audit-deployment.yaml +++ /dev/null @@ -1,96 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-audit - namespace: '{{ .Release.Namespace }}' -spec: - replicas: 1 - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - containers: - - args: - - --audit-interval={{ .Values.auditInterval }} - - --log-level={{ .Values.logLevel }} - - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} - - --audit-from-cache={{ .Values.auditFromCache }} - - --audit-chunk-size={{ .Values.auditChunkSize }} - - --emit-audit-events={{ .Values.emitAuditEvents }} - - --operation=audit - - --operation=status - - --logtostderr - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-controller-manager-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-controller-manager-deployment.yaml deleted file mode 100755 index 06a54b686..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-controller-manager-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-controller-manager - namespace: '{{ .Release.Namespace }}' -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - containers: - - args: - - --port=8443 - - --logtostderr - - --emit-admission-events={{ .Values.emitAdmissionEvents }} - - --log-level={{ .Values.logLevel }} - - --exempt-namespace=gatekeeper-system - - --operation=webhook - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 - volumes: - - name: cert - secret: - defaultMode: 420 - secretName: gatekeeper-webhook-server-cert diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-clusterrole.yaml deleted file mode 100755 index b03f23f63..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-clusterrole.yaml +++ /dev/null @@ -1,125 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs/status - verbs: - - get - - patch - - update -- apiGroups: - - constraints.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - status.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/finalizers - verbs: - - delete - - get - - patch - - update -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - admissionregistration.k8s.io - resourceNames: - - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-role.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-role.yaml deleted file mode 100755 index 73e2c5cf7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-role-role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role - namespace: '{{ .Release.Namespace }}' -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml deleted file mode 100755 index 22194d2ad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml deleted file mode 100755 index 4bf6087dc..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding - namespace: '{{ .Release.Namespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml deleted file mode 100755 index f19216687..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if not .Values.disableValidatingWebhook }} -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-validating-webhook-configuration -webhooks: -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admit - failurePolicy: Ignore - name: validation.gatekeeper.sh - namespaceSelector: - matchExpressions: - - key: admission.gatekeeper.sh/ignore - operator: DoesNotExist - rules: - - apiGroups: - - '*' - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - '*' - sideEffects: None - timeoutSeconds: 5 -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admitlabel - failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh - rules: - - apiGroups: - - "" - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - namespaces - sideEffects: None - timeoutSeconds: 5 -{{- end }} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-server-cert-secret.yaml deleted file mode 100755 index bf89ae8b4..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-server-cert-secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-server-cert - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-service-service.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-service-service.yaml deleted file mode 100755 index 473bc4b25..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/gatekeeper-webhook-service-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' -spec: - ports: - - port: 443 - targetPort: 8443 - selector: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/requiredlabels.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/requiredlabels.yaml deleted file mode 100755 index e93e6a0a7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/requiredlabels.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8srequiredlabels -spec: - crd: - spec: - names: - kind: K8sRequiredLabels - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - message: - type: string - labels: - type: array - items: - type: object - properties: - key: - type: string - allowedRegex: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8srequiredlabels - - get_message(parameters, _default) = msg { - not parameters.message - msg := _default - } - - get_message(parameters, _default) = msg { - msg := parameters.message - } - - violation[{"msg": msg, "details": {"missing_labels": missing}}] { - provided := {label | input.review.object.metadata.labels[label]} - required := {label | label := input.parameters.labels[_].key} - missing := required - provided - count(missing) > 0 - def_msg := sprintf("you must provide labels: %v", [missing]) - msg := get_message(input.parameters, def_msg) - } - - violation[{"msg": msg}] { - value := input.review.object.metadata.labels[key] - expected := input.parameters.labels[_] - expected.key == key - # do not match if allowedRegex is not defined, or is an empty string - expected.allowedRegex != "" - not re_match(expected.allowedRegex, value) - def_msg := sprintf("Label <%v: %v> does not satisfy allowed regex: %v", [key, value, expected.allowedRegex]) - msg := get_message(input.parameters, def_msg) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/validate-install-crd.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/validate-install-crd.yaml deleted file mode 100755 index 10977fd7d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "config.gatekeeper.sh/v1alpha1/Config" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintPodStatus" false -}} -# {{- set $found "templates.gatekeeper.sh/v1beta1/ConstraintTemplate" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintTemplatePodStatus" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-gatekeeper-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/values.yaml deleted file mode 100755 index 2afac2bfe..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.1.101/values.yaml +++ /dev/null @@ -1,31 +0,0 @@ -replicas: 3 -auditInterval: 300 -constraintViolationsLimit: 20 -auditFromCache: false -disableValidatingWebhook: false -auditChunkSize: 0 -logLevel: INFO -emitAdmissionEvents: false -emitAuditEvents: false -image: - repository: rancher/openpolicyagent-gatekeeper - tag: v3.1.1 - pullPolicy: IfNotPresent -nodeSelector: { kubernetes.io/os: linux } -affinity: {} -tolerations: [] -podAnnotations: - { container.seccomp.security.alpha.kubernetes.io/manager: runtime/default } -resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/.helmignore b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/CHANGELOG.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/CHANGELOG.md deleted file mode 100755 index c68d23c24..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog -All notable changes from the upstream OPA Gatekeeper chart will be added to this file - -## [Package Version 00] - 2020-09-10 -### Added -- Enabled the CRD chart generator in `package.yaml` - -### Modified -- Updated namespace to `cattle-gatekeeper-system` -- Updated for Helm 3 compatibility - - Moved crds to `crds` directory - - Removed `crd-install` hooks and templates from crds - -### Removed -- Removed `gatekeeper-system-namespace.yaml` as Rancher handles namespaces for chart installation diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/Chart.yaml deleted file mode 100755 index b2d23d5b0..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gatekeeper-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: OPA Gatekeeper - catalog.cattle.io/experimental: "true" - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: config.gatekeeper.sh.config/v1alpha1 - catalog.cattle.io/release-name: rancher-gatekeeper - catalog.cattle.io/ui-component: gatekeeper -apiVersion: v1 -appVersion: v3.2.1 -description: Modifies Open Policy Agent's upstream gatekeeper chart that provides - policy-based control for cloud native environments -home: https://github.com/open-policy-agent/gatekeeper -icon: https://charts.rancher.io/assets/logos/gatekeeper.svg -keywords: -- open policy agent -- security -name: rancher-gatekeeper -sources: -- https://github.com/open-policy-agent/gatekeeper.git -version: 3.2.101 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/README.md deleted file mode 100755 index 8a5157bf3..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/README.md +++ /dev/null @@ -1,33 +0,0 @@ -# Gatekeeper Helm Chart - -## Parameters - -| Parameter | Description | Default | -| :------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | -| auditInterval | The frequency with which audit is run | `300` | -| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | -| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | -| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `0` | -| disableValidatingWebhook | Disable ValidatingWebhook | `false` | -| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | -| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | -| logLevel | Minimum log level | `INFO` | -| image.pullPolicy | The image pull policy | `IfNotPresent` | -| image.repository | Image repository | `openpolicyagent/gatekeeper` | -| image.release | The image release tag to use | Current release version: `v3.2.1` | -| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | -| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | -| affinity | The node affinity to use for pod scheduling | `{}` | -| tolerations | The tolerations to use for pod scheduling | `[]` | -| replicas | The number of Gatekeeper replicas to deploy for the webhook | `1` | -| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | -| customResourceDefinitions.create | Whether the release should install CRDs. Regardless of this value, Helm v3+ will install the CRDs if those are not present already. Use --skip-crds with helm install if you want to skip CRD creation | `true` | - -## Contributing Changes - -This Helm chart is autogenerated from the Gatekeeper static manifest. The -generator code lives under `cmd/build/helmify`. To make modifications to this -template, please edit `kustomization.yaml` and `replacements.go` under that -directory and then run `make manifests`. Your changes will show up in the -`manifest_staging` directory and will be promoted to the root `charts` directory -the next time a Gatekeeper release is cut. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/app-readme.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/app-readme.md deleted file mode 100755 index d44cf7b2b..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/app-readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Rancher OPA Gatekeeper - -This chart is based off of the upstream [OPA Gatekeeper](https://github.com/open-policy-agent/gatekeeper/tree/master/charts/gatekeeper) chart. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/opa-gatekeper/). - -The chart installs the following components: - -- OPA Gatekeeper Controller-Manager - OPA Gatekeeper is a policy engine for providing policy based governance for Kubernetes clusters. The controller installs as a [validating admission controller webhook](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) on the cluster and intercepts all admission requests that create, update or delete a resource in the cluster. -- [Audit](https://github.com/open-policy-agent/gatekeeper#audit) - A periodic audit of the cluster resources against the enforced policies. Any existing resource that violates a policy will be recorded as violations. -- [Constraint Template](https://github.com/open-policy-agent/gatekeeper#constraint-templates) - A template is a CRD (`ConstraintTemplate`) that defines the schema and Rego logic of a policy to be applied to the cluster by Gatekeeper's admission controller webhook. This chart installs a few default `ConstraintTemplate` custom resources. -- [Constraint](https://github.com/open-policy-agent/gatekeeper#constraints) - A constraint is a custom resource that defines the scope of resources which a specific constraint template should apply to. The complete policy is defined by a combination of `ConstraintTemplates` (i.e. what the policy is) and `Constraints` (i.e. what resource to apply the policy to). - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/_helpers.tpl deleted file mode 100755 index f5d0ab307..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/_helpers.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "gatekeeper.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "gatekeeper.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "gatekeeper.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "gatekeeper.labels" -}} -app.kubernetes.io/name: {{ include "gatekeeper.name" . }} -helm.sh/chart: {{ include "gatekeeper.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/allowedrepos.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/allowedrepos.yaml deleted file mode 100755 index 9abb84ecb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/allowedrepos.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8sallowedrepos -spec: - crd: - spec: - names: - kind: K8sAllowedRepos - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - repos: - type: array - items: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8sallowedrepos - - violation[{"msg": msg}] { - container := input.review.object.spec.containers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } - - violation[{"msg": msg}] { - container := input.review.object.spec.initContainers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-podsecuritypolicy.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-podsecuritypolicy.yaml deleted file mode 100755 index 78f36ecfb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-podsecuritypolicy.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin -spec: - allowPrivilegeEscalation: false - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - projected - - secret - - downwardAPI diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-serviceaccount.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-serviceaccount.yaml deleted file mode 100755 index 4b68998cb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-admin-serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-audit-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-audit-deployment.yaml deleted file mode 100755 index d9ee16076..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-audit-deployment.yaml +++ /dev/null @@ -1,96 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-audit - namespace: '{{ .Release.Namespace }}' -spec: - replicas: 1 - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - containers: - - args: - - --audit-interval={{ .Values.auditInterval }} - - --log-level={{ .Values.logLevel }} - - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} - - --audit-from-cache={{ .Values.auditFromCache }} - - --audit-chunk-size={{ .Values.auditChunkSize }} - - --emit-audit-events={{ .Values.emitAuditEvents }} - - --operation=audit - - --operation=status - - --logtostderr - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.audit.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-controller-manager-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-controller-manager-deployment.yaml deleted file mode 100755 index 22ceed00a..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-controller-manager-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-controller-manager - namespace: '{{ .Release.Namespace }}' -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - containers: - - args: - - --port=8443 - - --logtostderr - - --emit-admission-events={{ .Values.emitAdmissionEvents }} - - --log-level={{ .Values.logLevel }} - - --exempt-namespace=gatekeeper-system - - --operation=webhook - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.controllerManager.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: -{{ toYaml .Values.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.tolerations | indent 8 }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 - volumes: - - name: cert - secret: - defaultMode: 420 - secretName: gatekeeper-webhook-server-cert diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-clusterrole.yaml deleted file mode 100755 index 690aebcfd..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-clusterrole.yaml +++ /dev/null @@ -1,127 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs/status - verbs: - - get - - patch - - update -- apiGroups: - - constraints.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resourceNames: - - gatekeeper-admin - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - status.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/finalizers - verbs: - - delete - - get - - patch - - update -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - admissionregistration.k8s.io - resourceNames: - - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-role.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-role.yaml deleted file mode 100755 index 73e2c5cf7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-role-role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role - namespace: '{{ .Release.Namespace }}' -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml deleted file mode 100755 index 22194d2ad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml deleted file mode 100755 index 4bf6087dc..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-manager-rolebinding-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding - namespace: '{{ .Release.Namespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml deleted file mode 100755 index dade6a945..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if not .Values.disableValidatingWebhook }} -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-validating-webhook-configuration -webhooks: -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admit - failurePolicy: Ignore - name: validation.gatekeeper.sh - namespaceSelector: - matchExpressions: - - key: admission.gatekeeper.sh/ignore - operator: DoesNotExist - rules: - - apiGroups: - - '*' - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - '*' - sideEffects: None - timeoutSeconds: 3 -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admitlabel - failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh - rules: - - apiGroups: - - "" - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - namespaces - sideEffects: None - timeoutSeconds: 3 -{{- end }} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-server-cert-secret.yaml deleted file mode 100755 index bf89ae8b4..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-server-cert-secret.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-server-cert - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-service-service.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-service-service.yaml deleted file mode 100755 index 473bc4b25..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/gatekeeper-webhook-service-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' -spec: - ports: - - port: 443 - targetPort: 8443 - selector: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/requiredlabels.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/requiredlabels.yaml deleted file mode 100755 index e93e6a0a7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/requiredlabels.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8srequiredlabels -spec: - crd: - spec: - names: - kind: K8sRequiredLabels - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - message: - type: string - labels: - type: array - items: - type: object - properties: - key: - type: string - allowedRegex: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8srequiredlabels - - get_message(parameters, _default) = msg { - not parameters.message - msg := _default - } - - get_message(parameters, _default) = msg { - msg := parameters.message - } - - violation[{"msg": msg, "details": {"missing_labels": missing}}] { - provided := {label | input.review.object.metadata.labels[label]} - required := {label | label := input.parameters.labels[_].key} - missing := required - provided - count(missing) > 0 - def_msg := sprintf("you must provide labels: %v", [missing]) - msg := get_message(input.parameters, def_msg) - } - - violation[{"msg": msg}] { - value := input.review.object.metadata.labels[key] - expected := input.parameters.labels[_] - expected.key == key - # do not match if allowedRegex is not defined, or is an empty string - expected.allowedRegex != "" - not re_match(expected.allowedRegex, value) - def_msg := sprintf("Label <%v: %v> does not satisfy allowed regex: %v", [key, value, expected.allowedRegex]) - msg := get_message(input.parameters, def_msg) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/validate-install-crd.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/validate-install-crd.yaml deleted file mode 100755 index 10977fd7d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "config.gatekeeper.sh/v1alpha1/Config" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintPodStatus" false -}} -# {{- set $found "templates.gatekeeper.sh/v1beta1/ConstraintTemplate" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintTemplatePodStatus" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-gatekeeper-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/values.yaml deleted file mode 100755 index bec986402..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.2.101/values.yaml +++ /dev/null @@ -1,40 +0,0 @@ -replicas: 3 -auditInterval: 300 -constraintViolationsLimit: 20 -auditFromCache: false -disableValidatingWebhook: false -auditChunkSize: 0 -logLevel: INFO -emitAdmissionEvents: false -emitAuditEvents: false -image: - repository: rancher/openpolicyagent-gatekeeper - tag: v3.2.1 - pullPolicy: IfNotPresent -nodeSelector: { kubernetes.io/os: linux } -affinity: {} -tolerations: [] -podAnnotations: - { container.seccomp.security.alpha.kubernetes.io/manager: runtime/default } -controllerManager: - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -audit: - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/.helmignore b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/.helmignore deleted file mode 100755 index f0c131944..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/CHANGELOG.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/CHANGELOG.md deleted file mode 100755 index c68d23c24..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog -All notable changes from the upstream OPA Gatekeeper chart will be added to this file - -## [Package Version 00] - 2020-09-10 -### Added -- Enabled the CRD chart generator in `package.yaml` - -### Modified -- Updated namespace to `cattle-gatekeeper-system` -- Updated for Helm 3 compatibility - - Moved crds to `crds` directory - - Removed `crd-install` hooks and templates from crds - -### Removed -- Removed `gatekeeper-system-namespace.yaml` as Rancher handles namespaces for chart installation diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/Chart.yaml deleted file mode 100755 index 6e7996477..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gatekeeper-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: OPA Gatekeeper - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: config.gatekeeper.sh.config/v1alpha1 - catalog.cattle.io/release-name: rancher-gatekeeper - catalog.cattle.io/ui-component: gatekeeper -apiVersion: v1 -appVersion: v3.3.0 -description: Modifies Open Policy Agent's upstream gatekeeper chart that provides - policy-based control for cloud native environments -home: https://github.com/open-policy-agent/gatekeeper -icon: https://charts.rancher.io/assets/logos/gatekeeper.svg -keywords: -- open policy agent -- security -name: rancher-gatekeeper -sources: -- https://github.com/open-policy-agent/gatekeeper.git -version: 3.3.000 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/README.md deleted file mode 100755 index 45cf27c79..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Gatekeeper Helm Chart - -## Parameters - -| Parameter | Description | Default | -| :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | -| auditInterval | The frequency with which audit is run | `300` | -| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | -| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | -| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `0` | -| disableValidatingWebhook | Disable the validating webhook | `false` | -| validatingWebhookTimeoutSeconds | The timeout for the validating webhook in seconds | `3` | -| enableDeleteOperations | Enable validating webhook for delete operations | `false` | -| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | -| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | -| logLevel | Minimum log level | `INFO` | -| image.pullPolicy | The image pull policy | `IfNotPresent` | -| image.repository | Image repository | `openpolicyagent/gatekeeper` | -| image.release | The image release tag to use | Current release version: `v3.3.0` | -| image.pullSecrets | Specify an array of imagePullSecrets | `[]` | -| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | -| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | -| affinity | The node affinity to use for pod scheduling | `{}` | -| tolerations | The tolerations to use for pod scheduling | `[]` | -| controllerManager.priorityClassName | Priority class name for controller manager | `system-cluster-critical` | -| audit.priorityClassName | Priority class name for audit controller | `system-cluster-critical` | -| replicas | The number of Gatekeeper replicas to deploy for the webhook | `1` | -| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | -| secretAnnotations | The annotations to add to the Gatekeeper secrets | `{}` | -| customResourceDefinitions.create | Whether the release should install CRDs. Regardless of this value, Helm v3+ will install the CRDs if those are not present already. Use --skip-crds with helm install if you want to skip CRD creation | `true` | - -## Contributing Changes - -This Helm chart is autogenerated from the Gatekeeper static manifest. The -generator code lives under `cmd/build/helmify`. To make modifications to this -template, please edit `kustomization.yaml` and `replacements.go` under that -directory and then run `make manifests`. Your changes will show up in the -`manifest_staging` directory and will be promoted to the root `charts` directory -the next time a Gatekeeper release is cut. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/app-readme.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/app-readme.md deleted file mode 100755 index d44cf7b2b..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/app-readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Rancher OPA Gatekeeper - -This chart is based off of the upstream [OPA Gatekeeper](https://github.com/open-policy-agent/gatekeeper/tree/master/charts/gatekeeper) chart. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/opa-gatekeper/). - -The chart installs the following components: - -- OPA Gatekeeper Controller-Manager - OPA Gatekeeper is a policy engine for providing policy based governance for Kubernetes clusters. The controller installs as a [validating admission controller webhook](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) on the cluster and intercepts all admission requests that create, update or delete a resource in the cluster. -- [Audit](https://github.com/open-policy-agent/gatekeeper#audit) - A periodic audit of the cluster resources against the enforced policies. Any existing resource that violates a policy will be recorded as violations. -- [Constraint Template](https://github.com/open-policy-agent/gatekeeper#constraint-templates) - A template is a CRD (`ConstraintTemplate`) that defines the schema and Rego logic of a policy to be applied to the cluster by Gatekeeper's admission controller webhook. This chart installs a few default `ConstraintTemplate` custom resources. -- [Constraint](https://github.com/open-policy-agent/gatekeeper#constraints) - A constraint is a custom resource that defines the scope of resources which a specific constraint template should apply to. The complete policy is defined by a combination of `ConstraintTemplates` (i.e. what the policy is) and `Constraints` (i.e. what resource to apply the policy to). - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/_helpers.tpl deleted file mode 100755 index f5d0ab307..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/_helpers.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "gatekeeper.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "gatekeeper.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "gatekeeper.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "gatekeeper.labels" -}} -app.kubernetes.io/name: {{ include "gatekeeper.name" . }} -helm.sh/chart: {{ include "gatekeeper.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/allowedrepos.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/allowedrepos.yaml deleted file mode 100755 index 9abb84ecb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/allowedrepos.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8sallowedrepos -spec: - crd: - spec: - names: - kind: K8sAllowedRepos - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - repos: - type: array - items: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8sallowedrepos - - violation[{"msg": msg}] { - container := input.review.object.spec.containers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } - - violation[{"msg": msg}] { - container := input.review.object.spec.initContainers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-podsecuritypolicy.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-podsecuritypolicy.yaml deleted file mode 100755 index 78f36ecfb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-podsecuritypolicy.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin -spec: - allowPrivilegeEscalation: false - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - projected - - secret - - downwardAPI diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-serviceaccount.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-serviceaccount.yaml deleted file mode 100755 index 4b68998cb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-admin-serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-audit-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-audit-deployment.yaml deleted file mode 100755 index 95ccaa767..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-audit-deployment.yaml +++ /dev/null @@ -1,103 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-audit - namespace: '{{ .Release.Namespace }}' -spec: - replicas: 1 - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - automountServiceAccountToken: true - containers: - - args: - - --audit-interval={{ .Values.auditInterval }} - - --log-level={{ .Values.logLevel }} - - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} - - --audit-from-cache={{ .Values.auditFromCache }} - - --audit-chunk-size={{ .Values.auditChunkSize }} - - --emit-audit-events={{ .Values.emitAuditEvents }} - - --operation=audit - - --operation=status - - --logtostderr - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.audit.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - readOnlyRootFilesystem: true - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: -{{ toYaml .Values.audit.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.audit.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.audit.tolerations | indent 8 }} - imagePullSecrets: -{{ toYaml .Values.image.pullSecrets | indent 8 }} -{{- if .Values.audit.priorityClassName }} - priorityClassName: {{ .Values.audit.priorityClassName }} -{{- end }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-controller-manager-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-controller-manager-deployment.yaml deleted file mode 100755 index b050f3574..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-controller-manager-deployment.yaml +++ /dev/null @@ -1,124 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-controller-manager - namespace: '{{ .Release.Namespace }}' -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - automountServiceAccountToken: true - containers: - - args: - - --port=8443 - - --logtostderr - - --emit-admission-events={{ .Values.emitAdmissionEvents }} - - --log-level={{ .Values.logLevel }} - - --exempt-namespace=gatekeeper-system - - --operation=webhook - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.controllerManager.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - readOnlyRootFilesystem: true - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: -{{ toYaml .Values.controllerManager.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.controllerManager.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.controllerManager.tolerations | indent 8 }} - imagePullSecrets: -{{ toYaml .Values.image.pullSecrets | indent 8 }} -{{- if .Values.controllerManager.priorityClassName }} - priorityClassName: {{ .Values.controllerManager.priorityClassName }} -{{- end }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 - volumes: - - name: cert - secret: - defaultMode: 420 - secretName: gatekeeper-webhook-server-cert diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-clusterrole.yaml deleted file mode 100755 index 05577fb22..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-clusterrole.yaml +++ /dev/null @@ -1,139 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs/status - verbs: - - get - - patch - - update -- apiGroups: - - constraints.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - mutations.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resourceNames: - - gatekeeper-admin - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - status.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/finalizers - verbs: - - delete - - get - - patch - - update -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - admissionregistration.k8s.io - resourceNames: - - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-role.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-role.yaml deleted file mode 100755 index 73e2c5cf7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-role-role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role - namespace: '{{ .Release.Namespace }}' -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml deleted file mode 100755 index 22194d2ad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-rolebinding.yaml deleted file mode 100755 index 4bf6087dc..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-manager-rolebinding-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding - namespace: '{{ .Release.Namespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml deleted file mode 100755 index ba72d918e..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if not .Values.disableValidatingWebhook }} -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-validating-webhook-configuration -webhooks: -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admit - failurePolicy: Ignore - name: validation.gatekeeper.sh - namespaceSelector: - matchExpressions: - - key: admission.gatekeeper.sh/ignore - operator: DoesNotExist - rules: - - apiGroups: - - '*' - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - {{- if .Values.enableDeleteOperations }} - - DELETE - {{- end}} - resources: - - '*' - sideEffects: None - timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admitlabel - failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh - rules: - - apiGroups: - - "" - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - namespaces - sideEffects: None - timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} -{{- end }} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-server-cert-secret.yaml deleted file mode 100755 index 5438a377d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-server-cert-secret.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - annotations: -{{- toYaml .Values.secretAnnotations | trim | nindent 4 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-server-cert - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-service-service.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-service-service.yaml deleted file mode 100755 index 473bc4b25..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/gatekeeper-webhook-service-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' -spec: - ports: - - port: 443 - targetPort: 8443 - selector: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/requiredlabels.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/requiredlabels.yaml deleted file mode 100755 index e93e6a0a7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/requiredlabels.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8srequiredlabels -spec: - crd: - spec: - names: - kind: K8sRequiredLabels - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - message: - type: string - labels: - type: array - items: - type: object - properties: - key: - type: string - allowedRegex: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8srequiredlabels - - get_message(parameters, _default) = msg { - not parameters.message - msg := _default - } - - get_message(parameters, _default) = msg { - msg := parameters.message - } - - violation[{"msg": msg, "details": {"missing_labels": missing}}] { - provided := {label | input.review.object.metadata.labels[label]} - required := {label | label := input.parameters.labels[_].key} - missing := required - provided - count(missing) > 0 - def_msg := sprintf("you must provide labels: %v", [missing]) - msg := get_message(input.parameters, def_msg) - } - - violation[{"msg": msg}] { - value := input.review.object.metadata.labels[key] - expected := input.parameters.labels[_] - expected.key == key - # do not match if allowedRegex is not defined, or is an empty string - expected.allowedRegex != "" - not re_match(expected.allowedRegex, value) - def_msg := sprintf("Label <%v: %v> does not satisfy allowed regex: %v", [key, value, expected.allowedRegex]) - msg := get_message(input.parameters, def_msg) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/validate-install-crd.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/validate-install-crd.yaml deleted file mode 100755 index 875d7af02..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "config.gatekeeper.sh/v1alpha1/Config" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintPodStatus" false -}} -# {{- set $found "templates.gatekeeper.sh/v1beta1/ConstraintTemplate" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintTemplatePodStatus" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/values.yaml deleted file mode 100755 index 717517977..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.000/values.yaml +++ /dev/null @@ -1,60 +0,0 @@ -replicas: 3 -auditInterval: 300 -constraintViolationsLimit: 20 -auditFromCache: false -disableValidatingWebhook: false -validatingWebhookTimeoutSeconds: 3 -enableDeleteOperations: false -auditChunkSize: 0 -logLevel: INFO -emitAdmissionEvents: false -emitAuditEvents: false -image: - repository: rancher/mirrored-openpolicyagent-gatekeeper - tag: v3.3.0 - pullPolicy: IfNotPresent - pullSecrets: [] -podAnnotations: - { container.seccomp.security.alpha.kubernetes.io/manager: runtime/default } -secretAnnotations: {} -controllerManager: - priorityClassName: system-cluster-critical - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - tolerations: [] - nodeSelector: { kubernetes.io/os: linux } - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -audit: - priorityClassName: system-cluster-critical - affinity: {} - tolerations: [] - nodeSelector: { kubernetes.io/os: linux } - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/.helmignore b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/CHANGELOG.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/CHANGELOG.md deleted file mode 100644 index c68d23c24..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/CHANGELOG.md +++ /dev/null @@ -1,15 +0,0 @@ -# Changelog -All notable changes from the upstream OPA Gatekeeper chart will be added to this file - -## [Package Version 00] - 2020-09-10 -### Added -- Enabled the CRD chart generator in `package.yaml` - -### Modified -- Updated namespace to `cattle-gatekeeper-system` -- Updated for Helm 3 compatibility - - Moved crds to `crds` directory - - Removed `crd-install` hooks and templates from crds - -### Removed -- Removed `gatekeeper-system-namespace.yaml` as Rancher handles namespaces for chart installation diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/Chart.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/Chart.yaml deleted file mode 100644 index f3505252a..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/Chart.yaml +++ /dev/null @@ -1,22 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gatekeeper-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: OPA Gatekeeper - catalog.cattle.io/namespace: cattle-gatekeeper-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: config.gatekeeper.sh.config/v1alpha1 - catalog.cattle.io/release-name: rancher-gatekeeper - catalog.cattle.io/ui-component: gatekeeper -apiVersion: v1 -appVersion: v3.3.0 -description: Modifies Open Policy Agent's upstream gatekeeper chart that provides - policy-based control for cloud native environments -home: https://github.com/open-policy-agent/gatekeeper -icon: https://charts.rancher.io/assets/logos/gatekeeper.svg -keywords: -- open policy agent -- security -name: rancher-gatekeeper -sources: -- https://github.com/open-policy-agent/gatekeeper.git -version: 3.3.1+up3.3.0 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/README.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/README.md deleted file mode 100644 index 45cf27c79..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/README.md +++ /dev/null @@ -1,39 +0,0 @@ -# Gatekeeper Helm Chart - -## Parameters - -| Parameter | Description | Default | -| :---------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------ | -| auditInterval | The frequency with which audit is run | `300` | -| constraintViolationsLimit | The maximum # of audit violations reported on a constraint | `20` | -| auditFromCache | Take the roster of resources to audit from the OPA cache | `false` | -| auditChunkSize | Chunk size for listing cluster resources for audit (alpha feature) | `0` | -| disableValidatingWebhook | Disable the validating webhook | `false` | -| validatingWebhookTimeoutSeconds | The timeout for the validating webhook in seconds | `3` | -| enableDeleteOperations | Enable validating webhook for delete operations | `false` | -| emitAdmissionEvents | Emit K8s events in gatekeeper namespace for admission violations (alpha feature) | `false` | -| emitAuditEvents | Emit K8s events in gatekeeper namespace for audit violations (alpha feature) | `false` | -| logLevel | Minimum log level | `INFO` | -| image.pullPolicy | The image pull policy | `IfNotPresent` | -| image.repository | Image repository | `openpolicyagent/gatekeeper` | -| image.release | The image release tag to use | Current release version: `v3.3.0` | -| image.pullSecrets | Specify an array of imagePullSecrets | `[]` | -| resources | The resource request/limits for the container image | limits: 1 CPU, 512Mi, requests: 100mCPU, 256Mi | -| nodeSelector | The node selector to use for pod scheduling | `kubernetes.io/os: linux` | -| affinity | The node affinity to use for pod scheduling | `{}` | -| tolerations | The tolerations to use for pod scheduling | `[]` | -| controllerManager.priorityClassName | Priority class name for controller manager | `system-cluster-critical` | -| audit.priorityClassName | Priority class name for audit controller | `system-cluster-critical` | -| replicas | The number of Gatekeeper replicas to deploy for the webhook | `1` | -| podAnnotations | The annotations to add to the Gatekeeper pods | `container.seccomp.security.alpha.kubernetes.io/manager: runtime/default` | -| secretAnnotations | The annotations to add to the Gatekeeper secrets | `{}` | -| customResourceDefinitions.create | Whether the release should install CRDs. Regardless of this value, Helm v3+ will install the CRDs if those are not present already. Use --skip-crds with helm install if you want to skip CRD creation | `true` | - -## Contributing Changes - -This Helm chart is autogenerated from the Gatekeeper static manifest. The -generator code lives under `cmd/build/helmify`. To make modifications to this -template, please edit `kustomization.yaml` and `replacements.go` under that -directory and then run `make manifests`. Your changes will show up in the -`manifest_staging` directory and will be promoted to the root `charts` directory -the next time a Gatekeeper release is cut. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/app-readme.md b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/app-readme.md deleted file mode 100644 index d44cf7b2b..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/app-readme.md +++ /dev/null @@ -1,14 +0,0 @@ -# Rancher OPA Gatekeeper - -This chart is based off of the upstream [OPA Gatekeeper](https://github.com/open-policy-agent/gatekeeper/tree/master/charts/gatekeeper) chart. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/opa-gatekeper/). - -The chart installs the following components: - -- OPA Gatekeeper Controller-Manager - OPA Gatekeeper is a policy engine for providing policy based governance for Kubernetes clusters. The controller installs as a [validating admission controller webhook](https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#validatingadmissionwebhook) on the cluster and intercepts all admission requests that create, update or delete a resource in the cluster. -- [Audit](https://github.com/open-policy-agent/gatekeeper#audit) - A periodic audit of the cluster resources against the enforced policies. Any existing resource that violates a policy will be recorded as violations. -- [Constraint Template](https://github.com/open-policy-agent/gatekeeper#constraint-templates) - A template is a CRD (`ConstraintTemplate`) that defines the schema and Rego logic of a policy to be applied to the cluster by Gatekeeper's admission controller webhook. This chart installs a few default `ConstraintTemplate` custom resources. -- [Constraint](https://github.com/open-policy-agent/gatekeeper#constraints) - A constraint is a custom resource that defines the scope of resources which a specific constraint template should apply to. The complete policy is defined by a combination of `ConstraintTemplates` (i.e. what the policy is) and `Constraints` (i.e. what resource to apply the policy to). - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/_helpers.tpl b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/_helpers.tpl deleted file mode 100644 index f5d0ab307..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/_helpers.tpl +++ /dev/null @@ -1,52 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "gatekeeper.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "gatekeeper.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "gatekeeper.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "gatekeeper.labels" -}} -app.kubernetes.io/name: {{ include "gatekeeper.name" . }} -helm.sh/chart: {{ include "gatekeeper.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/allowedrepos.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/allowedrepos.yaml deleted file mode 100644 index 9abb84ecb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/allowedrepos.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8sallowedrepos -spec: - crd: - spec: - names: - kind: K8sAllowedRepos - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - repos: - type: array - items: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8sallowedrepos - - violation[{"msg": msg}] { - container := input.review.object.spec.containers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } - - violation[{"msg": msg}] { - container := input.review.object.spec.initContainers[_] - satisfied := [good | repo = input.parameters.repos[_] ; good = startswith(container.image, repo)] - not any(satisfied) - msg := sprintf("container <%v> has an invalid image repo <%v>, allowed repos are %v", [container.name, container.image, input.parameters.repos]) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-podsecuritypolicy.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-podsecuritypolicy.yaml deleted file mode 100644 index 78f36ecfb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-podsecuritypolicy.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin -spec: - allowPrivilegeEscalation: false - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - projected - - secret - - downwardAPI diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-serviceaccount.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-serviceaccount.yaml deleted file mode 100644 index 4b68998cb..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-admin-serviceaccount.yaml +++ /dev/null @@ -1,11 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-audit-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-audit-deployment.yaml deleted file mode 100644 index 95ccaa767..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-audit-deployment.yaml +++ /dev/null @@ -1,103 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-audit - namespace: '{{ .Release.Namespace }}' -spec: - replicas: 1 - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: audit-controller - gatekeeper.sh/operation: audit - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - automountServiceAccountToken: true - containers: - - args: - - --audit-interval={{ .Values.auditInterval }} - - --log-level={{ .Values.logLevel }} - - --constraint-violations-limit={{ .Values.constraintViolationsLimit }} - - --audit-from-cache={{ .Values.auditFromCache }} - - --audit-chunk-size={{ .Values.auditChunkSize }} - - --emit-audit-events={{ .Values.emitAuditEvents }} - - --operation=audit - - --operation=status - - --logtostderr - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.audit.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - readOnlyRootFilesystem: true - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: -{{ toYaml .Values.audit.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.audit.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.audit.tolerations | indent 8 }} - imagePullSecrets: -{{ toYaml .Values.image.pullSecrets | indent 8 }} -{{- if .Values.audit.priorityClassName }} - priorityClassName: {{ .Values.audit.priorityClassName }} -{{- end }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-controller-manager-deployment.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-controller-manager-deployment.yaml deleted file mode 100644 index b050f3574..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-controller-manager-deployment.yaml +++ /dev/null @@ -1,124 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-controller-manager - namespace: '{{ .Release.Namespace }}' -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - template: - metadata: - annotations: -{{- toYaml .Values.podAnnotations | trim | nindent 8 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - spec: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - automountServiceAccountToken: true - containers: - - args: - - --port=8443 - - --logtostderr - - --emit-admission-events={{ .Values.emitAdmissionEvents }} - - --log-level={{ .Values.logLevel }} - - --exempt-namespace=gatekeeper-system - - --operation=webhook - command: - - /manager - env: - - name: POD_NAMESPACE - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: metadata.namespace - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - image: '{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}' - imagePullPolicy: '{{ .Values.image.pullPolicy }}' - livenessProbe: - httpGet: - path: /healthz - port: 9090 - name: manager - ports: - - containerPort: 8443 - name: webhook-server - protocol: TCP - - containerPort: 8888 - name: metrics - protocol: TCP - - containerPort: 9090 - name: healthz - protocol: TCP - readinessProbe: - httpGet: - path: /readyz - port: 9090 - resources: -{{ toYaml .Values.controllerManager.resources | indent 10 }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: - - all - readOnlyRootFilesystem: true - runAsGroup: 999 - runAsNonRoot: true - runAsUser: 1000 - volumeMounts: - - mountPath: /certs - name: cert - readOnly: true - nodeSelector: -{{ toYaml .Values.controllerManager.nodeSelector | indent 8 }} - affinity: -{{ toYaml .Values.controllerManager.affinity | indent 8 }} - tolerations: -{{ toYaml .Values.controllerManager.tolerations | indent 8 }} - imagePullSecrets: -{{ toYaml .Values.image.pullSecrets | indent 8 }} -{{- if .Values.controllerManager.priorityClassName }} - priorityClassName: {{ .Values.controllerManager.priorityClassName }} -{{- end }} - serviceAccountName: gatekeeper-admin - terminationGracePeriodSeconds: 60 - volumes: - - name: cert - secret: - defaultMode: 420 - secretName: gatekeeper-webhook-server-cert diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-clusterrole.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-clusterrole.yaml deleted file mode 100644 index 05577fb22..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-clusterrole.yaml +++ /dev/null @@ -1,139 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role -rules: -- apiGroups: - - '*' - resources: - - '*' - verbs: - - get - - list - - watch -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - config.gatekeeper.sh - resources: - - configs/status - verbs: - - get - - patch - - update -- apiGroups: - - constraints.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - mutations.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - policy - resourceNames: - - gatekeeper-admin - resources: - - podsecuritypolicies - verbs: - - use -- apiGroups: - - status.gatekeeper.sh - resources: - - '*' - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/finalizers - verbs: - - delete - - get - - patch - - update -- apiGroups: - - templates.gatekeeper.sh - resources: - - constrainttemplates/status - verbs: - - get - - patch - - update -- apiGroups: - - admissionregistration.k8s.io - resourceNames: - - gatekeeper-validating-webhook-configuration - resources: - - validatingwebhookconfigurations - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-role.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-role.yaml deleted file mode 100644 index 73e2c5cf7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-role-role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-role - namespace: '{{ .Release.Namespace }}' -rules: -- apiGroups: - - "" - resources: - - events - verbs: - - create - - patch -- apiGroups: - - "" - resources: - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml deleted file mode 100644 index 22194d2ad..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-rolebinding.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-rolebinding.yaml deleted file mode 100644 index 4bf6087dc..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-manager-rolebinding-rolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-manager-rolebinding - namespace: '{{ .Release.Namespace }}' -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: gatekeeper-manager-role -subjects: -- kind: ServiceAccount - name: gatekeeper-admin - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml deleted file mode 100644 index ba72d918e..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-validating-webhook-configuration-validatingwebhookconfiguration.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if not .Values.disableValidatingWebhook }} -apiVersion: admissionregistration.k8s.io/v1beta1 -kind: ValidatingWebhookConfiguration -metadata: - creationTimestamp: null - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-validating-webhook-configuration -webhooks: -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admit - failurePolicy: Ignore - name: validation.gatekeeper.sh - namespaceSelector: - matchExpressions: - - key: admission.gatekeeper.sh/ignore - operator: DoesNotExist - rules: - - apiGroups: - - '*' - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - {{- if .Values.enableDeleteOperations }} - - DELETE - {{- end}} - resources: - - '*' - sideEffects: None - timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} -- clientConfig: - caBundle: Cg== - service: - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' - path: /v1/admitlabel - failurePolicy: Fail - name: check-ignore-label.gatekeeper.sh - rules: - - apiGroups: - - "" - apiVersions: - - '*' - operations: - - CREATE - - UPDATE - resources: - - namespaces - sideEffects: None - timeoutSeconds: {{ .Values.validatingWebhookTimeoutSeconds }} -{{- end }} diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-server-cert-secret.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-server-cert-secret.yaml deleted file mode 100644 index 5438a377d..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-server-cert-secret.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: v1 -kind: Secret -metadata: - annotations: -{{- toYaml .Values.secretAnnotations | trim | nindent 4 }} - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-server-cert - namespace: '{{ .Release.Namespace }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-service-service.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-service-service.yaml deleted file mode 100644 index 473bc4b25..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/gatekeeper-webhook-service-service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - labels: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' - name: gatekeeper-webhook-service - namespace: '{{ .Release.Namespace }}' -spec: - ports: - - port: 443 - targetPort: 8443 - selector: - app: '{{ template "gatekeeper.name" . }}' - chart: '{{ template "gatekeeper.name" . }}' - control-plane: controller-manager - gatekeeper.sh/operation: webhook - gatekeeper.sh/system: "yes" - heritage: '{{ .Release.Service }}' - release: '{{ .Release.Name }}' diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/requiredlabels.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/requiredlabels.yaml deleted file mode 100644 index e93e6a0a7..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/requiredlabels.yaml +++ /dev/null @@ -1,57 +0,0 @@ -apiVersion: templates.gatekeeper.sh/v1beta1 -kind: ConstraintTemplate -metadata: - name: k8srequiredlabels -spec: - crd: - spec: - names: - kind: K8sRequiredLabels - validation: - # Schema for the `parameters` field - openAPIV3Schema: - properties: - message: - type: string - labels: - type: array - items: - type: object - properties: - key: - type: string - allowedRegex: - type: string - targets: - - target: admission.k8s.gatekeeper.sh - rego: | - package k8srequiredlabels - - get_message(parameters, _default) = msg { - not parameters.message - msg := _default - } - - get_message(parameters, _default) = msg { - msg := parameters.message - } - - violation[{"msg": msg, "details": {"missing_labels": missing}}] { - provided := {label | input.review.object.metadata.labels[label]} - required := {label | label := input.parameters.labels[_].key} - missing := required - provided - count(missing) > 0 - def_msg := sprintf("you must provide labels: %v", [missing]) - msg := get_message(input.parameters, def_msg) - } - - violation[{"msg": msg}] { - value := input.review.object.metadata.labels[key] - expected := input.parameters.labels[_] - expected.key == key - # do not match if allowedRegex is not defined, or is an empty string - expected.allowedRegex != "" - not re_match(expected.allowedRegex, value) - def_msg := sprintf("Label <%v: %v> does not satisfy allowed regex: %v", [key, value, expected.allowedRegex]) - msg := get_message(input.parameters, def_msg) - } diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/validate-install-crd.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/validate-install-crd.yaml deleted file mode 100644 index 875d7af02..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/templates/validate-install-crd.yaml +++ /dev/null @@ -1,17 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "config.gatekeeper.sh/v1alpha1/Config" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintPodStatus" false -}} -# {{- set $found "templates.gatekeeper.sh/v1beta1/ConstraintTemplate" false -}} -# {{- set $found "status.gatekeeper.sh/v1beta1/ConstraintTemplatePodStatus" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/values.yaml b/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/values.yaml deleted file mode 100644 index 899119fc6..000000000 --- a/charts/rancher-gatekeeper/rancher-gatekeeper/3.3.1+up3.3.0/values.yaml +++ /dev/null @@ -1,60 +0,0 @@ -replicas: 3 -auditInterval: 300 -constraintViolationsLimit: 20 -auditFromCache: false -disableValidatingWebhook: false -validatingWebhookTimeoutSeconds: 3 -enableDeleteOperations: false -auditChunkSize: 0 -logLevel: INFO -emitAdmissionEvents: false -emitAuditEvents: false -image: - repository: rancher/mirrored-openpolicyagent-gatekeeper - tag: v3.3.0 - pullPolicy: IfNotPresent - pullSecrets: [] -podAnnotations: - { container.seccomp.security.alpha.kubernetes.io/manager: runtime/default } -secretAnnotations: {} -controllerManager: - priorityClassName: system-cluster-critical - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: gatekeeper.sh/operation - operator: In - values: - - webhook - topologyKey: kubernetes.io/hostname - weight: 100 - tolerations: [] - nodeSelector: { kubernetes.io/os: linux } - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -audit: - priorityClassName: system-cluster-critical - affinity: {} - tolerations: [] - nodeSelector: { kubernetes.io/os: linux } - resources: - limits: - cpu: 1000m - memory: 512Mi - requests: - cpu: 100m - memory: 256Mi -global: - cattle: - systemDefaultRegistry: "" - kubectl: - repository: rancher/kubectl - tag: v1.20.2 diff --git a/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml b/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml deleted file mode 100644 index 596d64afb..000000000 --- a/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/Chart.yaml +++ /dev/null @@ -1,11 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/release-name: rancher-gke-operator-crd -apiVersion: v2 -appVersion: 1.1.1-rc2 -description: GKE Operator CustomResourceDefinitions -name: rancher-gke-operator-crd -version: 1.1.100-rc2+up1.1.1-rc2 diff --git a/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml b/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml deleted file mode 100644 index 33b372498..000000000 --- a/charts/rancher-gke-operator-crd/rancher-gke-operator-crd/1.1.100-rc2+up1.1.1-rc2/templates/crds.yaml +++ /dev/null @@ -1,243 +0,0 @@ -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - helm.sh/resource-policy: keep - name: gkeclusterconfigs.gke.cattle.io -spec: - group: gke.cattle.io - names: - kind: GKEClusterConfig - plural: gkeclusterconfigs - shortNames: - - gkecc - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - spec: - properties: - clusterAddons: - nullable: true - properties: - horizontalPodAutoscaling: - type: boolean - httpLoadBalancing: - type: boolean - networkPolicyConfig: - type: boolean - type: object - clusterIpv4Cidr: - nullable: true - type: string - clusterName: - nullable: true - type: string - description: - nullable: true - type: string - enableKubernetesAlpha: - nullable: true - type: boolean - googleCredentialSecret: - nullable: true - type: string - imported: - type: boolean - ipAllocationPolicy: - nullable: true - properties: - clusterIpv4CidrBlock: - nullable: true - type: string - clusterSecondaryRangeName: - nullable: true - type: string - createSubnetwork: - type: boolean - nodeIpv4CidrBlock: - nullable: true - type: string - servicesIpv4CidrBlock: - nullable: true - type: string - servicesSecondaryRangeName: - nullable: true - type: string - subnetworkName: - nullable: true - type: string - useIpAliases: - type: boolean - type: object - kubernetesVersion: - nullable: true - type: string - labels: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - locations: - items: - nullable: true - type: string - nullable: true - type: array - loggingService: - nullable: true - type: string - maintenanceWindow: - nullable: true - type: string - masterAuthorizedNetworks: - nullable: true - properties: - cidrBlocks: - items: - properties: - cidrBlock: - nullable: true - type: string - displayName: - nullable: true - type: string - type: object - nullable: true - type: array - enabled: - type: boolean - type: object - monitoringService: - nullable: true - type: string - network: - nullable: true - type: string - networkPolicyEnabled: - nullable: true - type: boolean - nodePools: - items: - properties: - autoscaling: - nullable: true - properties: - enabled: - type: boolean - maxNodeCount: - type: integer - minNodeCount: - type: integer - type: object - config: - nullable: true - properties: - diskSizeGb: - type: integer - diskType: - nullable: true - type: string - imageType: - nullable: true - type: string - labels: - additionalProperties: - nullable: true - type: string - nullable: true - type: object - localSsdCount: - type: integer - machineType: - nullable: true - type: string - oauthScopes: - items: - nullable: true - type: string - nullable: true - type: array - preemptible: - type: boolean - taints: - items: - properties: - effect: - nullable: true - type: string - key: - nullable: true - type: string - value: - nullable: true - type: string - type: object - nullable: true - type: array - type: object - initialNodeCount: - nullable: true - type: integer - management: - nullable: true - properties: - autoRepair: - type: boolean - autoUpgrade: - type: boolean - type: object - maxPodsConstraint: - nullable: true - type: integer - name: - nullable: true - type: string - version: - nullable: true - type: string - type: object - nullable: true - type: array - privateClusterConfig: - nullable: true - properties: - enablePrivateEndpoint: - type: boolean - enablePrivateNodes: - type: boolean - masterIpv4CidrBlock: - nullable: true - type: string - type: object - projectID: - nullable: true - type: string - region: - nullable: true - type: string - subnetwork: - nullable: true - type: string - zone: - nullable: true - type: string - type: object - status: - properties: - failureMessage: - nullable: true - type: string - phase: - nullable: true - type: string - type: object - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml deleted file mode 100644 index 39b72ecc6..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/Chart.yaml +++ /dev/null @@ -1,18 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-gke-operator-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: gkeclusterconfigs.gke.cattle.io/v1 - catalog.cattle.io/rancher-version: '>= 2.6.0-alpha' - catalog.cattle.io/release-name: rancher-gke-operator - catalog.cattle.io/scope: management -apiVersion: v2 -appVersion: 1.1.1-rc2 -description: A Helm chart for provisioning GKE clusters -home: https://github.com/rancher/gke-operator -name: rancher-gke-operator -sources: -- https://github.com/rancher/gke-operator -version: 1.1.100-rc2+up1.1.1-rc2 diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt deleted file mode 100644 index 238173d1b..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/NOTES.txt +++ /dev/null @@ -1,4 +0,0 @@ -You have deployed the Rancher GKE operator -Version: {{ .Chart.AppVersion }} -Description: This operator provisions GKE clusters -from GKEClusterConfig CRs. diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl deleted file mode 100644 index be11b4a66..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/_helpers.tpl +++ /dev/null @@ -1,9 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml deleted file mode 100644 index 7c352696e..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrole.yaml +++ /dev/null @@ -1,15 +0,0 @@ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: gke-operator - namespace: cattle-system -rules: - - apiGroups: [''] - resources: ['secrets'] - verbs: ['get', 'list', 'create', 'watch'] - - apiGroups: ['gke.cattle.io'] - resources: ['gkeclusterconfigs'] - verbs: ['get', 'list', 'update', 'watch'] - - apiGroups: ['gke.cattle.io'] - resources: ['gkeclusterconfigs/status'] - verbs: ['update'] diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml deleted file mode 100644 index e2af390c7..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,13 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: gke-operator - namespace: cattle-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: gke-operator -subjects: -- kind: ServiceAccount - name: gke-operator - namespace: cattle-system diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml deleted file mode 100644 index ec14daa3d..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/deployment.yaml +++ /dev/null @@ -1,39 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: gke-config-operator - namespace: cattle-system -spec: - replicas: 1 - selector: - matchLabels: - ke.cattle.io/operator: gke - template: - metadata: - labels: - ke.cattle.io/operator: gke - spec: - serviceAccountName: gke-operator - containers: - - name: rancher-gke-operator - image: {{ template "system_default_registry" . }}{{ .Values.gkeOperator.image.repository }}:{{ .Values.gkeOperator.image.tag }} - imagePullPolicy: IfNotPresent - env: - - name: HTTP_PROXY - value: {{ .Values.httpProxy }} - - name: HTTPS_PROXY - value: {{ .Values.httpsProxy }} - - name: NO_PROXY - value: {{ .Values.noProxy }} -{{- if .Values.additionalTrustedCAs }} - volumeMounts: - - mountPath: /etc/ssl/certs/ca-additional.pem - name: tls-ca-additional-volume - subPath: ca-additional.pem - readOnly: true - volumes: - - name: tls-ca-additional-volume - secret: - defaultMode: 0400 - secretName: tls-ca-additional - {{- end }} diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml deleted file mode 100644 index ba52af628..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - namespace: cattle-system - name: gke-operator diff --git a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml b/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml deleted file mode 100644 index bd92870e9..000000000 --- a/charts/rancher-gke-operator/rancher-gke-operator/1.1.100-rc2+up1.1.1-rc2/values.yaml +++ /dev/null @@ -1,12 +0,0 @@ -global: - systemDefaultRegistry: "" - -gkeOperator: - image: - repository: rancher/gke-operator - tag: v1.1.1-rc2 - -httpProxy: "" -httpsProxy: "" -noProxy: "" -additionalTrustedCAs: false diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/.helmignore b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/.helmignore deleted file mode 100644 index 8cade1318..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/.helmignore +++ /dev/null @@ -1,23 +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 -.vscode -.project -.idea/ -*.tmproj -OWNERS diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/Chart.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/Chart.yaml deleted file mode 100644 index c681ac593..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-grafana -apiVersion: v2 -appVersion: 7.4.5 -description: The leading tool for querying and visualizing time series and metrics. -home: https://grafana.net -icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png -kubeVersion: ^1.8.0-0 -maintainers: -- email: zanhsieh@gmail.com - name: zanhsieh -- email: rluckie@cisco.com - name: rtluckie -- email: maor.friedman@redhat.com - name: maorfr -- email: miroslav.hadzhiev@gmail.com - name: Xtigyro -- email: mail@torstenwalter.de - name: torstenwalter -name: rancher-grafana -sources: -- https://github.com/grafana/grafana -type: application -version: 6.6.401+up6.6.4 diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/README.md b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/README.md deleted file mode 100644 index 957f019ec..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/README.md +++ /dev/null @@ -1,514 +0,0 @@ -# Grafana Helm Chart - -* Installs the web dashboarding system [Grafana](http://grafana.org/) - -## Get Repo Info - -```console -helm repo add grafana https://grafana.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```console -helm install my-release grafana/grafana -``` - -## Uninstalling the Chart - -To uninstall/delete the my-release deployment: - -```console -helm delete my-release -``` - -The command removes all the Kubernetes components associated with the chart and deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### To 4.0.0 (And 3.12.1) - -This version requires Helm >= 2.12.0. - -### To 5.0.0 - -You have to add --force to your helm upgrade command as the labels of the chart have changed. - -### To 6.0.0 - -This version requires Helm >= 3.1.0. - -## Configuration - -| Parameter | Description | Default | -|-------------------------------------------|-----------------------------------------------|---------------------------------------------------------| -| `replicas` | Number of nodes | `1` | -| `podDisruptionBudget.minAvailable` | Pod disruption minimum available | `nil` | -| `podDisruptionBudget.maxUnavailable` | Pod disruption maximum unavailable | `nil` | -| `deploymentStrategy` | Deployment strategy | `{ "type": "RollingUpdate" }` | -| `livenessProbe` | Liveness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } "initialDelaySeconds": 60, "timeoutSeconds": 30, "failureThreshold": 10 }` | -| `readinessProbe` | Readiness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } }`| -| `securityContext` | Deployment securityContext | `{"runAsUser": 472, "runAsGroup": 472, "fsGroup": 472}` | -| `priorityClassName` | Name of Priority Class to assign pods | `nil` | -| `image.repository` | Image repository | `grafana/grafana` | -| `image.tag` | Image tag (`Must be >= 5.0.0`) | `7.4.5` | -| `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Image pull secrets | `{}` | -| `service.type` | Kubernetes service type | `ClusterIP` | -| `service.port` | Kubernetes port where service is exposed | `80` | -| `service.portName` | Name of the port on the service | `service` | -| `service.targetPort` | Internal service is port | `3000` | -| `service.nodePort` | Kubernetes service nodePort | `nil` | -| `service.annotations` | Service annotations | `{}` | -| `service.labels` | Custom labels | `{}` | -| `service.clusterIP` | internal cluster service IP | `nil` | -| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `nil` | -| `service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to lb (if supported) | `[]` | -| `service.externalIPs` | service external IP addresses | `[]` | -| `extraExposePorts` | Additional service ports for sidecar containers| `[]` | -| `hostAliases` | adds rules to the pod's /etc/hosts | `[]` | -| `ingress.enabled` | Enables Ingress | `false` | -| `ingress.annotations` | Ingress annotations (values are templated) | `{}` | -| `ingress.labels` | Custom labels | `{}` | -| `ingress.path` | Ingress accepted path | `/` | -| `ingress.pathType` | Ingress type of path | `Prefix` | -| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | -| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Toleration labels for pod assignment | `[]` | -| `affinity` | Affinity settings for pod assignment | `{}` | -| `extraInitContainers` | Init containers to add to the grafana pod | `{}` | -| `extraContainers` | Sidecar containers to add to the grafana pod | `{}` | -| `extraContainerVolumes` | Volumes that can be mounted in sidecar containers | `[]` | -| `extraLabels` | Custom labels for all manifests | `{}` | -| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | -| `persistence.enabled` | Use persistent volume to store data | `false` | -| `persistence.type` | Type of persistence (`pvc` or `statefulset`) | `pvc` | -| `persistence.size` | Size of persistent volume claim | `10Gi` | -| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | -| `persistence.storageClassName` | Type of persistent volume claim | `nil` | -| `persistence.accessModes` | Persistence access modes | `[ReadWriteOnce]` | -| `persistence.annotations` | PersistentVolumeClaim annotations | `{}` | -| `persistence.finalizers` | PersistentVolumeClaim finalizers | `[ "kubernetes.io/pvc-protection" ]` | -| `persistence.subPath` | Mount a sub dir of the persistent volume | `nil` | -| `persistence.inMemory.enabled` | If persistence is not enabled, whether to mount the local storage in-memory to improve performance | `false` | -| `persistence.inMemory.sizeLimit` | SizeLimit for the in-memory local storage | `nil` | -| `initChownData.enabled` | If false, don't reset data ownership at startup | true | -| `initChownData.image.repository` | init-chown-data container image repository | `busybox` | -| `initChownData.image.tag` | init-chown-data container image tag | `1.31.1` | -| `initChownData.image.sha` | init-chown-data container image sha (optional)| `""` | -| `initChownData.image.pullPolicy` | init-chown-data container image pull policy | `IfNotPresent` | -| `initChownData.resources` | init-chown-data pod resource requests & limits | `{}` | -| `schedulerName` | Alternate scheduler name | `nil` | -| `env` | Extra environment variables passed to pods | `{}` | -| `envValueFrom` | Environment variables from alternate sources. See the API docs on [EnvVarSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core) for format details. | `{}` | -| `envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `envRenderSecret` | Sensible environment variables passed to pods and stored as secret | `{}` | -| `extraSecretMounts` | Additional grafana server secret mounts | `[]` | -| `extraVolumeMounts` | Additional grafana server volume mounts | `[]` | -| `extraConfigmapMounts` | Additional grafana server configMap volume mounts | `[]` | -| `extraEmptyDirMounts` | Additional grafana server emptyDir volume mounts | `[]` | -| `plugins` | Plugins to be loaded along with Grafana | `[]` | -| `datasources` | Configure grafana datasources (passed through tpl) | `{}` | -| `notifiers` | Configure grafana notifiers | `{}` | -| `dashboardProviders` | Configure grafana dashboard providers | `{}` | -| `dashboards` | Dashboards to import | `{}` | -| `dashboardsConfigMaps` | ConfigMaps reference that contains dashboards | `{}` | -| `grafana.ini` | Grafana's primary configuration | `{}` | -| `ldap.enabled` | Enable LDAP authentication | `false` | -| `ldap.existingSecret` | The name of an existing secret containing the `ldap.toml` file, this must have the key `ldap-toml`. | `""` | -| `ldap.config` | Grafana's LDAP configuration | `""` | -| `annotations` | Deployment annotations | `{}` | -| `labels` | Deployment labels | `{}` | -| `podAnnotations` | Pod annotations | `{}` | -| `podLabels` | Pod labels | `{}` | -| `podPortName` | Name of the grafana port on the pod | `grafana` | -| `sidecar.image.repository` | Sidecar image repository | `quay.io/kiwigrid/k8s-sidecar` | -| `sidecar.image.tag` | Sidecar image tag | `1.10.7` | -| `sidecar.image.sha` | Sidecar image sha (optional) | `""` | -| `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` | -| `sidecar.resources` | Sidecar resources | `{}` | -| `sidecar.enableUniqueFilenames` | Sets the kiwigrid/k8s-sidecar UNIQUE_FILENAMES environment variable | `false` | -| `sidecar.dashboards.enabled` | Enables the cluster wide search for dashboards and adds/updates/deletes them in grafana | `false` | -| `sidecar.dashboards.SCProvider` | Enables creation of sidecar provider | `true` | -| `sidecar.dashboards.provider.name` | Unique name of the grafana provider | `sidecarProvider` | -| `sidecar.dashboards.provider.orgid` | Id of the organisation, to which the dashboards should be added | `1` | -| `sidecar.dashboards.provider.folder` | Logical folder in which grafana groups dashboards | `""` | -| `sidecar.dashboards.provider.disableDelete` | Activate to avoid the deletion of imported dashboards | `false` | -| `sidecar.dashboards.provider.allowUiUpdates` | Allow updating provisioned dashboards from the UI | `false` | -| `sidecar.dashboards.provider.type` | Provider type | `file` | -| `sidecar.dashboards.provider.foldersFromFilesStructure` | Allow Grafana to replicate dashboard structure from filesystem. | `false` | -| `sidecar.dashboards.watchMethod` | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` | -| `sidecar.skipTlsVerify` | Set to true to skip tls verification for kube api calls | `nil` | -| `sidecar.dashboards.label` | Label that config maps with dashboards should have to be added | `grafana_dashboard` | -| `sidecar.dashboards.labelValue` | Label value that config maps with dashboards should have to be added | `nil` | -| `sidecar.dashboards.folder` | Folder in the pod that should hold the collected dashboards (unless `sidecar.dashboards.defaultFolderName` is set). This path will be mounted. | `/tmp/dashboards` | -| `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` | -| `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` | -| `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` | -| `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` | -| `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` | -| `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` | -| `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` | -| `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` | -| `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` | -| `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` | -| `admin.existingSecret` | The name of an existing secret containing the admin credentials. | `""` | -| `admin.userKey` | The key in the existing admin secret containing the username. | `"admin-user"` | -| `admin.passwordKey` | The key in the existing admin secret containing the password. | `"admin-password"` | -| `serviceAccount.annotations` | ServiceAccount annotations | | -| `serviceAccount.create` | Create service account | `true` | -| `serviceAccount.name` | Service account name to use, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `` | -| `serviceAccount.nameTest` | Service account name to use for test, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `nil` | -| `rbac.create` | Create and use RBAC resources | `true` | -| `rbac.namespaced` | Creates Role and Rolebinding instead of the default ClusterRole and ClusteRoleBindings for the grafana instance | `false` | -| `rbac.useExistingRole` | Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to the rolename set here. | `nil` | -| `rbac.pspEnabled` | Create PodSecurityPolicy (with `rbac.create`, grant roles permissions as well) | `true` | -| `rbac.pspUseAppArmor` | Enforce AppArmor in created PodSecurityPolicy (requires `rbac.pspEnabled`) | `true` | -| `rbac.extraRoleRules` | Additional rules to add to the Role | [] | -| `rbac.extraClusterRoleRules` | Additional rules to add to the ClusterRole | [] | -| `command` | Define command to be executed by grafana container at startup | `nil` | -| `testFramework.enabled` | Whether to create test-related resources | `true` | -| `testFramework.image` | `test-framework` image repository. | `bats/bats` | -| `testFramework.tag` | `test-framework` image tag. | `v1.1.0` | -| `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` | -| `testFramework.securityContext` | `test-framework` securityContext | `{}` | -| `downloadDashboards.env` | Environment variables to be passed to the `download-dashboards` container | `{}` | -| `downloadDashboards.envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `downloadDashboards.resources` | Resources of `download-dashboards` container | `{}` | -| `downloadDashboardsImage.repository` | Curl docker image repo | `curlimages/curl` | -| `downloadDashboardsImage.tag` | Curl docker image tag | `7.73.0` | -| `downloadDashboardsImage.sha` | Curl docker image sha (optional) | `""` | -| `downloadDashboardsImage.pullPolicy` | Curl docker image pull policy | `IfNotPresent` | -| `namespaceOverride` | Override the deployment namespace | `""` (`Release.Namespace`) | -| `serviceMonitor.enabled` | Use servicemonitor from prometheus operator | `false` | -| `serviceMonitor.namespace` | Namespace this servicemonitor is installed in | | -| `serviceMonitor.interval` | How frequently Prometheus should scrape | `1m` | -| `serviceMonitor.path` | Path to scrape | `/metrics` | -| `serviceMonitor.scheme` | Scheme to use for metrics scraping | `http` | -| `serviceMonitor.tlsConfig` | TLS configuration block for the endpoint | `{}` | -| `serviceMonitor.labels` | Labels for the servicemonitor passed to Prometheus Operator | `{}` | -| `serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `30s` | -| `serviceMonitor.relabelings` | MetricRelabelConfigs to apply to samples before ingestion. | `[]` | -| `revisionHistoryLimit` | Number of old ReplicaSets to retain | `10` | -| `imageRenderer.enabled` | Enable the image-renderer deployment & service | `false` | -| `imageRenderer.image.repository` | image-renderer Image repository | `grafana/grafana-image-renderer` | -| `imageRenderer.image.tag` | image-renderer Image tag | `latest` | -| `imageRenderer.image.sha` | image-renderer Image sha (optional) | `""` | -| `imageRenderer.image.pullPolicy` | image-renderer ImagePullPolicy | `Always` | -| `imageRenderer.env` | extra env-vars for image-renderer | `{}` | -| `imageRenderer.serviceAccountName` | image-renderer deployment serviceAccountName | `""` | -| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | -| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | -| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | -| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | -| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | -| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` | -| `imageRenderer.podPortName` | name of the image-renderer port on the pod | `http` | -| `imageRenderer.revisionHistoryLimit` | number of image-renderer replica sets to keep | `10` | -| `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true` | -| `imageRenderer.networkPolicy.limitEgress` | Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods | `false` | -| `imageRenderer.resources` | Set resource limits for image-renderer pdos | `{}` | - -### Example ingress with path - -With grafana 6.3 and above -```yaml -grafana.ini: - server: - domain: monitoring.example.com - root_url: "%(protocol)s://%(domain)s/grafana" - serve_from_sub_path: true -ingress: - enabled: true - hosts: - - "monitoring.example.com" - path: "/grafana" -``` - -### Example of extraVolumeMounts - -```yaml -- extraVolumeMounts: - - name: plugins - mountPath: /var/lib/grafana/plugins - subPath: configs/grafana/plugins - existingClaim: existing-grafana-claim - readOnly: false -``` - -## Import dashboards - -There are a few methods to import dashboards to Grafana. Below are some examples and explanations as to how to use each method: - -```yaml -dashboards: - default: - some-dashboard: - json: | - { - "annotations": - - ... - # Complete json file here - ... - - "title": "Some Dashboard", - "uid": "abcd1234", - "version": 1 - } - custom-dashboard: - # This is a path to a file inside the dashboards directory inside the chart directory - file: dashboards/custom-dashboard.json - prometheus-stats: - # Ref: https://grafana.com/dashboards/2 - gnetId: 2 - revision: 2 - datasource: Prometheus - local-dashboard: - url: https://raw.githubusercontent.com/user/repository/master/dashboards/dashboard.json -``` - -## BASE64 dashboards - -Dashboards could be stored on a server that does not return JSON directly and instead of it returns a Base64 encoded file (e.g. Gerrit) -A new parameter has been added to the url use case so if you specify a b64content value equals to true after the url entry a Base64 decoding is applied before save the file to disk. -If this entry is not set or is equals to false not decoding is applied to the file before saving it to disk. - -### Gerrit use case - -Gerrit API for download files has the following schema: where {project-name} and -{file-id} usually has '/' in their values and so they MUST be replaced by %2F so if project-name is user/repo, branch-id is master and file-id is equals to dir1/dir2/dashboard -the url value is - -## Sidecar for dashboards - -If the parameter `sidecar.dashboards.enabled` is set, a sidecar container is deployed in the grafana -pod. This container watches all configmaps (or secrets) in the cluster and filters out the ones with -a label as defined in `sidecar.dashboards.label`. The files defined in those configmaps are written -to a folder and accessed by grafana. Changes to the configmaps are monitored and the imported -dashboards are deleted/updated. - -A recommendation is to use one configmap per dashboard, as a reduction of multiple dashboards inside -one configmap is currently not properly mirrored in grafana. - -Example dashboard config: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: sample-grafana-dashboard - labels: - grafana_dashboard: "1" -data: - k8s-dashboard.json: |- - [...] -``` - -## Sidecar for datasources - -If the parameter `sidecar.datasources.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the data sources in grafana can be imported. - -Secrets are recommended over configmaps for this usecase because datasources usually contain private -data like usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example values to add a datasource adapted from [Grafana](http://docs.grafana.org/administration/provisioning/#example-datasource-config-file): - -```yaml -datasources: - datasources.yaml: - apiVersion: 1 - datasources: - # name of the datasource. Required - - name: Graphite - # datasource type. Required - type: graphite - # access mode. proxy or direct (Server or Browser in the UI). Required - access: proxy - # org id. will default to orgId 1 if not specified - orgId: 1 - # url - url: http://localhost:8080 - # database password, if used - password: - # database user, if used - user: - # database name, if used - database: - # enable/disable basic auth - basicAuth: - # basic auth username - basicAuthUser: - # basic auth password - basicAuthPassword: - # enable/disable with credentials headers - withCredentials: - # mark as default datasource. Max one per org - isDefault: - # fields that will be converted to json and stored in json_data - jsonData: - graphiteVersion: "1.1" - tlsAuth: true - tlsAuthWithCACert: true - # json object of data that will be encrypted. - secureJsonData: - tlsCACert: "..." - tlsClientCert: "..." - tlsClientKey: "..." - version: 1 - # allow users to edit datasources from the UI. - editable: false -``` - -## Sidecar for notifiers - -If the parameter `sidecar.notifiers.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.notifiers.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the notification channels in grafana can be imported. The secrets must be created before -`helm install` so that the notifiers init container can list the secrets. - -Secrets are recommended over configmaps for this usecase because alert notification channels usually contain -private data like SMTP usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example datasource config adapted from [Grafana](https://grafana.com/docs/grafana/latest/administration/provisioning/#alert-notification-channels): - -```yaml -notifiers: - - name: notification-channel-1 - type: slack - uid: notifier1 - # either - org_id: 2 - # or - org_name: Main Org. - is_default: true - send_reminder: true - frequency: 1h - disable_resolve_message: false - # See `Supported Settings` section for settings supporter for each - # alert notification type. - settings: - recipient: 'XXX' - token: 'xoxb' - uploadImage: true - url: https://slack.com - -delete_notifiers: - - name: notification-channel-1 - uid: notifier1 - org_id: 2 - - name: notification-channel-2 - # default org_id: 1 -``` - -## How to serve Grafana with a path prefix (/grafana) - -In order to serve Grafana with a prefix (e.g., ), add the following to your values.yaml. - -```yaml -ingress: - enabled: true - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/rewrite-target: /$1 - nginx.ingress.kubernetes.io/use-regex: "true" - - path: /grafana/?(.*) - hosts: - - k8s.example.dev - -grafana.ini: - server: - root_url: http://localhost:3000/grafana # this host can be localhost -``` - -## How to securely reference secrets in grafana.ini - -This example uses Grafana uses [file providers](https://grafana.com/docs/grafana/latest/administration/configuration/#file-provider) for secret values and the `extraSecretMounts` configuration flag (Additional grafana server secret mounts) to mount the secrets. - -In grafana.ini: - -```yaml -grafana.ini: - [auth.generic_oauth] - enabled = true - client_id = $__file{/etc/secrets/auth_generic_oauth/client_id} - client_secret = $__file{/etc/secrets/auth_generic_oauth/client_secret} -``` - -Existing secret, or created along with helm: - -```yaml ---- -apiVersion: v1 -kind: Secret -metadata: - name: auth-generic-oauth-secret -type: Opaque -stringData: - client_id: - client_secret: -``` - -Include in the `extraSecretMounts` configuration flag: - -```yaml -- extraSecretMounts: - - name: auth-generic-oauth-secret-mount - secretName: auth-generic-oauth-secret - defaultMode: 0440 - mountPath: /etc/secrets/auth_generic_oauth - readOnly: true -``` - -### extraSecretMounts using a Container Storage Interface (CSI) provider - -This example uses a CSI driver e.g. retrieving secrets using [Azure Key Vault Provider](https://github.com/Azure/secrets-store-csi-driver-provider-azure) - -```yaml -- extraSecretMounts: - - name: secrets-store-inline - mountPath: /run/secrets - readOnly: true - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: "my-provider" - nodePublishSecretRef: - name: akv-creds -``` - -## Image Renderer Plug-In - -This chart supports enabling [remote image rendering](https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md) - -```yaml -imageRenderer: - enabled: true -``` - -### Image Renderer NetworkPolicy - -By default the image-renderer pods will have a network policy which only allows ingress traffic from the created grafana instance diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/dashboards/custom-dashboard.json b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/dashboards/custom-dashboard.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/dashboards/custom-dashboard.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/NOTES.txt b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/NOTES.txt deleted file mode 100644 index 1fc8436d9..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/NOTES.txt +++ /dev/null @@ -1,54 +0,0 @@ -1. Get your '{{ .Values.adminUser }}' user password by running: - - kubectl get secret --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath="{.data.admin-password}" | base64 --decode ; echo - -2. The Grafana server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster: - - {{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}.svc.cluster.local -{{ if .Values.ingress.enabled }} - If you bind grafana to 80, please update values in values.yaml and reinstall: - ``` - securityContext: - runAsUser: 0 - runAsGroup: 0 - fsGroup: 0 - - command: - - "setcap" - - "'cap_net_bind_service=+ep'" - - "/usr/sbin/grafana-server &&" - - "sh" - - "/run.sh" - ``` - Details refer to https://grafana.com/docs/installation/configuration/#http-port. - Or grafana would always crash. - - From outside the cluster, the server URL(s) are: -{{- range .Values.ingress.hosts }} - http://{{ . }} -{{- end }} -{{ else }} - Get the Grafana URL to visit by running these commands in the same shell: -{{ if contains "NodePort" .Values.service.type -}} - export NODE_PORT=$(kubectl get --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "grafana.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{ else if contains "LoadBalancer" .Values.service.type -}} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get svc --namespace {{ template "grafana.namespace" . }} -w {{ template "grafana.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - http://$SERVICE_IP:{{ .Values.service.port -}} -{{ else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ template "grafana.namespace" . }} -l "app.kubernetes.io/name={{ template "grafana.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - kubectl --namespace {{ template "grafana.namespace" . }} port-forward $POD_NAME 3000 -{{- end }} -{{- end }} - -3. Login with the password from step 1 and the username: {{ .Values.adminUser }} - -{{- if not .Values.persistence.enabled }} -################################################################################# -###### WARNING: Persistence is disabled!!! You will lose your data when ##### -###### the Grafana pod is terminated. ##### -################################################################################# -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_helpers.tpl b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_helpers.tpl deleted file mode 100644 index 76ad78876..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_helpers.tpl +++ /dev/null @@ -1,145 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "grafana.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "grafana.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "grafana.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account -*/}} -{{- define "grafana.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "grafana.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{- define "grafana.serviceAccountNameTest" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (print (include "grafana.fullname" .) "-test") .Values.serviceAccount.nameTest }} -{{- else -}} - {{ default "default" .Values.serviceAccount.nameTest }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "grafana.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- if .Values.extraLabels }} -{{ toYaml .Values.extraLabels }} -{{- end }} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "grafana.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.imageRenderer.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.imageRenderer.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Selector labels ImageRenderer -*/}} -{{- define "grafana.imageRenderer.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Return the appropriate apiVersion for rbac. -*/}} -{{- define "rbac.apiVersion" -}} -{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }} -{{- print "rbac.authorization.k8s.io/v1" -}} -{{- else -}} -{{- print "rbac.authorization.k8s.io/v1beta1" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_pod.tpl b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_pod.tpl deleted file mode 100644 index 2ba9f115c..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/_pod.tpl +++ /dev/null @@ -1,496 +0,0 @@ -{{- define "grafana.pod" -}} -{{- if .Values.schedulerName }} -schedulerName: "{{ .Values.schedulerName }}" -{{- end }} -serviceAccountName: {{ template "grafana.serviceAccountName" . }} -{{- if .Values.securityContext }} -securityContext: -{{ toYaml .Values.securityContext | indent 2 }} -{{- end }} -{{- if .Values.hostAliases }} -hostAliases: -{{ toYaml .Values.hostAliases | indent 2 }} -{{- end }} -{{- if .Values.priorityClassName }} -priorityClassName: {{ .Values.priorityClassName }} -{{- end }} -{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.sidecar.datasources.enabled .Values.sidecar.notifiers.enabled .Values.extraInitContainers) }} -initContainers: -{{- end }} -{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }} - - name: init-chown-data - {{- if .Values.initChownData.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }} - securityContext: - runAsNonRoot: false - runAsUser: 0 - command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}", "/var/lib/grafana"] - resources: -{{ toYaml .Values.initChownData.resources | indent 6 }} - volumeMounts: - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- end }} -{{- if .Values.dashboards }} - - name: download-dashboards - {{- if .Values.downloadDashboardsImage.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }} - command: ["/bin/sh"] - args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh /etc/grafana/download_dashboards.sh" ] - resources: -{{ toYaml .Values.downloadDashboards.resources | indent 6 }} - env: -{{- range $key, $value := .Values.downloadDashboards.env }} - - name: "{{ $key }}" - value: "{{ $value }}" -{{- end }} -{{- if .Values.downloadDashboards.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.downloadDashboards.envFromSecret . }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/download_dashboards.sh" - subPath: download_dashboards.sh - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - {{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: {{ template "grafana.name" . }}-sc-datasources - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - {{- if .Values.sidecar.datasources.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.sidecar.datasources.envFromSecret . }} - {{- end }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.datasources.label }}" - {{- if .Values.sidecar.datasources.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.datasources.labelValue }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/datasources" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.datasources.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.datasources.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: {{ template "grafana.name" . }}-sc-notifiers - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.notifiers.label }}" - - name: FOLDER - value: "/etc/grafana/provisioning/notifiers" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.notifiers.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.notifiers.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} -{{- if .Values.extraInitContainers }} -{{ toYaml .Values.extraInitContainers | indent 2 }} -{{- end }} -{{- if .Values.image.pullSecrets }} -imagePullSecrets: -{{- range .Values.image.pullSecrets }} - - name: {{ . }} -{{- end}} -{{- end }} -containers: -{{- if .Values.sidecar.dashboards.enabled }} - - name: {{ template "grafana.name" . }}-sc-dashboard - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: {{ .Values.sidecar.dashboards.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.dashboards.label }}" - {{- if .Values.sidecar.dashboards.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.dashboards.labelValue }} - {{- end }} - - name: FOLDER - value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.dashboards.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.dashboards.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - {{- if .Values.sidecar.dashboards.folderAnnotation }} - - name: FOLDER_ANNOTATION - value: "{{ .Values.sidecar.dashboards.folderAnnotation }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{- end}} - - name: {{ .Chart.Name }} - {{- if .Values.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}@sha256:{{ .Values.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.command }} - command: - {{- range .Values.command }} - - {{ . }} - {{- end }} - {{- end}} -{{- if .Values.containerSecurityContext }} - securityContext: -{{- toYaml .Values.containerSecurityContext | nindent 6 }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/grafana.ini" - subPath: grafana.ini - {{- if .Values.ldap.enabled }} - - name: ldap - mountPath: "/etc/grafana/ldap.toml" - subPath: ldap.toml - {{- end }} - {{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- if .Values.dashboards }} -{{- range $provider, $dashboards := .Values.dashboards }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} - - name: dashboards-{{ $provider }} - mountPath: "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - subPath: "{{ $key }}.json" -{{- end }} -{{- end }} -{{- end }} -{{- end -}} -{{- if .Values.dashboardsConfigMaps }} -{{- range (keys .Values.dashboardsConfigMaps | sortAlpha) }} - - name: dashboards-{{ . }} - mountPath: "/var/lib/grafana/dashboards/{{ . }}" -{{- end }} -{{- end }} -{{- if .Values.datasources }} - - name: config - mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" - subPath: datasources.yaml -{{- end }} -{{- if .Values.notifiers }} - - name: config - mountPath: "/etc/grafana/provisioning/notifiers/notifiers.yaml" - subPath: notifiers.yaml -{{- end }} -{{- if .Values.dashboardProviders }} - - name: config - mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" - subPath: dashboardproviders.yaml -{{- end }} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{ if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml" - subPath: provider.yaml -{{- end}} -{{- end}} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - subPath: {{ .subPath | default "" }} - {{- end }} - {{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - {{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - ports: - - name: {{ .Values.service.portName }} - containerPort: {{ .Values.service.targetPort }} - protocol: TCP - - name: {{ .Values.podPortName }} - containerPort: 3000 - protocol: TCP - env: - {{- if not .Values.env.GF_SECURITY_ADMIN_USER }} - - name: GF_SECURITY_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.userKey | default "admin-user" }} - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }} - - name: GF_SECURITY_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if .Values.plugins }} - - name: GF_INSTALL_PLUGINS - valueFrom: - configMapKeyRef: - name: {{ template "grafana.fullname" . }} - key: plugins - {{- end }} - {{- if .Values.smtp.existingSecret }} - - name: GF_SMTP_USER - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.userKey | default "user" }} - - name: GF_SMTP_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.passwordKey | default "password" }} - {{- end }} - {{ if .Values.imageRenderer.enabled }} - - name: GF_RENDERING_SERVER_URL - value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render - - name: GF_RENDERING_CALLBACK_URL - value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} - {{ end }} - {{- range $key, $value := .Values.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: -{{ toYaml $value | indent 10 }} - {{- end }} -{{- range $key, $value := .Values.env }} - - name: "{{ tpl $key $ }}" - value: "{{ tpl (print $value) $ }}" -{{- end }} - {{- if .Values.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.envFromSecret . }} - {{- end }} - {{- if .Values.envRenderSecret }} - envFrom: - - secretRef: - name: {{ template "grafana.fullname" . }}-env - {{- end }} - livenessProbe: -{{ toYaml .Values.livenessProbe | indent 6 }} - readinessProbe: -{{ toYaml .Values.readinessProbe | indent 6 }} - resources: -{{ toYaml .Values.resources | indent 6 }} -{{- with .Values.extraContainers }} -{{ tpl . $ | indent 2 }} -{{- end }} -nodeSelector: {{ include "linux-node-selector" . | nindent 2 }} -{{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 2 }} -{{- end }} -{{- with .Values.affinity }} -affinity: -{{ toYaml . | indent 2 }} -{{- end }} -tolerations: {{ include "linux-node-tolerations" . | nindent 2 }} -{{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 2 }} -{{- end }} -volumes: - - name: config - configMap: - name: {{ template "grafana.fullname" . }} -{{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - configMap: - name: {{ .configMap }} -{{- end }} - {{- if .Values.dashboards }} - {{- range (keys .Values.dashboards | sortAlpha) }} - - name: dashboards-{{ . }} - configMap: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ . }} - {{- end }} - {{- end }} - {{- if .Values.dashboardsConfigMaps }} - {{ $root := . }} - {{- range $provider, $name := .Values.dashboardsConfigMaps }} - - name: dashboards-{{ $provider }} - configMap: - name: {{ tpl $name $root }} - {{- end }} - {{- end }} - {{- if .Values.ldap.enabled }} - - name: ldap - secret: - {{- if .Values.ldap.existingSecret }} - secretName: {{ .Values.ldap.existingSecret }} - {{- else }} - secretName: {{ template "grafana.fullname" . }} - {{- end }} - items: - - key: ldap-toml - path: ldap.toml - {{- end }} -{{- if and .Values.persistence.enabled (eq .Values.persistence.type "pvc") }} - - name: storage - persistentVolumeClaim: - claimName: {{ .Values.persistence.existingClaim | default (include "grafana.fullname" .) }} -{{- else if and .Values.persistence.enabled (eq .Values.persistence.type "statefulset") }} -# nothing -{{- else }} - - name: storage -{{- if .Values.persistence.inMemory.enabled }} - emptyDir: - medium: Memory -{{- if .Values.persistence.inMemory.sizeLimit }} - sizeLimit: {{ .Values.persistence.inMemory.sizeLimit }} -{{- end -}} -{{- else }} - emptyDir: {} -{{- end -}} -{{- end -}} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - emptyDir: {} -{{- if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - configMap: - name: {{ template "grafana.fullname" . }}-config-dashboards -{{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - emptyDir: {} -{{- end -}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - emptyDir: {} -{{- end -}} -{{- range .Values.extraSecretMounts }} -{{- if .secretName }} - - name: {{ .name }} - secret: - secretName: {{ .secretName }} - defaultMode: {{ .defaultMode }} -{{- else if .projected }} - - name: {{ .name }} - projected: {{- toYaml .projected | nindent 6 }} -{{- else if .csi }} - - name: {{ .name }} - csi: {{- toYaml .csi | nindent 6 }} -{{- end }} -{{- end }} -{{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} -{{- end }} -{{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - emptyDir: {} -{{- end -}} -{{- if .Values.extraContainerVolumes }} -{{ toYaml .Values.extraContainerVolumes | indent 2 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrole.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrole.yaml deleted file mode 100644 index f09e06563..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrole.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) (not .Values.rbac.useExistingRole) }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- if or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraClusterRoleRules) }} -rules: -{{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end}} -{{- with .Values.rbac.extraClusterRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end}} -{{- end}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrolebinding.yaml deleted file mode 100644 index 4accbfac0..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "grafana.fullname" . }}-clusterrolebinding - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -subjects: - - kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -roleRef: - kind: ClusterRole -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} - apiGroup: rbac.authorization.k8s.io -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap-dashboard-provider.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap-dashboard-provider.yaml deleted file mode 100644 index 65d73858e..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap-dashboard-provider.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.sidecar.dashboards.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-config-dashboards - namespace: {{ template "grafana.namespace" . }} -data: - provider.yaml: |- - apiVersion: 1 - providers: - - name: '{{ .Values.sidecar.dashboards.provider.name }}' - orgId: {{ .Values.sidecar.dashboards.provider.orgid }} - {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - folder: '{{ .Values.sidecar.dashboards.provider.folder }}' - {{- end}} - type: {{ .Values.sidecar.dashboards.provider.type }} - disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }} - allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }} - updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }} - options: - foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }} -{{- end}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap.yaml deleted file mode 100644 index de32b7ab2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/configmap.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -data: -{{- if .Values.plugins }} - plugins: {{ join "," .Values.plugins }} -{{- end }} - grafana.ini: | -{{- range $key, $value := index .Values "grafana.ini" }} - [{{ $key }}] - {{- range $elem, $elemVal := $value }} - {{- if kindIs "invalid" $elemVal }} - {{ $elem }} = - {{- else }} - {{ $elem }} = {{ tpl (toYaml $elemVal) $ }} - {{- end }} - {{- end }} -{{- end }} - -{{- if .Values.datasources }} -{{ $root := . }} - {{- range $key, $value := .Values.datasources }} - {{ $key }}: | -{{ tpl (toYaml $value | indent 4) $root }} - {{- end -}} -{{- end -}} - -{{- if .Values.notifiers }} - {{- range $key, $value := .Values.notifiers }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboards }} - download_dashboards.sh: | - #!/usr/bin/env sh - set -euf - {{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{- range $value.providers }} - mkdir -p {{ .options.path }} - {{- end }} - {{- end }} - {{- end }} - - {{- range $provider, $dashboards := .Values.dashboards }} - {{- range $key, $value := $dashboards }} - {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }} - curl -skf \ - --connect-timeout 60 \ - --max-time 60 \ - {{- if not $value.b64content }} - -H "Accept: application/json" \ - {{- if $value.token }} - -H "Authorization: token {{ $value.token }}" \ - {{- end }} - -H "Content-Type: application/json;charset=UTF-8" \ - {{ end }} - {{- if $value.url -}}"{{ $value.url }}"{{- else -}}"https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download"{{- end -}}{{ if $value.datasource }} | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g'{{ end }}{{- if $value.b64content -}} | base64 -d {{- end -}} \ - > "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - {{- end -}} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/dashboards-json-configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/dashboards-json-configmap.yaml deleted file mode 100644 index 59e0be641..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/dashboards-json-configmap.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if .Values.dashboards }} -{{ $files := .Files }} -{{- range $provider, $dashboards := .Values.dashboards }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ $provider }} - namespace: {{ template "grafana.namespace" $ }} - labels: - {{- include "grafana.labels" $ | nindent 4 }} - dashboard-provider: {{ $provider }} -{{- if $dashboards }} -data: -{{- $dashboardFound := false }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} -{{- $dashboardFound = true }} -{{ print $key | indent 2 }}.json: -{{- if hasKey $value "json" }} - |- -{{ $value.json | indent 6 }} -{{- end }} -{{- if hasKey $value "file" }} -{{ toYaml ( $files.Get $value.file ) | indent 4}} -{{- end }} -{{- end }} -{{- end }} -{{- if not $dashboardFound }} - {} -{{- end }} -{{- end }} ---- -{{- end }} - -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/deployment.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/deployment.yaml deleted file mode 100644 index 4d77794cd..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/deployment.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{ if (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc")) }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- with .Values.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- if .Values.envRenderSecret }} - checksum/secret-env: {{ include (print $.Template.BasePath "/secret-env.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/headless-service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/headless-service.yaml deleted file mode 100644 index 2fa816e04..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/headless-service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-headless - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - clusterIP: None - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - type: ClusterIP -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-deployment.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-deployment.yaml deleted file mode 100644 index d17b9dfed..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.labels }} -{{ toYaml .Values.imageRenderer.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.imageRenderer.replicas }} - revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} -{{- with .Values.imageRenderer.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 8 }} -{{- with .Values.imageRenderer.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -{{- with .Values.imageRenderer.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - - {{- if .Values.imageRenderer.schedulerName }} - schedulerName: "{{ .Values.imageRenderer.schedulerName }}" - {{- end }} - {{- if .Values.imageRenderer.serviceAccountName }} - serviceAccountName: "{{ .Values.imageRenderer.serviceAccountName }}" - {{- else }} - serviceAccountName: {{ template "grafana.serviceAccountName" . }} - {{- end }} - {{- if .Values.imageRenderer.securityContext }} - securityContext: - {{ toYaml .Values.imageRenderer.securityContext | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.hostAliases }} - hostAliases: - {{ toYaml .Values.imageRenderer.hostAliases | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.priorityClassName }} - priorityClassName: {{ .Values.imageRenderer.priorityClassName }} - {{- end }} - {{- if .Values.imageRenderer.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.imageRenderer.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - containers: - - name: {{ .Chart.Name }}-image-renderer - {{- if .Values.imageRenderer.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.imageRenderer.image.pullPolicy }} - {{- if .Values.imageRenderer.command }} - command: - {{- range .Values.imageRenderer.command }} - - {{ . }} - {{- end }} - {{- end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - containerPort: {{ .Values.imageRenderer.service.port }} - protocol: TCP - env: - - name: HTTP_PORT - value: {{ .Values.imageRenderer.service.port | quote }} - {{- range $key, $value := .Values.imageRenderer.env }} - - name: {{ $key | quote }} - value: {{ $value | quote }} - {{- end }} - securityContext: - capabilities: - drop: ['all'] - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: image-renderer-tmpfs - {{- with .Values.imageRenderer.resources }} - resources: -{{ toYaml . | indent 12 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.imageRenderer.nodeSelector }} -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.imageRenderer.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - {{- if .Values.imageRenderer.tolerations }} -{{ toYaml . | indent 8 }} - {{- end }} - volumes: - - name: image-renderer-tmpfs - emptyDir: {} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-network-policy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-network-policy.yaml deleted file mode 100644 index f8ca73aab..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-network-policy.yaml +++ /dev/null @@ -1,76 +0,0 @@ -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitIngress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-ingress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer ingress traffic from grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Ingress - ingress: - - ports: - - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - from: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} - -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitEgress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-egress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer egress traffic to grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Egress - egress: - # allow dns resolution - - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - # talk only to grafana - - ports: - - port: {{ .Values.service.port }} - protocol: TCP - to: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-service.yaml deleted file mode 100644 index f5d3eb02f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/image-renderer-service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.service.labels }} -{{ toYaml .Values.imageRenderer.service.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - type: ClusterIP - {{- if .Values.imageRenderer.service.clusterIP }} - clusterIP: {{ .Values.imageRenderer.service.clusterIP }} - {{end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - targetPort: {{ .Values.imageRenderer.service.targetPort }} - selector: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} -{{ end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/ingress.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/ingress.yaml deleted file mode 100644 index 44ebfc950..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/ingress.yaml +++ /dev/null @@ -1,80 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "grafana.fullname" . -}} -{{- $servicePort := .Values.service.port -}} -{{- $ingressPath := .Values.ingress.path -}} -{{- $ingressPathType := .Values.ingress.pathType -}} -{{- $extraPaths := .Values.ingress.extraPaths -}} -{{- $newAPI := .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}} -{{- if $newAPI -}} -apiVersion: networking.k8s.io/v1 -{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} -apiVersion: networking.k8s.io/v1beta1 -{{- else }} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.ingress.labels }} -{{ toYaml .Values.ingress.labels | indent 4 }} -{{- end }} - {{- if .Values.ingress.annotations }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ tpl $value $ | quote }} - {{- end }} - {{- end }} -spec: - {{- if .Values.ingress.ingressClassName }} - ingressClassName: {{ .Values.ingress.ingressClassName }} - {{- end -}} -{{- if .Values.ingress.tls }} - tls: -{{ tpl (toYaml .Values.ingress.tls) $ | indent 4 }} -{{- end }} - rules: - {{- if .Values.ingress.hosts }} - {{- range .Values.ingress.hosts }} - - host: {{ tpl . $}} - http: - paths: -{{ if $extraPaths }} -{{ toYaml $extraPaths | indent 10 }} -{{- end }} - - path: {{ $ingressPath }} - {{- if $newAPI }} - pathType: {{ $ingressPathType }} - {{- end }} - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end }} - {{- else }} - - http: - paths: - - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - pathType: {{ $ingressPathType }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- if $ingressPath }} - path: {{ $ingressPath }} - {{- end }} - {{- end -}} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/nginx-config.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/nginx-config.yaml deleted file mode 100644 index f847c51ce..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/nginx-config.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: grafana-nginx-proxy-config - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - nginx.conf: |- - worker_processes auto; - error_log /dev/stdout warn; - pid /var/cache/nginx/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - log_format main '[$time_local - $status] $remote_addr - $remote_user $request ($http_referer)'; - - proxy_connect_timeout 10; - proxy_read_timeout 180; - proxy_send_timeout 5; - proxy_buffering off; - proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my_zone:100m inactive=1d max_size=10g; - - server { - listen 8080; - access_log off; - - gzip on; - gzip_min_length 1k; - gzip_comp_level 2; - gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png; - gzip_vary on; - gzip_disable "MSIE [1-6]\."; - - proxy_set_header Host $host; - - location /api/dashboards { - proxy_pass http://localhost:3000; - } - - location /api/search { - proxy_pass http://localhost:3000; - - sub_filter_types application/json; - sub_filter_once off; - sub_filter '"url":"/d' '"url":"d'; - } - - location / { - proxy_cache my_zone; - proxy_cache_valid 200 302 1d; - proxy_cache_valid 301 30d; - proxy_cache_valid any 5m; - proxy_cache_bypass $http_cache_control; - add_header X-Proxy-Cache $upstream_cache_status; - add_header Cache-Control "public"; - - proxy_pass http://localhost:3000/; - - sub_filter_types text/html; - sub_filter_once off; - sub_filter '"appSubUrl":""' '"appSubUrl":"."'; - sub_filter '"url":"/' '"url":"./'; - sub_filter ':"/avatar/' ':"avatar/'; - - if ($request_filename ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) { - expires 90d; - } - } - } - } diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/poddisruptionbudget.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/poddisruptionbudget.yaml deleted file mode 100644 index 61813a436..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.podDisruptionBudget }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -spec: -{{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} -{{- end }} -{{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} -{{- end }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/podsecuritypolicy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/podsecuritypolicy.yaml deleted file mode 100644 index 19da50791..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- if .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.rbac.pspAnnotations }} - annotations: {{ toYaml .Values.rbac.pspAnnotations | nindent 4 }} -{{- end }} -spec: - privileged: false - allowPrivilegeEscalation: false - requiredDropCapabilities: - # Default set from Docker, without DAC_OVERRIDE or CHOWN - - FOWNER - - FSETID - - KILL - - SETGID - - SETUID - - SETPCAP - - NET_BIND_SERVICE - - NET_RAW - - SYS_CHROOT - - MKNOD - - AUDIT_WRITE - - SETFCAP - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'csi' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'RunAsAny' - fsGroup: - rule: 'RunAsAny' - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/pvc.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/pvc.yaml deleted file mode 100644 index 8d93f5c23..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/pvc.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.persistence.annotations }} - annotations: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.persistence.finalizers }} - finalizers: -{{ toYaml . | indent 4 }} - {{- end }} -spec: - accessModes: - {{- range .Values.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ .Values.persistence.size | quote }} - {{- if .Values.persistence.storageClassName }} - storageClassName: {{ .Values.persistence.storageClassName }} - {{- end -}} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 6 }} - {{- end }} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/role.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/role.yaml deleted file mode 100644 index 54c3fb0b2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: Role -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraRoleRules))) }} -rules: -{{- if .Values.rbac.pspEnabled }} -- apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}] -{{- end }} -{{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled) }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end }} -{{- with .Values.rbac.extraRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/rolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/rolebinding.yaml deleted file mode 100644 index 34f1ad6f8..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/rolebinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }} -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret-env.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret-env.yaml deleted file mode 100644 index 5c09313e6..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret-env.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.envRenderSecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }}-env - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $val := .Values.envRenderSecret }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end -}} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret.yaml deleted file mode 100644 index 4fdd817da..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/secret.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: - {{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }} - admin-user: {{ .Values.adminUser | b64enc | quote }} - {{- if .Values.adminPassword }} - admin-password: {{ .Values.adminPassword | b64enc | quote }} - {{- else }} - admin-password: {{ randAlphaNum 40 | b64enc | quote }} - {{- end }} - {{- end }} - {{- if not .Values.ldap.existingSecret }} - ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/service.yaml deleted file mode 100644 index 276456698..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/service.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.service.labels }} -{{ toYaml .Values.service.labels | indent 4 }} -{{- end }} -{{- with .Values.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: -{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }} - type: ClusterIP - {{- if .Values.service.clusterIP }} - clusterIP: {{ .Values.service.clusterIP }} - {{end}} -{{- else if eq .Values.service.type "LoadBalancer" }} - type: {{ .Values.service.type }} - {{- if .Values.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.service.loadBalancerIP }} - {{- end }} - {{- if .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: -{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }} - {{- end -}} -{{- else }} - type: {{ .Values.service.type }} -{{- end }} -{{- if .Values.service.externalIPs }} - externalIPs: -{{ toYaml .Values.service.externalIPs | indent 4 }} -{{- end }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP - targetPort: {{ .Values.service.targetPort }} -{{ if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{.Values.service.nodePort}} -{{ end }} - {{- if .Values.extraExposePorts }} - {{- tpl (toYaml .Values.extraExposePorts) . | indent 4 }} - {{- end }} - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/serviceaccount.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/serviceaccount.yaml deleted file mode 100644 index 7576eeef0..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.serviceAccount.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/servicemonitor.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/servicemonitor.yaml deleted file mode 100644 index 23288523f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/servicemonitor.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "grafana.fullname" . }} - {{- if .Values.serviceMonitor.namespace }} - namespace: {{ .Values.serviceMonitor.namespace }} - {{- end }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- if .Values.serviceMonitor.labels }} - {{- toYaml .Values.serviceMonitor.labels | nindent 4 }} - {{- end }} -spec: - endpoints: - - interval: {{ .Values.serviceMonitor.interval }} - {{- if .Values.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: true - port: {{ .Values.service.portName }} - path: {{ .Values.serviceMonitor.path }} - scheme: {{ .Values.serviceMonitor.scheme }} - {{- if .Values.serviceMonitor.tlsConfig }} - tlsConfig: - {{- toYaml .Values.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - relabelings: - {{- toYaml .Values.serviceMonitor.relabelings | nindent 4 }} - {{- end }} - jobLabel: "{{ .Release.Name }}" - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 8 }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/statefulset.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/statefulset.yaml deleted file mode 100644 index b2b4616f3..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/statefulset.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - serviceName: {{ template "grafana.fullname" . }}-headless - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} - {{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} - volumeClaimTemplates: - - metadata: - name: storage - spec: - accessModes: {{ .Values.persistence.accessModes }} - storageClassName: {{ .Values.persistence.storageClassName }} - resources: - requests: - storage: {{ .Values.persistence.size }} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 10 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-configmap.yaml deleted file mode 100644 index ff53aaf1b..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - run.sh: |- - @test "Test Health" { - url="http://{{ template "grafana.fullname" . }}/api/health" - - code=$(wget --server-response --spider --timeout 10 --tries 1 ${url} 2>&1 | awk '/^ HTTP/{print $2}') - [ "$code" == "200" ] - } -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-podsecuritypolicy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-podsecuritypolicy.yaml deleted file mode 100644 index 1acd65128..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-podsecuritypolicy.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -spec: - allowPrivilegeEscalation: true - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - fsGroup: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - runAsUser: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - projected - - csi - - secret -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-role.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-role.yaml deleted file mode 100644 index 6b10677ae..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}-test] -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-rolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-rolebinding.yaml deleted file mode 100644 index 58fa5e78b..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-rolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "grafana.fullname" . }}-test -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-serviceaccount.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-serviceaccount.yaml deleted file mode 100644 index 5c3350733..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test-serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test.yaml deleted file mode 100644 index cdc86e5f2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/templates/tests/test.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: Pod -metadata: - name: {{ template "grafana.fullname" . }}-test - labels: - {{- include "grafana.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test-success - namespace: {{ template "grafana.namespace" . }} -spec: - serviceAccountName: {{ template "grafana.serviceAccountNameTest" . }} - {{- if .Values.testFramework.securityContext }} - securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }} - {{- end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 4 }} - {{- end }} - containers: - - name: {{ .Release.Name }}-test - image: "{{ .Values.testFramework.image}}:{{ .Values.testFramework.tag }}" - imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}" - command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] - volumeMounts: - - mountPath: /tests - name: tests - readOnly: true - volumes: - - name: tests - configMap: - name: {{ template "grafana.fullname" . }}-test - restartPolicy: Never -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/values.yaml b/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/values.yaml deleted file mode 100644 index 9491c1a1f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.401+up6.6.4/values.yaml +++ /dev/null @@ -1,732 +0,0 @@ -global: - cattle: - systemDefaultRegistry: "" - -autoscaling: - enabled: false -rbac: - create: true - ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true) - # useExistingRole: name-of-some-(cluster)role - pspEnabled: true - pspAnnotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - namespaced: false - extraRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] - extraClusterRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] -serviceAccount: - create: true - name: - nameTest: -# annotations: -# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here - -replicas: 1 - -## See `kubectl explain poddisruptionbudget.spec` for more -## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} -# minAvailable: 1 -# maxUnavailable: 1 - -## See `kubectl explain deployment.spec.strategy` for more -## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy -deploymentStrategy: - type: RollingUpdate - -readinessProbe: - httpGet: - path: /api/health - port: 3000 - -livenessProbe: - httpGet: - path: /api/health - port: 3000 - initialDelaySeconds: 60 - timeoutSeconds: 30 - failureThreshold: 10 - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: "default-scheduler" - -image: - repository: rancher/mirrored-grafana-grafana - tag: 7.4.5 - sha: "" - pullPolicy: IfNotPresent - - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistrKeySecretName - -testFramework: - enabled: true - image: "rancher/mirrored-bats-bats" - tag: "v1.1.0" - imagePullPolicy: IfNotPresent - securityContext: - runAsNonRoot: true - runAsUser: 1000 - -securityContext: - runAsNonRoot: true - runAsUser: 472 - runAsGroup: 472 - fsGroup: 472 - -containerSecurityContext: - {} - -extraConfigmapMounts: [] - # - name: certs-configmap - # mountPath: /etc/grafana/ssl/ - # subPath: certificates.crt # (optional) - # configMap: certs-configmap - # readOnly: true - - -extraEmptyDirMounts: [] - # - name: provisioning-notifiers - # mountPath: /etc/grafana/provisioning/notifiers - - -# Apply extra labels to common labels. -extraLabels: {} - -## Assign a PriorityClassName to pods if set -# priorityClassName: - -downloadDashboardsImage: - repository: rancher/mirrored-curlimages-curl - tag: 7.73.0 - sha: "" - pullPolicy: IfNotPresent - -downloadDashboards: - env: {} - envFromSecret: "" - resources: {} - -## Pod Annotations -# podAnnotations: {} - -## Pod Labels -# podLabels: {} - -podPortName: grafana - -## Deployment annotations -# annotations: {} - -## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service). -## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it. -## ref: http://kubernetes.io/docs/user-guide/services/ -## -service: - type: ClusterIP - port: 80 - targetPort: 3000 - # targetPort: 4181 To be used with a proxy extraContainer - annotations: {} - labels: {} - portName: service - -serviceMonitor: - ## If true, a ServiceMonitor CRD is created for a prometheus operator - ## https://github.com/coreos/prometheus-operator - ## - enabled: false - path: /metrics - # namespace: monitoring (defaults to use the namespace this chart is deployed to) - labels: {} - interval: 1m - scheme: http - tlsConfig: {} - scrapeTimeout: 30s - relabelings: [] - -extraExposePorts: [] - # - name: keycloak - # port: 8080 - # targetPort: 8080 - # type: ClusterIP - -# overrides pod.spec.hostAliases in the grafana deployment's pods -hostAliases: [] - # - ip: "1.2.3.4" - # hostnames: - # - "my.host.com" - -ingress: - enabled: false - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - # Values can be templated - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - labels: {} - path: / - - # pathType is only for k8s > 1.19 - pathType: Prefix - - hosts: - - chart-example.local - ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services. - extraPaths: [] - # - path: /* - # backend: - # serviceName: ssl-redirect - # servicePort: use-annotation - ## Or for k8s > 1.19 - # - path: /* - # pathType: Prefix - # backend: - # service: - # name: ssl-redirect - # port: - # name: service - - - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} -# limits: -# cpu: 100m -# memory: 128Mi -# requests: -# cpu: 100m -# memory: 128Mi - -## Node labels for pod assignment -## ref: https://kubernetes.io/docs/user-guide/node-selection/ -# -nodeSelector: {} - -## Tolerations for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -## -tolerations: [] - -## Affinity for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -## -affinity: {} - -extraInitContainers: [] - -## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod -extraContainers: | -# - name: proxy -# image: quay.io/gambol99/keycloak-proxy:latest -# args: -# - -provider=github -# - -client-id= -# - -client-secret= -# - -github-org= -# - -email-domain=* -# - -cookie-secret= -# - -http-address=http://0.0.0.0:4181 -# - -upstream-url=http://127.0.0.1:3000 -# ports: -# - name: proxy-web -# containerPort: 4181 - -## Volumes that can be used in init containers that will not be mounted to deployment pods -extraContainerVolumes: [] -# - name: volume-from-secret -# secret: -# secretName: secret-to-mount -# - name: empty-dir-volume -# emptyDir: {} - -## Enable persistence using Persistent Volume Claims -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## -persistence: - type: pvc - enabled: false - # storageClassName: default - accessModes: - - ReadWriteOnce - size: 10Gi - # annotations: {} - finalizers: - - kubernetes.io/pvc-protection - # selectorLabels: {} - # subPath: "" - # existingClaim: - - ## If persistence is not enabled, this allows to mount the - ## local storage in-memory to improve performance - ## - inMemory: - enabled: false - ## The maximum usage on memory medium EmptyDir would be - ## the minimum value between the SizeLimit specified - ## here and the sum of memory limits of all containers in a pod - ## - # sizeLimit: 300Mi - -initChownData: - ## If false, data ownership will not be reset at startup - ## This allows the prometheus-server to be run with an arbitrary user - ## - enabled: true - - ## initChownData container image - ## - image: - repository: rancher/mirrored-library-busybox - tag: "1.31.1" - sha: "" - pullPolicy: IfNotPresent - - ## initChownData resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - -# Administrator credentials when not using an existing secret (see below) -adminUser: admin -# adminPassword: strongpassword - -# Use an existing secret for the admin user. -admin: - existingSecret: "" - userKey: admin-user - passwordKey: admin-password - -## Define command to be executed at startup by grafana container -## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/) -## Default is "run.sh" as defined in grafana's Dockerfile -# command: -# - "sh" -# - "/run.sh" - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: - -## Extra environment variables that will be pass onto deployment pods -## -## to provide grafana with access to CloudWatch on AWS EKS: -## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later) -## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the -## same oidc eks provider as noted before (same as the existing line) -## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name -## -## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana", -## -## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess -## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name) -## -## env: -## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here -## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token -## AWS_REGION: us-east-1 -## -## 5. uncomment the EKS section in extraSecretMounts: below -## 6. uncomment the annotation section in the serviceAccount: above -## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn - -env: {} - -## "valueFrom" environment variable references that will be added to deployment pods -## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core -## Renders in container spec as: -## env: -## ... -## - name: -## valueFrom: -## -envValueFrom: {} - -## The name of a secret in the same kubernetes namespace which contain values to be added to the environment -## This can be useful for auth tokens, etc. Value is templated. -envFromSecret: "" - -## Sensible environment variables that will be rendered as new secret object -## This can be useful for auth tokens, etc -envRenderSecret: {} - -## Additional grafana server secret mounts -# Defines additional mounts with secrets. Secrets must be manually created in the namespace. -extraSecretMounts: [] - # - name: secret-files - # mountPath: /etc/secrets - # secretName: grafana-secret-files - # readOnly: true - # subPath: "" - # - # for AWS EKS (cloudwatch) use the following (see also instruction in env: above) - # - name: aws-iam-token - # mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount - # readOnly: true - # projected: - # defaultMode: 420 - # sources: - # - serviceAccountToken: - # audience: sts.amazonaws.com - # expirationSeconds: 86400 - # path: token - # - # for CSI e.g. Azure Key Vault use the following - # - name: secrets-store-inline - # mountPath: /run/secrets - # readOnly: true - # csi: - # driver: secrets-store.csi.k8s.io - # readOnly: true - # volumeAttributes: - # secretProviderClass: "akv-grafana-spc" - # nodePublishSecretRef: # Only required when using service principal mode - # name: grafana-akv-creds # Only required when using service principal mode - -## Additional grafana server volume mounts -# Defines additional volume mounts. -extraVolumeMounts: [] - # - name: extra-volume - # mountPath: /mnt/volume - # readOnly: true - # existingClaim: volume-claim - -## Pass the plugins you want installed as a list. -## -plugins: [] - # - digrich-bubblechart-panel - # - grafana-clock-panel - -## Configure grafana datasources -## ref: http://docs.grafana.org/administration/provisioning/#datasources -## -datasources: {} -# datasources.yaml: -# apiVersion: 1 -# datasources: -# - name: Prometheus -# type: prometheus -# url: http://prometheus-prometheus-server -# access: proxy -# isDefault: true -# - name: CloudWatch -# type: cloudwatch -# access: proxy -# uid: cloudwatch -# editable: false -# jsonData: -# authType: credentials -# defaultRegion: us-east-1 - -## Configure notifiers -## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels -## -notifiers: {} -# notifiers.yaml: -# notifiers: -# - name: email-notifier -# type: email -# uid: email1 -# # either: -# org_id: 1 -# # or -# org_name: Main Org. -# is_default: true -# settings: -# addresses: an_email_address@example.com -# delete_notifiers: - -## Configure grafana dashboard providers -## ref: http://docs.grafana.org/administration/provisioning/#dashboards -## -## `path` must be /var/lib/grafana/dashboards/ -## -dashboardProviders: {} -# dashboardproviders.yaml: -# apiVersion: 1 -# providers: -# - name: 'default' -# orgId: 1 -# folder: '' -# type: file -# disableDeletion: false -# editable: true -# options: -# path: /var/lib/grafana/dashboards/default - -## Configure grafana dashboard to import -## NOTE: To use dashboards you must also enable/configure dashboardProviders -## ref: https://grafana.com/dashboards -## -## dashboards per provider, use provider name as key. -## -dashboards: {} - # default: - # some-dashboard: - # json: | - # $RAW_JSON - # custom-dashboard: - # file: dashboards/custom-dashboard.json - # prometheus-stats: - # gnetId: 2 - # revision: 2 - # datasource: Prometheus - # local-dashboard: - # url: https://example.com/repository/test.json - # token: '' - # local-dashboard-base64: - # url: https://example.com/repository/test-b64.json - # token: '' - # b64content: true - -## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value. -## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both. -## ConfigMap data example: -## -## data: -## example-dashboard.json: | -## RAW_JSON -## -dashboardsConfigMaps: {} -# default: "" - -## Grafana's primary configuration -## NOTE: values in map will be converted to ini format -## ref: http://docs.grafana.org/installation/configuration/ -## -grafana.ini: - paths: - data: /var/lib/grafana/data - logs: /var/log/grafana - plugins: /var/lib/grafana/plugins - provisioning: /etc/grafana/provisioning - analytics: - check_for_updates: true - log: - mode: console - grafana_net: - url: https://grafana.net -## grafana Authentication can be enabled with the following values on grafana.ini - # server: - # The full public facing url you use in browser, used for redirects and emails - # root_url: - # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana - # auth.github: - # enabled: false - # allow_sign_up: false - # scopes: user:email,read:org - # auth_url: https://github.com/login/oauth/authorize - # token_url: https://github.com/login/oauth/access_token - # api_url: https://api.github.com/user - # team_ids: - # allowed_organizations: - # client_id: - # client_secret: -## LDAP Authentication can be enabled with the following values on grafana.ini -## NOTE: Grafana will fail to start if the value for ldap.toml is invalid - # auth.ldap: - # enabled: true - # allow_sign_up: true - # config_file: /etc/grafana/ldap.toml - -## Grafana's LDAP configuration -## Templated by the template in _helpers.tpl -## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled -## ref: http://docs.grafana.org/installation/configuration/#auth-ldap -## ref: http://docs.grafana.org/installation/ldap/#configuration -ldap: - enabled: false - # `existingSecret` is a reference to an existing secret containing the ldap configuration - # for Grafana in a key `ldap-toml`. - existingSecret: "" - # `config` is the content of `ldap.toml` that will be stored in the created secret - config: "" - # config: |- - # verbose_logging = true - - # [[servers]] - # host = "my-ldap-server" - # port = 636 - # use_ssl = true - # start_tls = false - # ssl_skip_verify = false - # bind_dn = "uid=%s,ou=users,dc=myorg,dc=com" - -## Grafana's SMTP configuration -## NOTE: To enable, grafana.ini must be configured with smtp.enabled -## ref: http://docs.grafana.org/installation/configuration/#smtp -smtp: - # `existingSecret` is a reference to an existing secret containing the smtp configuration - # for Grafana. - existingSecret: "" - userKey: "user" - passwordKey: "password" - -## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders -## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards -sidecar: - image: - repository: rancher/mirrored-kiwigrid-k8s-sidecar - tag: 1.10.7 - sha: "" - imagePullPolicy: IfNotPresent - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi - # skipTlsVerify Set to true to skip tls verification for kube api calls - # skipTlsVerify: true - enableUniqueFilenames: false - dashboards: - enabled: false - SCProvider: true - # label that the configmaps with dashboards are marked with - label: grafana_dashboard - # value of label that the configmaps with dashboards are set to - labelValue: null - # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set) - folder: /tmp/dashboards - # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead - defaultFolderName: null - # If specified, the sidecar will search for dashboard config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - # If specified, the sidecar will look for annotation with this name to create folder and put graph here. - # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure. - folderAnnotation: null - # provider configuration that lets grafana manage the dashboards - provider: - # name of the provider, should be unique - name: sidecarProvider - # orgid as configured in grafana - orgid: 1 - # folder in which the dashboards should be imported in grafana - folder: '' - # type of the provider - type: file - # disableDelete to activate a import-only behaviour - disableDelete: false - # allow updating provisioned dashboards from the UI - allowUiUpdates: false - # allow Grafana to replicate dashboard structure from filesystem - foldersFromFilesStructure: false - datasources: - enabled: false - # label that the configmaps with datasources are marked with - label: grafana_datasource - # value of label that the configmaps with datasources are set to - labelValue: null - # If specified, the sidecar will search for datasource config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - - ## The name of a secret in the same kubernetes namespace which contain values to be added to the environment - ## This can be useful for database passwords, etc. Value is templated. - envFromSecret: "" - notifiers: - enabled: false - # label that the configmaps with notifiers are marked with - label: grafana_notifier - # If specified, the sidecar will search for notifier config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - -## Override the deployment namespace -## -namespaceOverride: "" - -## Number of old ReplicaSets to retain -## -revisionHistoryLimit: 10 - -## Add a seperate remote image renderer deployment/service -imageRenderer: - # Enable the image-renderer deployment & service - enabled: false - replicas: 1 - image: - # image-renderer Image repository - repository: rancher/mirrored-grafana-grafana-image-renderer - # image-renderer Image tag - tag: 2.0.1 - # image-renderer Image sha (optional) - sha: "" - # image-renderer ImagePullPolicy - pullPolicy: Always - # extra environment variables - env: - HTTP_HOST: "0.0.0.0" - # RENDERING_ARGS: --disable-gpu,--window-size=1280x758 - # RENDERING_MODE: clustered - # image-renderer deployment serviceAccount - serviceAccountName: "" - # image-renderer deployment securityContext - securityContext: {} - # image-renderer deployment Host Aliases - hostAliases: [] - # image-renderer deployment priority class - priorityClassName: '' - service: - # image-renderer service port name - portName: 'http' - # image-renderer service port used by both service and deployment - port: 8081 - targetPort: 8081 - # In case a sub_path is used this needs to be added to the image renderer callback - grafanaSubPath: "" - # name of the image-renderer port on the pod - podPortName: http - # number of image-renderer replica sets to keep - revisionHistoryLimit: 10 - networkPolicy: - # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods - limitIngress: true - # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods - limitEgress: false - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/.helmignore b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/.helmignore deleted file mode 100644 index 8cade1318..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/.helmignore +++ /dev/null @@ -1,23 +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 -.vscode -.project -.idea/ -*.tmproj -OWNERS diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/Chart.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/Chart.yaml deleted file mode 100644 index 1840e746c..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-grafana -apiVersion: v2 -appVersion: 7.4.5 -description: The leading tool for querying and visualizing time series and metrics. -home: https://grafana.net -icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png -kubeVersion: ^1.8.0-0 -maintainers: -- email: zanhsieh@gmail.com - name: zanhsieh -- email: rluckie@cisco.com - name: rtluckie -- email: maor.friedman@redhat.com - name: maorfr -- email: miroslav.hadzhiev@gmail.com - name: Xtigyro -- email: mail@torstenwalter.de - name: torstenwalter -name: rancher-grafana -sources: -- https://github.com/grafana/grafana -type: application -version: 6.6.402+up6.6.4 diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/README.md b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/README.md deleted file mode 100644 index 957f019ec..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/README.md +++ /dev/null @@ -1,514 +0,0 @@ -# Grafana Helm Chart - -* Installs the web dashboarding system [Grafana](http://grafana.org/) - -## Get Repo Info - -```console -helm repo add grafana https://grafana.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```console -helm install my-release grafana/grafana -``` - -## Uninstalling the Chart - -To uninstall/delete the my-release deployment: - -```console -helm delete my-release -``` - -The command removes all the Kubernetes components associated with the chart and deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### To 4.0.0 (And 3.12.1) - -This version requires Helm >= 2.12.0. - -### To 5.0.0 - -You have to add --force to your helm upgrade command as the labels of the chart have changed. - -### To 6.0.0 - -This version requires Helm >= 3.1.0. - -## Configuration - -| Parameter | Description | Default | -|-------------------------------------------|-----------------------------------------------|---------------------------------------------------------| -| `replicas` | Number of nodes | `1` | -| `podDisruptionBudget.minAvailable` | Pod disruption minimum available | `nil` | -| `podDisruptionBudget.maxUnavailable` | Pod disruption maximum unavailable | `nil` | -| `deploymentStrategy` | Deployment strategy | `{ "type": "RollingUpdate" }` | -| `livenessProbe` | Liveness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } "initialDelaySeconds": 60, "timeoutSeconds": 30, "failureThreshold": 10 }` | -| `readinessProbe` | Readiness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } }`| -| `securityContext` | Deployment securityContext | `{"runAsUser": 472, "runAsGroup": 472, "fsGroup": 472}` | -| `priorityClassName` | Name of Priority Class to assign pods | `nil` | -| `image.repository` | Image repository | `grafana/grafana` | -| `image.tag` | Image tag (`Must be >= 5.0.0`) | `7.4.5` | -| `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Image pull secrets | `{}` | -| `service.type` | Kubernetes service type | `ClusterIP` | -| `service.port` | Kubernetes port where service is exposed | `80` | -| `service.portName` | Name of the port on the service | `service` | -| `service.targetPort` | Internal service is port | `3000` | -| `service.nodePort` | Kubernetes service nodePort | `nil` | -| `service.annotations` | Service annotations | `{}` | -| `service.labels` | Custom labels | `{}` | -| `service.clusterIP` | internal cluster service IP | `nil` | -| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `nil` | -| `service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to lb (if supported) | `[]` | -| `service.externalIPs` | service external IP addresses | `[]` | -| `extraExposePorts` | Additional service ports for sidecar containers| `[]` | -| `hostAliases` | adds rules to the pod's /etc/hosts | `[]` | -| `ingress.enabled` | Enables Ingress | `false` | -| `ingress.annotations` | Ingress annotations (values are templated) | `{}` | -| `ingress.labels` | Custom labels | `{}` | -| `ingress.path` | Ingress accepted path | `/` | -| `ingress.pathType` | Ingress type of path | `Prefix` | -| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | -| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Toleration labels for pod assignment | `[]` | -| `affinity` | Affinity settings for pod assignment | `{}` | -| `extraInitContainers` | Init containers to add to the grafana pod | `{}` | -| `extraContainers` | Sidecar containers to add to the grafana pod | `{}` | -| `extraContainerVolumes` | Volumes that can be mounted in sidecar containers | `[]` | -| `extraLabels` | Custom labels for all manifests | `{}` | -| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | -| `persistence.enabled` | Use persistent volume to store data | `false` | -| `persistence.type` | Type of persistence (`pvc` or `statefulset`) | `pvc` | -| `persistence.size` | Size of persistent volume claim | `10Gi` | -| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | -| `persistence.storageClassName` | Type of persistent volume claim | `nil` | -| `persistence.accessModes` | Persistence access modes | `[ReadWriteOnce]` | -| `persistence.annotations` | PersistentVolumeClaim annotations | `{}` | -| `persistence.finalizers` | PersistentVolumeClaim finalizers | `[ "kubernetes.io/pvc-protection" ]` | -| `persistence.subPath` | Mount a sub dir of the persistent volume | `nil` | -| `persistence.inMemory.enabled` | If persistence is not enabled, whether to mount the local storage in-memory to improve performance | `false` | -| `persistence.inMemory.sizeLimit` | SizeLimit for the in-memory local storage | `nil` | -| `initChownData.enabled` | If false, don't reset data ownership at startup | true | -| `initChownData.image.repository` | init-chown-data container image repository | `busybox` | -| `initChownData.image.tag` | init-chown-data container image tag | `1.31.1` | -| `initChownData.image.sha` | init-chown-data container image sha (optional)| `""` | -| `initChownData.image.pullPolicy` | init-chown-data container image pull policy | `IfNotPresent` | -| `initChownData.resources` | init-chown-data pod resource requests & limits | `{}` | -| `schedulerName` | Alternate scheduler name | `nil` | -| `env` | Extra environment variables passed to pods | `{}` | -| `envValueFrom` | Environment variables from alternate sources. See the API docs on [EnvVarSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core) for format details. | `{}` | -| `envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `envRenderSecret` | Sensible environment variables passed to pods and stored as secret | `{}` | -| `extraSecretMounts` | Additional grafana server secret mounts | `[]` | -| `extraVolumeMounts` | Additional grafana server volume mounts | `[]` | -| `extraConfigmapMounts` | Additional grafana server configMap volume mounts | `[]` | -| `extraEmptyDirMounts` | Additional grafana server emptyDir volume mounts | `[]` | -| `plugins` | Plugins to be loaded along with Grafana | `[]` | -| `datasources` | Configure grafana datasources (passed through tpl) | `{}` | -| `notifiers` | Configure grafana notifiers | `{}` | -| `dashboardProviders` | Configure grafana dashboard providers | `{}` | -| `dashboards` | Dashboards to import | `{}` | -| `dashboardsConfigMaps` | ConfigMaps reference that contains dashboards | `{}` | -| `grafana.ini` | Grafana's primary configuration | `{}` | -| `ldap.enabled` | Enable LDAP authentication | `false` | -| `ldap.existingSecret` | The name of an existing secret containing the `ldap.toml` file, this must have the key `ldap-toml`. | `""` | -| `ldap.config` | Grafana's LDAP configuration | `""` | -| `annotations` | Deployment annotations | `{}` | -| `labels` | Deployment labels | `{}` | -| `podAnnotations` | Pod annotations | `{}` | -| `podLabels` | Pod labels | `{}` | -| `podPortName` | Name of the grafana port on the pod | `grafana` | -| `sidecar.image.repository` | Sidecar image repository | `quay.io/kiwigrid/k8s-sidecar` | -| `sidecar.image.tag` | Sidecar image tag | `1.10.7` | -| `sidecar.image.sha` | Sidecar image sha (optional) | `""` | -| `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` | -| `sidecar.resources` | Sidecar resources | `{}` | -| `sidecar.enableUniqueFilenames` | Sets the kiwigrid/k8s-sidecar UNIQUE_FILENAMES environment variable | `false` | -| `sidecar.dashboards.enabled` | Enables the cluster wide search for dashboards and adds/updates/deletes them in grafana | `false` | -| `sidecar.dashboards.SCProvider` | Enables creation of sidecar provider | `true` | -| `sidecar.dashboards.provider.name` | Unique name of the grafana provider | `sidecarProvider` | -| `sidecar.dashboards.provider.orgid` | Id of the organisation, to which the dashboards should be added | `1` | -| `sidecar.dashboards.provider.folder` | Logical folder in which grafana groups dashboards | `""` | -| `sidecar.dashboards.provider.disableDelete` | Activate to avoid the deletion of imported dashboards | `false` | -| `sidecar.dashboards.provider.allowUiUpdates` | Allow updating provisioned dashboards from the UI | `false` | -| `sidecar.dashboards.provider.type` | Provider type | `file` | -| `sidecar.dashboards.provider.foldersFromFilesStructure` | Allow Grafana to replicate dashboard structure from filesystem. | `false` | -| `sidecar.dashboards.watchMethod` | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` | -| `sidecar.skipTlsVerify` | Set to true to skip tls verification for kube api calls | `nil` | -| `sidecar.dashboards.label` | Label that config maps with dashboards should have to be added | `grafana_dashboard` | -| `sidecar.dashboards.labelValue` | Label value that config maps with dashboards should have to be added | `nil` | -| `sidecar.dashboards.folder` | Folder in the pod that should hold the collected dashboards (unless `sidecar.dashboards.defaultFolderName` is set). This path will be mounted. | `/tmp/dashboards` | -| `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` | -| `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` | -| `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` | -| `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` | -| `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` | -| `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` | -| `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` | -| `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` | -| `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` | -| `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` | -| `admin.existingSecret` | The name of an existing secret containing the admin credentials. | `""` | -| `admin.userKey` | The key in the existing admin secret containing the username. | `"admin-user"` | -| `admin.passwordKey` | The key in the existing admin secret containing the password. | `"admin-password"` | -| `serviceAccount.annotations` | ServiceAccount annotations | | -| `serviceAccount.create` | Create service account | `true` | -| `serviceAccount.name` | Service account name to use, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `` | -| `serviceAccount.nameTest` | Service account name to use for test, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `nil` | -| `rbac.create` | Create and use RBAC resources | `true` | -| `rbac.namespaced` | Creates Role and Rolebinding instead of the default ClusterRole and ClusteRoleBindings for the grafana instance | `false` | -| `rbac.useExistingRole` | Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to the rolename set here. | `nil` | -| `rbac.pspEnabled` | Create PodSecurityPolicy (with `rbac.create`, grant roles permissions as well) | `true` | -| `rbac.pspUseAppArmor` | Enforce AppArmor in created PodSecurityPolicy (requires `rbac.pspEnabled`) | `true` | -| `rbac.extraRoleRules` | Additional rules to add to the Role | [] | -| `rbac.extraClusterRoleRules` | Additional rules to add to the ClusterRole | [] | -| `command` | Define command to be executed by grafana container at startup | `nil` | -| `testFramework.enabled` | Whether to create test-related resources | `true` | -| `testFramework.image` | `test-framework` image repository. | `bats/bats` | -| `testFramework.tag` | `test-framework` image tag. | `v1.1.0` | -| `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` | -| `testFramework.securityContext` | `test-framework` securityContext | `{}` | -| `downloadDashboards.env` | Environment variables to be passed to the `download-dashboards` container | `{}` | -| `downloadDashboards.envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `downloadDashboards.resources` | Resources of `download-dashboards` container | `{}` | -| `downloadDashboardsImage.repository` | Curl docker image repo | `curlimages/curl` | -| `downloadDashboardsImage.tag` | Curl docker image tag | `7.73.0` | -| `downloadDashboardsImage.sha` | Curl docker image sha (optional) | `""` | -| `downloadDashboardsImage.pullPolicy` | Curl docker image pull policy | `IfNotPresent` | -| `namespaceOverride` | Override the deployment namespace | `""` (`Release.Namespace`) | -| `serviceMonitor.enabled` | Use servicemonitor from prometheus operator | `false` | -| `serviceMonitor.namespace` | Namespace this servicemonitor is installed in | | -| `serviceMonitor.interval` | How frequently Prometheus should scrape | `1m` | -| `serviceMonitor.path` | Path to scrape | `/metrics` | -| `serviceMonitor.scheme` | Scheme to use for metrics scraping | `http` | -| `serviceMonitor.tlsConfig` | TLS configuration block for the endpoint | `{}` | -| `serviceMonitor.labels` | Labels for the servicemonitor passed to Prometheus Operator | `{}` | -| `serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `30s` | -| `serviceMonitor.relabelings` | MetricRelabelConfigs to apply to samples before ingestion. | `[]` | -| `revisionHistoryLimit` | Number of old ReplicaSets to retain | `10` | -| `imageRenderer.enabled` | Enable the image-renderer deployment & service | `false` | -| `imageRenderer.image.repository` | image-renderer Image repository | `grafana/grafana-image-renderer` | -| `imageRenderer.image.tag` | image-renderer Image tag | `latest` | -| `imageRenderer.image.sha` | image-renderer Image sha (optional) | `""` | -| `imageRenderer.image.pullPolicy` | image-renderer ImagePullPolicy | `Always` | -| `imageRenderer.env` | extra env-vars for image-renderer | `{}` | -| `imageRenderer.serviceAccountName` | image-renderer deployment serviceAccountName | `""` | -| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | -| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | -| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | -| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | -| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | -| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` | -| `imageRenderer.podPortName` | name of the image-renderer port on the pod | `http` | -| `imageRenderer.revisionHistoryLimit` | number of image-renderer replica sets to keep | `10` | -| `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true` | -| `imageRenderer.networkPolicy.limitEgress` | Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods | `false` | -| `imageRenderer.resources` | Set resource limits for image-renderer pdos | `{}` | - -### Example ingress with path - -With grafana 6.3 and above -```yaml -grafana.ini: - server: - domain: monitoring.example.com - root_url: "%(protocol)s://%(domain)s/grafana" - serve_from_sub_path: true -ingress: - enabled: true - hosts: - - "monitoring.example.com" - path: "/grafana" -``` - -### Example of extraVolumeMounts - -```yaml -- extraVolumeMounts: - - name: plugins - mountPath: /var/lib/grafana/plugins - subPath: configs/grafana/plugins - existingClaim: existing-grafana-claim - readOnly: false -``` - -## Import dashboards - -There are a few methods to import dashboards to Grafana. Below are some examples and explanations as to how to use each method: - -```yaml -dashboards: - default: - some-dashboard: - json: | - { - "annotations": - - ... - # Complete json file here - ... - - "title": "Some Dashboard", - "uid": "abcd1234", - "version": 1 - } - custom-dashboard: - # This is a path to a file inside the dashboards directory inside the chart directory - file: dashboards/custom-dashboard.json - prometheus-stats: - # Ref: https://grafana.com/dashboards/2 - gnetId: 2 - revision: 2 - datasource: Prometheus - local-dashboard: - url: https://raw.githubusercontent.com/user/repository/master/dashboards/dashboard.json -``` - -## BASE64 dashboards - -Dashboards could be stored on a server that does not return JSON directly and instead of it returns a Base64 encoded file (e.g. Gerrit) -A new parameter has been added to the url use case so if you specify a b64content value equals to true after the url entry a Base64 decoding is applied before save the file to disk. -If this entry is not set or is equals to false not decoding is applied to the file before saving it to disk. - -### Gerrit use case - -Gerrit API for download files has the following schema: where {project-name} and -{file-id} usually has '/' in their values and so they MUST be replaced by %2F so if project-name is user/repo, branch-id is master and file-id is equals to dir1/dir2/dashboard -the url value is - -## Sidecar for dashboards - -If the parameter `sidecar.dashboards.enabled` is set, a sidecar container is deployed in the grafana -pod. This container watches all configmaps (or secrets) in the cluster and filters out the ones with -a label as defined in `sidecar.dashboards.label`. The files defined in those configmaps are written -to a folder and accessed by grafana. Changes to the configmaps are monitored and the imported -dashboards are deleted/updated. - -A recommendation is to use one configmap per dashboard, as a reduction of multiple dashboards inside -one configmap is currently not properly mirrored in grafana. - -Example dashboard config: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: sample-grafana-dashboard - labels: - grafana_dashboard: "1" -data: - k8s-dashboard.json: |- - [...] -``` - -## Sidecar for datasources - -If the parameter `sidecar.datasources.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the data sources in grafana can be imported. - -Secrets are recommended over configmaps for this usecase because datasources usually contain private -data like usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example values to add a datasource adapted from [Grafana](http://docs.grafana.org/administration/provisioning/#example-datasource-config-file): - -```yaml -datasources: - datasources.yaml: - apiVersion: 1 - datasources: - # name of the datasource. Required - - name: Graphite - # datasource type. Required - type: graphite - # access mode. proxy or direct (Server or Browser in the UI). Required - access: proxy - # org id. will default to orgId 1 if not specified - orgId: 1 - # url - url: http://localhost:8080 - # database password, if used - password: - # database user, if used - user: - # database name, if used - database: - # enable/disable basic auth - basicAuth: - # basic auth username - basicAuthUser: - # basic auth password - basicAuthPassword: - # enable/disable with credentials headers - withCredentials: - # mark as default datasource. Max one per org - isDefault: - # fields that will be converted to json and stored in json_data - jsonData: - graphiteVersion: "1.1" - tlsAuth: true - tlsAuthWithCACert: true - # json object of data that will be encrypted. - secureJsonData: - tlsCACert: "..." - tlsClientCert: "..." - tlsClientKey: "..." - version: 1 - # allow users to edit datasources from the UI. - editable: false -``` - -## Sidecar for notifiers - -If the parameter `sidecar.notifiers.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.notifiers.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the notification channels in grafana can be imported. The secrets must be created before -`helm install` so that the notifiers init container can list the secrets. - -Secrets are recommended over configmaps for this usecase because alert notification channels usually contain -private data like SMTP usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example datasource config adapted from [Grafana](https://grafana.com/docs/grafana/latest/administration/provisioning/#alert-notification-channels): - -```yaml -notifiers: - - name: notification-channel-1 - type: slack - uid: notifier1 - # either - org_id: 2 - # or - org_name: Main Org. - is_default: true - send_reminder: true - frequency: 1h - disable_resolve_message: false - # See `Supported Settings` section for settings supporter for each - # alert notification type. - settings: - recipient: 'XXX' - token: 'xoxb' - uploadImage: true - url: https://slack.com - -delete_notifiers: - - name: notification-channel-1 - uid: notifier1 - org_id: 2 - - name: notification-channel-2 - # default org_id: 1 -``` - -## How to serve Grafana with a path prefix (/grafana) - -In order to serve Grafana with a prefix (e.g., ), add the following to your values.yaml. - -```yaml -ingress: - enabled: true - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/rewrite-target: /$1 - nginx.ingress.kubernetes.io/use-regex: "true" - - path: /grafana/?(.*) - hosts: - - k8s.example.dev - -grafana.ini: - server: - root_url: http://localhost:3000/grafana # this host can be localhost -``` - -## How to securely reference secrets in grafana.ini - -This example uses Grafana uses [file providers](https://grafana.com/docs/grafana/latest/administration/configuration/#file-provider) for secret values and the `extraSecretMounts` configuration flag (Additional grafana server secret mounts) to mount the secrets. - -In grafana.ini: - -```yaml -grafana.ini: - [auth.generic_oauth] - enabled = true - client_id = $__file{/etc/secrets/auth_generic_oauth/client_id} - client_secret = $__file{/etc/secrets/auth_generic_oauth/client_secret} -``` - -Existing secret, or created along with helm: - -```yaml ---- -apiVersion: v1 -kind: Secret -metadata: - name: auth-generic-oauth-secret -type: Opaque -stringData: - client_id: - client_secret: -``` - -Include in the `extraSecretMounts` configuration flag: - -```yaml -- extraSecretMounts: - - name: auth-generic-oauth-secret-mount - secretName: auth-generic-oauth-secret - defaultMode: 0440 - mountPath: /etc/secrets/auth_generic_oauth - readOnly: true -``` - -### extraSecretMounts using a Container Storage Interface (CSI) provider - -This example uses a CSI driver e.g. retrieving secrets using [Azure Key Vault Provider](https://github.com/Azure/secrets-store-csi-driver-provider-azure) - -```yaml -- extraSecretMounts: - - name: secrets-store-inline - mountPath: /run/secrets - readOnly: true - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: "my-provider" - nodePublishSecretRef: - name: akv-creds -``` - -## Image Renderer Plug-In - -This chart supports enabling [remote image rendering](https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md) - -```yaml -imageRenderer: - enabled: true -``` - -### Image Renderer NetworkPolicy - -By default the image-renderer pods will have a network policy which only allows ingress traffic from the created grafana instance diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/dashboards/custom-dashboard.json b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/dashboards/custom-dashboard.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/dashboards/custom-dashboard.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/NOTES.txt b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/NOTES.txt deleted file mode 100644 index 1fc8436d9..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/NOTES.txt +++ /dev/null @@ -1,54 +0,0 @@ -1. Get your '{{ .Values.adminUser }}' user password by running: - - kubectl get secret --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath="{.data.admin-password}" | base64 --decode ; echo - -2. The Grafana server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster: - - {{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}.svc.cluster.local -{{ if .Values.ingress.enabled }} - If you bind grafana to 80, please update values in values.yaml and reinstall: - ``` - securityContext: - runAsUser: 0 - runAsGroup: 0 - fsGroup: 0 - - command: - - "setcap" - - "'cap_net_bind_service=+ep'" - - "/usr/sbin/grafana-server &&" - - "sh" - - "/run.sh" - ``` - Details refer to https://grafana.com/docs/installation/configuration/#http-port. - Or grafana would always crash. - - From outside the cluster, the server URL(s) are: -{{- range .Values.ingress.hosts }} - http://{{ . }} -{{- end }} -{{ else }} - Get the Grafana URL to visit by running these commands in the same shell: -{{ if contains "NodePort" .Values.service.type -}} - export NODE_PORT=$(kubectl get --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "grafana.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{ else if contains "LoadBalancer" .Values.service.type -}} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get svc --namespace {{ template "grafana.namespace" . }} -w {{ template "grafana.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - http://$SERVICE_IP:{{ .Values.service.port -}} -{{ else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ template "grafana.namespace" . }} -l "app.kubernetes.io/name={{ template "grafana.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - kubectl --namespace {{ template "grafana.namespace" . }} port-forward $POD_NAME 3000 -{{- end }} -{{- end }} - -3. Login with the password from step 1 and the username: {{ .Values.adminUser }} - -{{- if not .Values.persistence.enabled }} -################################################################################# -###### WARNING: Persistence is disabled!!! You will lose your data when ##### -###### the Grafana pod is terminated. ##### -################################################################################# -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_helpers.tpl b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_helpers.tpl deleted file mode 100644 index 76ad78876..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_helpers.tpl +++ /dev/null @@ -1,145 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "grafana.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "grafana.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "grafana.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account -*/}} -{{- define "grafana.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "grafana.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{- define "grafana.serviceAccountNameTest" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (print (include "grafana.fullname" .) "-test") .Values.serviceAccount.nameTest }} -{{- else -}} - {{ default "default" .Values.serviceAccount.nameTest }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "grafana.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- if .Values.extraLabels }} -{{ toYaml .Values.extraLabels }} -{{- end }} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "grafana.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.imageRenderer.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.imageRenderer.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Selector labels ImageRenderer -*/}} -{{- define "grafana.imageRenderer.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Return the appropriate apiVersion for rbac. -*/}} -{{- define "rbac.apiVersion" -}} -{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }} -{{- print "rbac.authorization.k8s.io/v1" -}} -{{- else -}} -{{- print "rbac.authorization.k8s.io/v1beta1" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_pod.tpl b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_pod.tpl deleted file mode 100644 index 2ba9f115c..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/_pod.tpl +++ /dev/null @@ -1,496 +0,0 @@ -{{- define "grafana.pod" -}} -{{- if .Values.schedulerName }} -schedulerName: "{{ .Values.schedulerName }}" -{{- end }} -serviceAccountName: {{ template "grafana.serviceAccountName" . }} -{{- if .Values.securityContext }} -securityContext: -{{ toYaml .Values.securityContext | indent 2 }} -{{- end }} -{{- if .Values.hostAliases }} -hostAliases: -{{ toYaml .Values.hostAliases | indent 2 }} -{{- end }} -{{- if .Values.priorityClassName }} -priorityClassName: {{ .Values.priorityClassName }} -{{- end }} -{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.sidecar.datasources.enabled .Values.sidecar.notifiers.enabled .Values.extraInitContainers) }} -initContainers: -{{- end }} -{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }} - - name: init-chown-data - {{- if .Values.initChownData.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }} - securityContext: - runAsNonRoot: false - runAsUser: 0 - command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}", "/var/lib/grafana"] - resources: -{{ toYaml .Values.initChownData.resources | indent 6 }} - volumeMounts: - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- end }} -{{- if .Values.dashboards }} - - name: download-dashboards - {{- if .Values.downloadDashboardsImage.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }} - command: ["/bin/sh"] - args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh /etc/grafana/download_dashboards.sh" ] - resources: -{{ toYaml .Values.downloadDashboards.resources | indent 6 }} - env: -{{- range $key, $value := .Values.downloadDashboards.env }} - - name: "{{ $key }}" - value: "{{ $value }}" -{{- end }} -{{- if .Values.downloadDashboards.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.downloadDashboards.envFromSecret . }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/download_dashboards.sh" - subPath: download_dashboards.sh - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - {{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: {{ template "grafana.name" . }}-sc-datasources - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - {{- if .Values.sidecar.datasources.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.sidecar.datasources.envFromSecret . }} - {{- end }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.datasources.label }}" - {{- if .Values.sidecar.datasources.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.datasources.labelValue }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/datasources" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.datasources.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.datasources.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: {{ template "grafana.name" . }}-sc-notifiers - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.notifiers.label }}" - - name: FOLDER - value: "/etc/grafana/provisioning/notifiers" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.notifiers.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.notifiers.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} -{{- if .Values.extraInitContainers }} -{{ toYaml .Values.extraInitContainers | indent 2 }} -{{- end }} -{{- if .Values.image.pullSecrets }} -imagePullSecrets: -{{- range .Values.image.pullSecrets }} - - name: {{ . }} -{{- end}} -{{- end }} -containers: -{{- if .Values.sidecar.dashboards.enabled }} - - name: {{ template "grafana.name" . }}-sc-dashboard - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: {{ .Values.sidecar.dashboards.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.dashboards.label }}" - {{- if .Values.sidecar.dashboards.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.dashboards.labelValue }} - {{- end }} - - name: FOLDER - value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.dashboards.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.dashboards.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - {{- if .Values.sidecar.dashboards.folderAnnotation }} - - name: FOLDER_ANNOTATION - value: "{{ .Values.sidecar.dashboards.folderAnnotation }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{- end}} - - name: {{ .Chart.Name }} - {{- if .Values.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}@sha256:{{ .Values.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.command }} - command: - {{- range .Values.command }} - - {{ . }} - {{- end }} - {{- end}} -{{- if .Values.containerSecurityContext }} - securityContext: -{{- toYaml .Values.containerSecurityContext | nindent 6 }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/grafana.ini" - subPath: grafana.ini - {{- if .Values.ldap.enabled }} - - name: ldap - mountPath: "/etc/grafana/ldap.toml" - subPath: ldap.toml - {{- end }} - {{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- if .Values.dashboards }} -{{- range $provider, $dashboards := .Values.dashboards }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} - - name: dashboards-{{ $provider }} - mountPath: "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - subPath: "{{ $key }}.json" -{{- end }} -{{- end }} -{{- end }} -{{- end -}} -{{- if .Values.dashboardsConfigMaps }} -{{- range (keys .Values.dashboardsConfigMaps | sortAlpha) }} - - name: dashboards-{{ . }} - mountPath: "/var/lib/grafana/dashboards/{{ . }}" -{{- end }} -{{- end }} -{{- if .Values.datasources }} - - name: config - mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" - subPath: datasources.yaml -{{- end }} -{{- if .Values.notifiers }} - - name: config - mountPath: "/etc/grafana/provisioning/notifiers/notifiers.yaml" - subPath: notifiers.yaml -{{- end }} -{{- if .Values.dashboardProviders }} - - name: config - mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" - subPath: dashboardproviders.yaml -{{- end }} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{ if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml" - subPath: provider.yaml -{{- end}} -{{- end}} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - subPath: {{ .subPath | default "" }} - {{- end }} - {{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - {{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - ports: - - name: {{ .Values.service.portName }} - containerPort: {{ .Values.service.targetPort }} - protocol: TCP - - name: {{ .Values.podPortName }} - containerPort: 3000 - protocol: TCP - env: - {{- if not .Values.env.GF_SECURITY_ADMIN_USER }} - - name: GF_SECURITY_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.userKey | default "admin-user" }} - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }} - - name: GF_SECURITY_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if .Values.plugins }} - - name: GF_INSTALL_PLUGINS - valueFrom: - configMapKeyRef: - name: {{ template "grafana.fullname" . }} - key: plugins - {{- end }} - {{- if .Values.smtp.existingSecret }} - - name: GF_SMTP_USER - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.userKey | default "user" }} - - name: GF_SMTP_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.passwordKey | default "password" }} - {{- end }} - {{ if .Values.imageRenderer.enabled }} - - name: GF_RENDERING_SERVER_URL - value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render - - name: GF_RENDERING_CALLBACK_URL - value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} - {{ end }} - {{- range $key, $value := .Values.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: -{{ toYaml $value | indent 10 }} - {{- end }} -{{- range $key, $value := .Values.env }} - - name: "{{ tpl $key $ }}" - value: "{{ tpl (print $value) $ }}" -{{- end }} - {{- if .Values.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.envFromSecret . }} - {{- end }} - {{- if .Values.envRenderSecret }} - envFrom: - - secretRef: - name: {{ template "grafana.fullname" . }}-env - {{- end }} - livenessProbe: -{{ toYaml .Values.livenessProbe | indent 6 }} - readinessProbe: -{{ toYaml .Values.readinessProbe | indent 6 }} - resources: -{{ toYaml .Values.resources | indent 6 }} -{{- with .Values.extraContainers }} -{{ tpl . $ | indent 2 }} -{{- end }} -nodeSelector: {{ include "linux-node-selector" . | nindent 2 }} -{{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 2 }} -{{- end }} -{{- with .Values.affinity }} -affinity: -{{ toYaml . | indent 2 }} -{{- end }} -tolerations: {{ include "linux-node-tolerations" . | nindent 2 }} -{{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 2 }} -{{- end }} -volumes: - - name: config - configMap: - name: {{ template "grafana.fullname" . }} -{{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - configMap: - name: {{ .configMap }} -{{- end }} - {{- if .Values.dashboards }} - {{- range (keys .Values.dashboards | sortAlpha) }} - - name: dashboards-{{ . }} - configMap: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ . }} - {{- end }} - {{- end }} - {{- if .Values.dashboardsConfigMaps }} - {{ $root := . }} - {{- range $provider, $name := .Values.dashboardsConfigMaps }} - - name: dashboards-{{ $provider }} - configMap: - name: {{ tpl $name $root }} - {{- end }} - {{- end }} - {{- if .Values.ldap.enabled }} - - name: ldap - secret: - {{- if .Values.ldap.existingSecret }} - secretName: {{ .Values.ldap.existingSecret }} - {{- else }} - secretName: {{ template "grafana.fullname" . }} - {{- end }} - items: - - key: ldap-toml - path: ldap.toml - {{- end }} -{{- if and .Values.persistence.enabled (eq .Values.persistence.type "pvc") }} - - name: storage - persistentVolumeClaim: - claimName: {{ .Values.persistence.existingClaim | default (include "grafana.fullname" .) }} -{{- else if and .Values.persistence.enabled (eq .Values.persistence.type "statefulset") }} -# nothing -{{- else }} - - name: storage -{{- if .Values.persistence.inMemory.enabled }} - emptyDir: - medium: Memory -{{- if .Values.persistence.inMemory.sizeLimit }} - sizeLimit: {{ .Values.persistence.inMemory.sizeLimit }} -{{- end -}} -{{- else }} - emptyDir: {} -{{- end -}} -{{- end -}} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - emptyDir: {} -{{- if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - configMap: - name: {{ template "grafana.fullname" . }}-config-dashboards -{{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - emptyDir: {} -{{- end -}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - emptyDir: {} -{{- end -}} -{{- range .Values.extraSecretMounts }} -{{- if .secretName }} - - name: {{ .name }} - secret: - secretName: {{ .secretName }} - defaultMode: {{ .defaultMode }} -{{- else if .projected }} - - name: {{ .name }} - projected: {{- toYaml .projected | nindent 6 }} -{{- else if .csi }} - - name: {{ .name }} - csi: {{- toYaml .csi | nindent 6 }} -{{- end }} -{{- end }} -{{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} -{{- end }} -{{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - emptyDir: {} -{{- end -}} -{{- if .Values.extraContainerVolumes }} -{{ toYaml .Values.extraContainerVolumes | indent 2 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrole.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrole.yaml deleted file mode 100644 index f09e06563..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrole.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) (not .Values.rbac.useExistingRole) }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- if or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraClusterRoleRules) }} -rules: -{{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end}} -{{- with .Values.rbac.extraClusterRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end}} -{{- end}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrolebinding.yaml deleted file mode 100644 index 4accbfac0..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "grafana.fullname" . }}-clusterrolebinding - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -subjects: - - kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -roleRef: - kind: ClusterRole -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} - apiGroup: rbac.authorization.k8s.io -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap-dashboard-provider.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap-dashboard-provider.yaml deleted file mode 100644 index 65d73858e..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap-dashboard-provider.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.sidecar.dashboards.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-config-dashboards - namespace: {{ template "grafana.namespace" . }} -data: - provider.yaml: |- - apiVersion: 1 - providers: - - name: '{{ .Values.sidecar.dashboards.provider.name }}' - orgId: {{ .Values.sidecar.dashboards.provider.orgid }} - {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - folder: '{{ .Values.sidecar.dashboards.provider.folder }}' - {{- end}} - type: {{ .Values.sidecar.dashboards.provider.type }} - disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }} - allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }} - updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }} - options: - foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }} -{{- end}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap.yaml deleted file mode 100644 index de32b7ab2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/configmap.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -data: -{{- if .Values.plugins }} - plugins: {{ join "," .Values.plugins }} -{{- end }} - grafana.ini: | -{{- range $key, $value := index .Values "grafana.ini" }} - [{{ $key }}] - {{- range $elem, $elemVal := $value }} - {{- if kindIs "invalid" $elemVal }} - {{ $elem }} = - {{- else }} - {{ $elem }} = {{ tpl (toYaml $elemVal) $ }} - {{- end }} - {{- end }} -{{- end }} - -{{- if .Values.datasources }} -{{ $root := . }} - {{- range $key, $value := .Values.datasources }} - {{ $key }}: | -{{ tpl (toYaml $value | indent 4) $root }} - {{- end -}} -{{- end -}} - -{{- if .Values.notifiers }} - {{- range $key, $value := .Values.notifiers }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboards }} - download_dashboards.sh: | - #!/usr/bin/env sh - set -euf - {{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{- range $value.providers }} - mkdir -p {{ .options.path }} - {{- end }} - {{- end }} - {{- end }} - - {{- range $provider, $dashboards := .Values.dashboards }} - {{- range $key, $value := $dashboards }} - {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }} - curl -skf \ - --connect-timeout 60 \ - --max-time 60 \ - {{- if not $value.b64content }} - -H "Accept: application/json" \ - {{- if $value.token }} - -H "Authorization: token {{ $value.token }}" \ - {{- end }} - -H "Content-Type: application/json;charset=UTF-8" \ - {{ end }} - {{- if $value.url -}}"{{ $value.url }}"{{- else -}}"https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download"{{- end -}}{{ if $value.datasource }} | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g'{{ end }}{{- if $value.b64content -}} | base64 -d {{- end -}} \ - > "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - {{- end -}} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/dashboards-json-configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/dashboards-json-configmap.yaml deleted file mode 100644 index 59e0be641..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/dashboards-json-configmap.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if .Values.dashboards }} -{{ $files := .Files }} -{{- range $provider, $dashboards := .Values.dashboards }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ $provider }} - namespace: {{ template "grafana.namespace" $ }} - labels: - {{- include "grafana.labels" $ | nindent 4 }} - dashboard-provider: {{ $provider }} -{{- if $dashboards }} -data: -{{- $dashboardFound := false }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} -{{- $dashboardFound = true }} -{{ print $key | indent 2 }}.json: -{{- if hasKey $value "json" }} - |- -{{ $value.json | indent 6 }} -{{- end }} -{{- if hasKey $value "file" }} -{{ toYaml ( $files.Get $value.file ) | indent 4}} -{{- end }} -{{- end }} -{{- end }} -{{- if not $dashboardFound }} - {} -{{- end }} -{{- end }} ---- -{{- end }} - -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/deployment.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/deployment.yaml deleted file mode 100644 index 4d77794cd..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/deployment.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{ if (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc")) }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- with .Values.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- if .Values.envRenderSecret }} - checksum/secret-env: {{ include (print $.Template.BasePath "/secret-env.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/headless-service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/headless-service.yaml deleted file mode 100644 index 2fa816e04..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/headless-service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-headless - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - clusterIP: None - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - type: ClusterIP -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-deployment.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-deployment.yaml deleted file mode 100644 index d17b9dfed..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.labels }} -{{ toYaml .Values.imageRenderer.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.imageRenderer.replicas }} - revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} -{{- with .Values.imageRenderer.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 8 }} -{{- with .Values.imageRenderer.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -{{- with .Values.imageRenderer.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - - {{- if .Values.imageRenderer.schedulerName }} - schedulerName: "{{ .Values.imageRenderer.schedulerName }}" - {{- end }} - {{- if .Values.imageRenderer.serviceAccountName }} - serviceAccountName: "{{ .Values.imageRenderer.serviceAccountName }}" - {{- else }} - serviceAccountName: {{ template "grafana.serviceAccountName" . }} - {{- end }} - {{- if .Values.imageRenderer.securityContext }} - securityContext: - {{ toYaml .Values.imageRenderer.securityContext | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.hostAliases }} - hostAliases: - {{ toYaml .Values.imageRenderer.hostAliases | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.priorityClassName }} - priorityClassName: {{ .Values.imageRenderer.priorityClassName }} - {{- end }} - {{- if .Values.imageRenderer.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.imageRenderer.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - containers: - - name: {{ .Chart.Name }}-image-renderer - {{- if .Values.imageRenderer.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.imageRenderer.image.pullPolicy }} - {{- if .Values.imageRenderer.command }} - command: - {{- range .Values.imageRenderer.command }} - - {{ . }} - {{- end }} - {{- end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - containerPort: {{ .Values.imageRenderer.service.port }} - protocol: TCP - env: - - name: HTTP_PORT - value: {{ .Values.imageRenderer.service.port | quote }} - {{- range $key, $value := .Values.imageRenderer.env }} - - name: {{ $key | quote }} - value: {{ $value | quote }} - {{- end }} - securityContext: - capabilities: - drop: ['all'] - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: image-renderer-tmpfs - {{- with .Values.imageRenderer.resources }} - resources: -{{ toYaml . | indent 12 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.imageRenderer.nodeSelector }} -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.imageRenderer.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - {{- if .Values.imageRenderer.tolerations }} -{{ toYaml . | indent 8 }} - {{- end }} - volumes: - - name: image-renderer-tmpfs - emptyDir: {} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-network-policy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-network-policy.yaml deleted file mode 100644 index f8ca73aab..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-network-policy.yaml +++ /dev/null @@ -1,76 +0,0 @@ -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitIngress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-ingress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer ingress traffic from grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Ingress - ingress: - - ports: - - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - from: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} - -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitEgress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-egress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer egress traffic to grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Egress - egress: - # allow dns resolution - - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - # talk only to grafana - - ports: - - port: {{ .Values.service.port }} - protocol: TCP - to: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-service.yaml deleted file mode 100644 index f5d3eb02f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/image-renderer-service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.service.labels }} -{{ toYaml .Values.imageRenderer.service.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - type: ClusterIP - {{- if .Values.imageRenderer.service.clusterIP }} - clusterIP: {{ .Values.imageRenderer.service.clusterIP }} - {{end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - targetPort: {{ .Values.imageRenderer.service.targetPort }} - selector: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} -{{ end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/ingress.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/ingress.yaml deleted file mode 100644 index 44ebfc950..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/ingress.yaml +++ /dev/null @@ -1,80 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "grafana.fullname" . -}} -{{- $servicePort := .Values.service.port -}} -{{- $ingressPath := .Values.ingress.path -}} -{{- $ingressPathType := .Values.ingress.pathType -}} -{{- $extraPaths := .Values.ingress.extraPaths -}} -{{- $newAPI := .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}} -{{- if $newAPI -}} -apiVersion: networking.k8s.io/v1 -{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} -apiVersion: networking.k8s.io/v1beta1 -{{- else }} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.ingress.labels }} -{{ toYaml .Values.ingress.labels | indent 4 }} -{{- end }} - {{- if .Values.ingress.annotations }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ tpl $value $ | quote }} - {{- end }} - {{- end }} -spec: - {{- if .Values.ingress.ingressClassName }} - ingressClassName: {{ .Values.ingress.ingressClassName }} - {{- end -}} -{{- if .Values.ingress.tls }} - tls: -{{ tpl (toYaml .Values.ingress.tls) $ | indent 4 }} -{{- end }} - rules: - {{- if .Values.ingress.hosts }} - {{- range .Values.ingress.hosts }} - - host: {{ tpl . $}} - http: - paths: -{{ if $extraPaths }} -{{ toYaml $extraPaths | indent 10 }} -{{- end }} - - path: {{ $ingressPath }} - {{- if $newAPI }} - pathType: {{ $ingressPathType }} - {{- end }} - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end }} - {{- else }} - - http: - paths: - - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - pathType: {{ $ingressPathType }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- if $ingressPath }} - path: {{ $ingressPath }} - {{- end }} - {{- end -}} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/nginx-config.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/nginx-config.yaml deleted file mode 100644 index f847c51ce..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/nginx-config.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: grafana-nginx-proxy-config - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - nginx.conf: |- - worker_processes auto; - error_log /dev/stdout warn; - pid /var/cache/nginx/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - log_format main '[$time_local - $status] $remote_addr - $remote_user $request ($http_referer)'; - - proxy_connect_timeout 10; - proxy_read_timeout 180; - proxy_send_timeout 5; - proxy_buffering off; - proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my_zone:100m inactive=1d max_size=10g; - - server { - listen 8080; - access_log off; - - gzip on; - gzip_min_length 1k; - gzip_comp_level 2; - gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png; - gzip_vary on; - gzip_disable "MSIE [1-6]\."; - - proxy_set_header Host $host; - - location /api/dashboards { - proxy_pass http://localhost:3000; - } - - location /api/search { - proxy_pass http://localhost:3000; - - sub_filter_types application/json; - sub_filter_once off; - sub_filter '"url":"/d' '"url":"d'; - } - - location / { - proxy_cache my_zone; - proxy_cache_valid 200 302 1d; - proxy_cache_valid 301 30d; - proxy_cache_valid any 5m; - proxy_cache_bypass $http_cache_control; - add_header X-Proxy-Cache $upstream_cache_status; - add_header Cache-Control "public"; - - proxy_pass http://localhost:3000/; - - sub_filter_types text/html; - sub_filter_once off; - sub_filter '"appSubUrl":""' '"appSubUrl":"."'; - sub_filter '"url":"/' '"url":"./'; - sub_filter ':"/avatar/' ':"avatar/'; - - if ($request_filename ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) { - expires 90d; - } - } - } - } diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/poddisruptionbudget.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/poddisruptionbudget.yaml deleted file mode 100644 index 61813a436..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.podDisruptionBudget }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -spec: -{{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} -{{- end }} -{{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} -{{- end }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/podsecuritypolicy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/podsecuritypolicy.yaml deleted file mode 100644 index 19da50791..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- if .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.rbac.pspAnnotations }} - annotations: {{ toYaml .Values.rbac.pspAnnotations | nindent 4 }} -{{- end }} -spec: - privileged: false - allowPrivilegeEscalation: false - requiredDropCapabilities: - # Default set from Docker, without DAC_OVERRIDE or CHOWN - - FOWNER - - FSETID - - KILL - - SETGID - - SETUID - - SETPCAP - - NET_BIND_SERVICE - - NET_RAW - - SYS_CHROOT - - MKNOD - - AUDIT_WRITE - - SETFCAP - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'csi' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'RunAsAny' - fsGroup: - rule: 'RunAsAny' - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/pvc.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/pvc.yaml deleted file mode 100644 index 8a3ee1222..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/pvc.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.persistence.annotations }} - annotations: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.persistence.finalizers }} - finalizers: -{{ toYaml . | indent 4 }} - {{- end }} -spec: - accessModes: -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" .Values.persistence.accessModes }} -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" (first .Values.persistence.accessModes) }} - {{- range .Values.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ required "Must provide size for persistent volumes used by Grafana" .Values.persistence.size | quote }} - {{- if .Values.persistence.storageClassName }} - storageClassName: {{ .Values.persistence.storageClassName }} - {{- end -}} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 6 }} - {{- end }} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/role.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/role.yaml deleted file mode 100644 index 54c3fb0b2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: Role -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraRoleRules))) }} -rules: -{{- if .Values.rbac.pspEnabled }} -- apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}] -{{- end }} -{{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled) }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end }} -{{- with .Values.rbac.extraRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/rolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/rolebinding.yaml deleted file mode 100644 index 34f1ad6f8..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/rolebinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }} -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end -}} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret-env.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret-env.yaml deleted file mode 100644 index 5c09313e6..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret-env.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.envRenderSecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }}-env - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $val := .Values.envRenderSecret }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end -}} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret.yaml deleted file mode 100644 index 4fdd817da..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/secret.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: - {{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }} - admin-user: {{ .Values.adminUser | b64enc | quote }} - {{- if .Values.adminPassword }} - admin-password: {{ .Values.adminPassword | b64enc | quote }} - {{- else }} - admin-password: {{ randAlphaNum 40 | b64enc | quote }} - {{- end }} - {{- end }} - {{- if not .Values.ldap.existingSecret }} - ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/service.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/service.yaml deleted file mode 100644 index 276456698..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/service.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.service.labels }} -{{ toYaml .Values.service.labels | indent 4 }} -{{- end }} -{{- with .Values.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: -{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }} - type: ClusterIP - {{- if .Values.service.clusterIP }} - clusterIP: {{ .Values.service.clusterIP }} - {{end}} -{{- else if eq .Values.service.type "LoadBalancer" }} - type: {{ .Values.service.type }} - {{- if .Values.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.service.loadBalancerIP }} - {{- end }} - {{- if .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: -{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }} - {{- end -}} -{{- else }} - type: {{ .Values.service.type }} -{{- end }} -{{- if .Values.service.externalIPs }} - externalIPs: -{{ toYaml .Values.service.externalIPs | indent 4 }} -{{- end }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP - targetPort: {{ .Values.service.targetPort }} -{{ if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{.Values.service.nodePort}} -{{ end }} - {{- if .Values.extraExposePorts }} - {{- tpl (toYaml .Values.extraExposePorts) . | indent 4 }} - {{- end }} - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/serviceaccount.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/serviceaccount.yaml deleted file mode 100644 index 7576eeef0..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.serviceAccount.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/servicemonitor.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/servicemonitor.yaml deleted file mode 100644 index 23288523f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/servicemonitor.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "grafana.fullname" . }} - {{- if .Values.serviceMonitor.namespace }} - namespace: {{ .Values.serviceMonitor.namespace }} - {{- end }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- if .Values.serviceMonitor.labels }} - {{- toYaml .Values.serviceMonitor.labels | nindent 4 }} - {{- end }} -spec: - endpoints: - - interval: {{ .Values.serviceMonitor.interval }} - {{- if .Values.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: true - port: {{ .Values.service.portName }} - path: {{ .Values.serviceMonitor.path }} - scheme: {{ .Values.serviceMonitor.scheme }} - {{- if .Values.serviceMonitor.tlsConfig }} - tlsConfig: - {{- toYaml .Values.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - relabelings: - {{- toYaml .Values.serviceMonitor.relabelings | nindent 4 }} - {{- end }} - jobLabel: "{{ .Release.Name }}" - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 8 }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/statefulset.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/statefulset.yaml deleted file mode 100644 index 55c159c9f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/statefulset.yaml +++ /dev/null @@ -1,54 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - serviceName: {{ template "grafana.fullname" . }}-headless - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} - {{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} - volumeClaimTemplates: - - metadata: - name: storage - spec: -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" .Values.persistence.accessModes }} -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" (first .Values.persistence.accessModes) }} - accessModes: {{ .Values.persistence.accessModes }} - storageClassName: {{ .Values.persistence.storageClassName }} - resources: - requests: - storage: {{ required "Must provide size for persistent volumes used by Grafana" .Values.persistence.size }} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 10 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-configmap.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-configmap.yaml deleted file mode 100644 index ff53aaf1b..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - run.sh: |- - @test "Test Health" { - url="http://{{ template "grafana.fullname" . }}/api/health" - - code=$(wget --server-response --spider --timeout 10 --tries 1 ${url} 2>&1 | awk '/^ HTTP/{print $2}') - [ "$code" == "200" ] - } -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-podsecuritypolicy.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-podsecuritypolicy.yaml deleted file mode 100644 index 1acd65128..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-podsecuritypolicy.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -spec: - allowPrivilegeEscalation: true - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - fsGroup: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - runAsUser: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - projected - - csi - - secret -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-role.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-role.yaml deleted file mode 100644 index 6b10677ae..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}-test] -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-rolebinding.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-rolebinding.yaml deleted file mode 100644 index 58fa5e78b..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-rolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "grafana.fullname" . }}-test -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-serviceaccount.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-serviceaccount.yaml deleted file mode 100644 index 5c3350733..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test-serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test.yaml deleted file mode 100644 index cdc86e5f2..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/templates/tests/test.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: Pod -metadata: - name: {{ template "grafana.fullname" . }}-test - labels: - {{- include "grafana.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test-success - namespace: {{ template "grafana.namespace" . }} -spec: - serviceAccountName: {{ template "grafana.serviceAccountNameTest" . }} - {{- if .Values.testFramework.securityContext }} - securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }} - {{- end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 4 }} - {{- end }} - containers: - - name: {{ .Release.Name }}-test - image: "{{ .Values.testFramework.image}}:{{ .Values.testFramework.tag }}" - imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}" - command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] - volumeMounts: - - mountPath: /tests - name: tests - readOnly: true - volumes: - - name: tests - configMap: - name: {{ template "grafana.fullname" . }}-test - restartPolicy: Never -{{- end }} diff --git a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/values.yaml b/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/values.yaml deleted file mode 100644 index 9491c1a1f..000000000 --- a/charts/rancher-grafana/rancher-grafana/6.6.402+up6.6.4/values.yaml +++ /dev/null @@ -1,732 +0,0 @@ -global: - cattle: - systemDefaultRegistry: "" - -autoscaling: - enabled: false -rbac: - create: true - ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true) - # useExistingRole: name-of-some-(cluster)role - pspEnabled: true - pspAnnotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - namespaced: false - extraRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] - extraClusterRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] -serviceAccount: - create: true - name: - nameTest: -# annotations: -# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here - -replicas: 1 - -## See `kubectl explain poddisruptionbudget.spec` for more -## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} -# minAvailable: 1 -# maxUnavailable: 1 - -## See `kubectl explain deployment.spec.strategy` for more -## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy -deploymentStrategy: - type: RollingUpdate - -readinessProbe: - httpGet: - path: /api/health - port: 3000 - -livenessProbe: - httpGet: - path: /api/health - port: 3000 - initialDelaySeconds: 60 - timeoutSeconds: 30 - failureThreshold: 10 - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: "default-scheduler" - -image: - repository: rancher/mirrored-grafana-grafana - tag: 7.4.5 - sha: "" - pullPolicy: IfNotPresent - - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistrKeySecretName - -testFramework: - enabled: true - image: "rancher/mirrored-bats-bats" - tag: "v1.1.0" - imagePullPolicy: IfNotPresent - securityContext: - runAsNonRoot: true - runAsUser: 1000 - -securityContext: - runAsNonRoot: true - runAsUser: 472 - runAsGroup: 472 - fsGroup: 472 - -containerSecurityContext: - {} - -extraConfigmapMounts: [] - # - name: certs-configmap - # mountPath: /etc/grafana/ssl/ - # subPath: certificates.crt # (optional) - # configMap: certs-configmap - # readOnly: true - - -extraEmptyDirMounts: [] - # - name: provisioning-notifiers - # mountPath: /etc/grafana/provisioning/notifiers - - -# Apply extra labels to common labels. -extraLabels: {} - -## Assign a PriorityClassName to pods if set -# priorityClassName: - -downloadDashboardsImage: - repository: rancher/mirrored-curlimages-curl - tag: 7.73.0 - sha: "" - pullPolicy: IfNotPresent - -downloadDashboards: - env: {} - envFromSecret: "" - resources: {} - -## Pod Annotations -# podAnnotations: {} - -## Pod Labels -# podLabels: {} - -podPortName: grafana - -## Deployment annotations -# annotations: {} - -## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service). -## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it. -## ref: http://kubernetes.io/docs/user-guide/services/ -## -service: - type: ClusterIP - port: 80 - targetPort: 3000 - # targetPort: 4181 To be used with a proxy extraContainer - annotations: {} - labels: {} - portName: service - -serviceMonitor: - ## If true, a ServiceMonitor CRD is created for a prometheus operator - ## https://github.com/coreos/prometheus-operator - ## - enabled: false - path: /metrics - # namespace: monitoring (defaults to use the namespace this chart is deployed to) - labels: {} - interval: 1m - scheme: http - tlsConfig: {} - scrapeTimeout: 30s - relabelings: [] - -extraExposePorts: [] - # - name: keycloak - # port: 8080 - # targetPort: 8080 - # type: ClusterIP - -# overrides pod.spec.hostAliases in the grafana deployment's pods -hostAliases: [] - # - ip: "1.2.3.4" - # hostnames: - # - "my.host.com" - -ingress: - enabled: false - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - # Values can be templated - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - labels: {} - path: / - - # pathType is only for k8s > 1.19 - pathType: Prefix - - hosts: - - chart-example.local - ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services. - extraPaths: [] - # - path: /* - # backend: - # serviceName: ssl-redirect - # servicePort: use-annotation - ## Or for k8s > 1.19 - # - path: /* - # pathType: Prefix - # backend: - # service: - # name: ssl-redirect - # port: - # name: service - - - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} -# limits: -# cpu: 100m -# memory: 128Mi -# requests: -# cpu: 100m -# memory: 128Mi - -## Node labels for pod assignment -## ref: https://kubernetes.io/docs/user-guide/node-selection/ -# -nodeSelector: {} - -## Tolerations for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -## -tolerations: [] - -## Affinity for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -## -affinity: {} - -extraInitContainers: [] - -## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod -extraContainers: | -# - name: proxy -# image: quay.io/gambol99/keycloak-proxy:latest -# args: -# - -provider=github -# - -client-id= -# - -client-secret= -# - -github-org= -# - -email-domain=* -# - -cookie-secret= -# - -http-address=http://0.0.0.0:4181 -# - -upstream-url=http://127.0.0.1:3000 -# ports: -# - name: proxy-web -# containerPort: 4181 - -## Volumes that can be used in init containers that will not be mounted to deployment pods -extraContainerVolumes: [] -# - name: volume-from-secret -# secret: -# secretName: secret-to-mount -# - name: empty-dir-volume -# emptyDir: {} - -## Enable persistence using Persistent Volume Claims -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## -persistence: - type: pvc - enabled: false - # storageClassName: default - accessModes: - - ReadWriteOnce - size: 10Gi - # annotations: {} - finalizers: - - kubernetes.io/pvc-protection - # selectorLabels: {} - # subPath: "" - # existingClaim: - - ## If persistence is not enabled, this allows to mount the - ## local storage in-memory to improve performance - ## - inMemory: - enabled: false - ## The maximum usage on memory medium EmptyDir would be - ## the minimum value between the SizeLimit specified - ## here and the sum of memory limits of all containers in a pod - ## - # sizeLimit: 300Mi - -initChownData: - ## If false, data ownership will not be reset at startup - ## This allows the prometheus-server to be run with an arbitrary user - ## - enabled: true - - ## initChownData container image - ## - image: - repository: rancher/mirrored-library-busybox - tag: "1.31.1" - sha: "" - pullPolicy: IfNotPresent - - ## initChownData resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - -# Administrator credentials when not using an existing secret (see below) -adminUser: admin -# adminPassword: strongpassword - -# Use an existing secret for the admin user. -admin: - existingSecret: "" - userKey: admin-user - passwordKey: admin-password - -## Define command to be executed at startup by grafana container -## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/) -## Default is "run.sh" as defined in grafana's Dockerfile -# command: -# - "sh" -# - "/run.sh" - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: - -## Extra environment variables that will be pass onto deployment pods -## -## to provide grafana with access to CloudWatch on AWS EKS: -## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later) -## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the -## same oidc eks provider as noted before (same as the existing line) -## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name -## -## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana", -## -## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess -## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name) -## -## env: -## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here -## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token -## AWS_REGION: us-east-1 -## -## 5. uncomment the EKS section in extraSecretMounts: below -## 6. uncomment the annotation section in the serviceAccount: above -## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn - -env: {} - -## "valueFrom" environment variable references that will be added to deployment pods -## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core -## Renders in container spec as: -## env: -## ... -## - name: -## valueFrom: -## -envValueFrom: {} - -## The name of a secret in the same kubernetes namespace which contain values to be added to the environment -## This can be useful for auth tokens, etc. Value is templated. -envFromSecret: "" - -## Sensible environment variables that will be rendered as new secret object -## This can be useful for auth tokens, etc -envRenderSecret: {} - -## Additional grafana server secret mounts -# Defines additional mounts with secrets. Secrets must be manually created in the namespace. -extraSecretMounts: [] - # - name: secret-files - # mountPath: /etc/secrets - # secretName: grafana-secret-files - # readOnly: true - # subPath: "" - # - # for AWS EKS (cloudwatch) use the following (see also instruction in env: above) - # - name: aws-iam-token - # mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount - # readOnly: true - # projected: - # defaultMode: 420 - # sources: - # - serviceAccountToken: - # audience: sts.amazonaws.com - # expirationSeconds: 86400 - # path: token - # - # for CSI e.g. Azure Key Vault use the following - # - name: secrets-store-inline - # mountPath: /run/secrets - # readOnly: true - # csi: - # driver: secrets-store.csi.k8s.io - # readOnly: true - # volumeAttributes: - # secretProviderClass: "akv-grafana-spc" - # nodePublishSecretRef: # Only required when using service principal mode - # name: grafana-akv-creds # Only required when using service principal mode - -## Additional grafana server volume mounts -# Defines additional volume mounts. -extraVolumeMounts: [] - # - name: extra-volume - # mountPath: /mnt/volume - # readOnly: true - # existingClaim: volume-claim - -## Pass the plugins you want installed as a list. -## -plugins: [] - # - digrich-bubblechart-panel - # - grafana-clock-panel - -## Configure grafana datasources -## ref: http://docs.grafana.org/administration/provisioning/#datasources -## -datasources: {} -# datasources.yaml: -# apiVersion: 1 -# datasources: -# - name: Prometheus -# type: prometheus -# url: http://prometheus-prometheus-server -# access: proxy -# isDefault: true -# - name: CloudWatch -# type: cloudwatch -# access: proxy -# uid: cloudwatch -# editable: false -# jsonData: -# authType: credentials -# defaultRegion: us-east-1 - -## Configure notifiers -## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels -## -notifiers: {} -# notifiers.yaml: -# notifiers: -# - name: email-notifier -# type: email -# uid: email1 -# # either: -# org_id: 1 -# # or -# org_name: Main Org. -# is_default: true -# settings: -# addresses: an_email_address@example.com -# delete_notifiers: - -## Configure grafana dashboard providers -## ref: http://docs.grafana.org/administration/provisioning/#dashboards -## -## `path` must be /var/lib/grafana/dashboards/ -## -dashboardProviders: {} -# dashboardproviders.yaml: -# apiVersion: 1 -# providers: -# - name: 'default' -# orgId: 1 -# folder: '' -# type: file -# disableDeletion: false -# editable: true -# options: -# path: /var/lib/grafana/dashboards/default - -## Configure grafana dashboard to import -## NOTE: To use dashboards you must also enable/configure dashboardProviders -## ref: https://grafana.com/dashboards -## -## dashboards per provider, use provider name as key. -## -dashboards: {} - # default: - # some-dashboard: - # json: | - # $RAW_JSON - # custom-dashboard: - # file: dashboards/custom-dashboard.json - # prometheus-stats: - # gnetId: 2 - # revision: 2 - # datasource: Prometheus - # local-dashboard: - # url: https://example.com/repository/test.json - # token: '' - # local-dashboard-base64: - # url: https://example.com/repository/test-b64.json - # token: '' - # b64content: true - -## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value. -## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both. -## ConfigMap data example: -## -## data: -## example-dashboard.json: | -## RAW_JSON -## -dashboardsConfigMaps: {} -# default: "" - -## Grafana's primary configuration -## NOTE: values in map will be converted to ini format -## ref: http://docs.grafana.org/installation/configuration/ -## -grafana.ini: - paths: - data: /var/lib/grafana/data - logs: /var/log/grafana - plugins: /var/lib/grafana/plugins - provisioning: /etc/grafana/provisioning - analytics: - check_for_updates: true - log: - mode: console - grafana_net: - url: https://grafana.net -## grafana Authentication can be enabled with the following values on grafana.ini - # server: - # The full public facing url you use in browser, used for redirects and emails - # root_url: - # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana - # auth.github: - # enabled: false - # allow_sign_up: false - # scopes: user:email,read:org - # auth_url: https://github.com/login/oauth/authorize - # token_url: https://github.com/login/oauth/access_token - # api_url: https://api.github.com/user - # team_ids: - # allowed_organizations: - # client_id: - # client_secret: -## LDAP Authentication can be enabled with the following values on grafana.ini -## NOTE: Grafana will fail to start if the value for ldap.toml is invalid - # auth.ldap: - # enabled: true - # allow_sign_up: true - # config_file: /etc/grafana/ldap.toml - -## Grafana's LDAP configuration -## Templated by the template in _helpers.tpl -## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled -## ref: http://docs.grafana.org/installation/configuration/#auth-ldap -## ref: http://docs.grafana.org/installation/ldap/#configuration -ldap: - enabled: false - # `existingSecret` is a reference to an existing secret containing the ldap configuration - # for Grafana in a key `ldap-toml`. - existingSecret: "" - # `config` is the content of `ldap.toml` that will be stored in the created secret - config: "" - # config: |- - # verbose_logging = true - - # [[servers]] - # host = "my-ldap-server" - # port = 636 - # use_ssl = true - # start_tls = false - # ssl_skip_verify = false - # bind_dn = "uid=%s,ou=users,dc=myorg,dc=com" - -## Grafana's SMTP configuration -## NOTE: To enable, grafana.ini must be configured with smtp.enabled -## ref: http://docs.grafana.org/installation/configuration/#smtp -smtp: - # `existingSecret` is a reference to an existing secret containing the smtp configuration - # for Grafana. - existingSecret: "" - userKey: "user" - passwordKey: "password" - -## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders -## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards -sidecar: - image: - repository: rancher/mirrored-kiwigrid-k8s-sidecar - tag: 1.10.7 - sha: "" - imagePullPolicy: IfNotPresent - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi - # skipTlsVerify Set to true to skip tls verification for kube api calls - # skipTlsVerify: true - enableUniqueFilenames: false - dashboards: - enabled: false - SCProvider: true - # label that the configmaps with dashboards are marked with - label: grafana_dashboard - # value of label that the configmaps with dashboards are set to - labelValue: null - # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set) - folder: /tmp/dashboards - # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead - defaultFolderName: null - # If specified, the sidecar will search for dashboard config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - # If specified, the sidecar will look for annotation with this name to create folder and put graph here. - # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure. - folderAnnotation: null - # provider configuration that lets grafana manage the dashboards - provider: - # name of the provider, should be unique - name: sidecarProvider - # orgid as configured in grafana - orgid: 1 - # folder in which the dashboards should be imported in grafana - folder: '' - # type of the provider - type: file - # disableDelete to activate a import-only behaviour - disableDelete: false - # allow updating provisioned dashboards from the UI - allowUiUpdates: false - # allow Grafana to replicate dashboard structure from filesystem - foldersFromFilesStructure: false - datasources: - enabled: false - # label that the configmaps with datasources are marked with - label: grafana_datasource - # value of label that the configmaps with datasources are set to - labelValue: null - # If specified, the sidecar will search for datasource config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - - ## The name of a secret in the same kubernetes namespace which contain values to be added to the environment - ## This can be useful for database passwords, etc. Value is templated. - envFromSecret: "" - notifiers: - enabled: false - # label that the configmaps with notifiers are marked with - label: grafana_notifier - # If specified, the sidecar will search for notifier config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - -## Override the deployment namespace -## -namespaceOverride: "" - -## Number of old ReplicaSets to retain -## -revisionHistoryLimit: 10 - -## Add a seperate remote image renderer deployment/service -imageRenderer: - # Enable the image-renderer deployment & service - enabled: false - replicas: 1 - image: - # image-renderer Image repository - repository: rancher/mirrored-grafana-grafana-image-renderer - # image-renderer Image tag - tag: 2.0.1 - # image-renderer Image sha (optional) - sha: "" - # image-renderer ImagePullPolicy - pullPolicy: Always - # extra environment variables - env: - HTTP_HOST: "0.0.0.0" - # RENDERING_ARGS: --disable-gpu,--window-size=1280x758 - # RENDERING_MODE: clustered - # image-renderer deployment serviceAccount - serviceAccountName: "" - # image-renderer deployment securityContext - securityContext: {} - # image-renderer deployment Host Aliases - hostAliases: [] - # image-renderer deployment priority class - priorityClassName: '' - service: - # image-renderer service port name - portName: 'http' - # image-renderer service port used by both service and deployment - port: 8081 - targetPort: 8081 - # In case a sub_path is used this needs to be added to the image renderer callback - grafanaSubPath: "" - # name of the image-renderer port on the pod - podPortName: http - # number of image-renderer replica sets to keep - revisionHistoryLimit: 10 - networkPolicy: - # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods - limitIngress: true - # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods - limitEgress: false - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/Chart.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/Chart.yaml deleted file mode 100644 index b068466ef..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/Chart.yaml +++ /dev/null @@ -1,21 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.32.100-rc01 - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Istio - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/requests-cpu: 710m - catalog.cattle.io/requests-memory: 2314Mi - catalog.cattle.io/ui-component: istio -apiVersion: v1 -appVersion: 1.8.6 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.8.601 diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/README.md b/charts/rancher-istio-1.8/rancher-istio/1.8.601/README.md deleted file mode 100644 index 199e45312..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart - -# Uninstallation Requirements -To ensure rancher-istio uninstalls correctly, you must uninstall rancher-istio prior to uninstalling chart dependencies (see installation requirements for chart dependencies). This is because all definitions need to be available in order to properly build the rancher-istio objects for removal. - -If you remove dependent CRD charts prior to removing rancher-istio, you may encounter the following error:: - -`Error: uninstallation completed with 1 error(s): unable to build kubernetes objects for delete: unable to recognize "": no matches for kind "MonitoringDashboard" in version "monitoring.kiali.io/v1alpha1"` - -# Addons - -## Kiali - -Kiali allows you to view and manage your istio-based service mesh through an easy to use dashboard. - -#### Dependencies -- rancher-monitoring chart or other Prometheus installation - -This dependecy installs the required CRDs for installing Kiali. Since Kiali is bundled in with Istio in this chart, if you do not have these dependencies installed, your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` when installing Istio for a succesful installation. - -> **Note:** The following configuration options assume you have installed the dependecies for Kiali. Please ensure you have Promtheus in your cluster before proceeding. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -#### External Services - -##### Prometheus -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Grafana -The `kiali.external_services.grafana` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `grafana.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Tracing -The `kiali.external_services.tracing` url and `.Values.tracing.contextPath` is set in the rancher-istio values.yaml: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` -The url depends on the default values for `namespaceOverride`, and `.Values.service.externalPort` being set in your rancher-tracing or other tracing instance. - -## Jaeger - -Jaeger allows you to trace and monitor distributed microservices. - -> **Note:** This addon is using the all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io/docs/1.21/getting-started/) documentation to determine which installation you will need for your production needs. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/app-readme.md b/charts/rancher-istio-1.8/rancher-istio/1.8.601/app-readme.md deleted file mode 100644 index 0e42df083..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/app-readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Rancher Istio - -Our [Istio](https://istio.io/) installer wraps the istioctl binary commands in a handy helm chart, including an overlay file option to allow complex customization. It also includes: -* **[Kiali](https://kiali.io/)**: Used for graphing traffic flow throughout the mesh -* **[Jaeger](https://www.jaegertracing.io/)**: A quick start, all-in-one installation used for tracing distributed systemm. This is not production qualified, please refer to jaeger documentation to determine which installation you may need instead. - -### Dependencies - -**Rancher Monitoring or other Prometheus installation** - -The Prometheus CRDs are required for installing Kiali which is enabled by default. If you do not have Prometheus installed your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` to bypass this requirement. - -### Customization - -**Rancher Monitoring** - -The Rancher Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -**Custom Prometheus Installation with Kiali** - -To use a custom Monitoring installation, set the `kiali.external_services.prometheus` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` in your rancher-monitoring or other monitoring instance: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -**Custom Grafana Installation with Kiali** - -To use a custom Grafana installation, set the `kiali.external_services.grafana` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `granfa.service.port` in your rancher-monitoring or other grafana instance: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -**Custom Tracing Installation with Kiali** - -To use a custom Tracing installation, set the `kiali.external_services.tracing` url and update the `.Values.tracing.contextPath` in the rancher-istio values.yaml. - -This url depends on the values for `namespaceOverride`, and `.Values.service.externalPort` in your rancher-tracing or other tracing instance.: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/). diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/Chart.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/Chart.yaml deleted file mode 100644 index 9b6fdf385..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.32.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: kiali -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.32.1 diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/NOTES.txt b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/NOTES.txt deleted file mode 100644 index 751019401..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/_helpers.tpl b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/_helpers.tpl deleted file mode 100644 index dd33bbe48..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/_helpers.tpl +++ /dev/null @@ -1,192 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Identifies the log_level with the old verbose_mode and the new log_level considered. -*/}} -{{- define "kiali-server.logLevel" -}} -{{- if .Values.deployment.verbose_mode -}} -{{- .Values.deployment.verbose_mode -}} -{{- else -}} -{{- .Values.deployment.logger.log_level -}} -{{- end -}} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: "kiali" -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- if .Values.external_services.custom_dashboards.enabled }} - {{- $includere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- $excludere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} - {{- else }} - {{- print "" }} - {{- end }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/cabundle.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/cabundle.yaml deleted file mode 100644 index 7462b95a7..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/configmap.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/configmap.yaml deleted file mode 100644 index b1bf53173..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/envoy.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/envoy.yaml deleted file mode 100644 index 85b402017..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics - discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/go.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/go.yaml deleted file mode 100644 index 2d2f42a93..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/go.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/kiali.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/kiali.yaml deleted file mode 100644 index b1f011b4f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100644 index 2e1ed5cff..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100644 index d64596882..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100644 index 76e8d0a4a..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-1.1.yaml deleted file mode 100644 index 1d4951196..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-x.y.yaml deleted file mode 100644 index 57ddc60ef..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/nodejs.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/nodejs.yaml deleted file mode 100644 index 1ffe0aa10..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/quarkus.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/quarkus.yaml deleted file mode 100644 index cef5f3dce..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100644 index 42d87d890..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm.yaml deleted file mode 100644 index ced3acdd9..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-tomcat.yaml deleted file mode 100644 index c07016aa2..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/thorntail.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/thorntail.yaml deleted file mode 100644 index 6bd85e6f5..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/tomcat.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/tomcat.yaml deleted file mode 100644 index 9a803342f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-client.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-client.yaml deleted file mode 100644 index 2d591d6b0..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-eventbus.yaml deleted file mode 100644 index 65f9ee2ec..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-jvm.yaml deleted file mode 100644 index 2663186f3..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-pool.yaml deleted file mode 100644 index f6af921b3..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-server.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-server.yaml deleted file mode 100644 index de6b89df9..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/deployment.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/deployment.yaml deleted file mode 100644 index 100c57922..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/deployment.yaml +++ /dev/null @@ -1,174 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - {{- if .Values.deployment.pod_labels }} - {{- toYaml .Values.deployment.pod_labels | nindent 8 }} - {{- end }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: "" - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LOG_LEVEL - value: "{{ include "kiali-server.logLevel" . }}" - - name: LOG_FORMAT - value: "{{ .Values.deployment.logger.log_format }}" - - name: LOG_TIME_FIELD_FORMAT - value: "{{ .Values.deployment.logger.time_field_format }}" - - name: LOG_SAMPLER_RATE - value: "{{ .Values.deployment.logger.sampler_rate }}" - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/hpa.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/hpa.yaml deleted file mode 100644 index 934c4c1e9..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.hpa.spec }} ---- -apiVersion: {{ .Values.deployment.hpa.api_version }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "kiali-server.fullname" . }} - {{- toYaml .Values.deployment.hpa.spec | nindent 2 }} -... -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/ingress.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/ingress.yaml deleted file mode 100644 index e4c98db1b..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/oauth.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/oauth.yaml deleted file mode 100644 index a178bb85e..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/psp.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/psp.yaml deleted file mode 100644 index f891892cc..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/psp.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: kiali ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: - - policy - resourceNames: - - {{ include "kiali-server.fullname" . }}-psp - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - emptyDir - - projected - - secret - - downwardAPI - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-controlplane.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-controlplane.yaml deleted file mode 100644 index a22c76756..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-controlplane.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - secrets - verbs: - - list -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-viewer.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-viewer.yaml deleted file mode 100644 index 9fdd9fd1d..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role-viewer.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role.yaml deleted file mode 100644 index 8444bc753..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/role.yaml +++ /dev/null @@ -1,108 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding-controlplane.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding-controlplane.yaml deleted file mode 100644 index 5a0015836..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding-controlplane.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-controlplane -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding.yaml deleted file mode 100644 index 1eaabd65f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/route.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/route.yaml deleted file mode 100644 index 27940dc96..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/service.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/service.yaml deleted file mode 100644 index 9ccf4f388..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/service.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if and (not (empty .Values.server.web_fqdn)) (not (empty .Values.server.web_schema)) }} - {{- if empty .Values.server.web_port }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}{{ default "" .Values.server.web_root }} - {{- else }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}:{{ .Values.server.web_port }}{{(default "" .Values.server.web_root) }} - {{- end }} - {{- end }} - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/serviceaccount.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/serviceaccount.yaml deleted file mode 100644 index 9151b6f6a..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/validate-install-crd.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/validate-install-crd.yaml deleted file mode 100644 index b42eeb266..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/web-root-configmap.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/web-root-configmap.yaml deleted file mode 100644 index 970d4e4f5..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/values.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/values.yaml deleted file mode 100644 index aada4e09a..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/kiali/values.yaml +++ /dev/null @@ -1,93 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - hpa: - api_version: "autoscaling/v2beta2" - spec: {} - repository: rancher/mirrored-kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.32.0 - ingress_enabled: true - logger: - log_format: "text" - log_level: "info" - time_field_format: "2006-01-02T15:04:05Z07:00" - sampler_rate: "1" - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - pod_labels: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - version_label: v1.32.0 - view_only_mode: false - -external_services: - custom_dashboards: - enabled: true - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: - rbac: - pspEnabled: false diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/.helmignore b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/Chart.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/Chart.yaml deleted file mode 100644 index 6e368616d..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: istio-system - catalog.rancher.io/release-name: rancher-tracing -apiVersion: v1 -appVersion: 1.20.0 -description: A quick start Jaeger Tracing installation using the all-in-one demo. - This is not production qualified. Refer to https://www.jaegertracing.io/ for details. -name: tracing -version: 1.20.1 diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/README.md b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/README.md deleted file mode 100644 index 25534c628..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Jaeger - -A Rancher chart based on the Jaeger all-in-one quick installation option. This chart will allow you to trace and monitor distributed microservices. - -> **Note:** The basic all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io) documentation to determine which installation you will need for your production needs. diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_affinity.tpl b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_affinity.tpl deleted file mode 100644 index bf6a9aee5..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_affinity.tpl +++ /dev/null @@ -1,92 +0,0 @@ -{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} -{{- define "nodeAffinity" }} - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityRequiredDuringScheduling" . }} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityPreferredDuringScheduling" . }} -{{- end }} - -{{- define "nodeAffinityRequiredDuringScheduling" }} - nodeSelectorTerms: - - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - {{ $key | quote }} - {{- end }} - {{- end }} - {{- $nodeSelector := default .Values.global.defaultNodeSelector .Values.nodeSelector -}} - {{- range $key, $val := $nodeSelector }} - - key: {{ $key }} - operator: In - values: - - {{ $val | quote }} - {{- end }} -{{- end }} - -{{- define "nodeAffinityPreferredDuringScheduling" }} - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - weight: {{ $val | int }} - preference: - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - - {{ $key | quote }} - {{- end }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinity" }} -{{- if or .Values.podAntiAffinityLabelSelector .Values.podAntiAffinityTermLabelSelector}} - podAntiAffinity: - {{- if .Values.podAntiAffinityLabelSelector }} - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityRequiredDuringScheduling" . }} - {{- end }} - {{- if or .Values.podAntiAffinityTermLabelSelector}} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityPreferredDuringScheduling" . }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "podAntiAffinityRequiredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityLabelSelector }} - - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinityPreferredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityTermLabelSelector }} - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - weight: 100 - {{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_helpers.tpl b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_helpers.tpl deleted file mode 100644 index 56cfa7335..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/_helpers.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "tracing.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "tracing.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/deployment.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/deployment.yaml deleted file mode 100644 index 25bb67fd3..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/deployment.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - selector: - matchLabels: - app: {{ .Values.provider }} - template: - metadata: - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - annotations: - sidecar.istio.io/inject: "false" - prometheus.io/scrape: "true" - prometheus.io/port: "14269" -{{- if .Values.jaeger.podAnnotations }} -{{ toYaml .Values.jaeger.podAnnotations | indent 8 }} -{{- end }} - spec: - containers: - - name: jaeger - image: "{{ template "system_default_registry" . }}{{ .Values.jaeger.repository }}:{{ .Values.jaeger.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - env: - {{- if eq .Values.jaeger.spanStorageType "badger" }} - - name: BADGER_EPHEMERAL - value: "false" - - name: SPAN_STORAGE_TYPE - value: "badger" - - name: BADGER_DIRECTORY_VALUE - value: "/badger/data" - - name: BADGER_DIRECTORY_KEY - value: "/badger/key" - {{- end }} - - name: COLLECTOR_ZIPKIN_HTTP_PORT - value: "9411" - - name: MEMORY_MAX_TRACES - value: "{{ .Values.jaeger.memory.max_traces }}" - - name: QUERY_BASE_PATH - value: {{ if .Values.contextPath }} {{ .Values.contextPath }} {{ else }} /{{ .Values.provider }} {{ end }} - livenessProbe: - httpGet: - path: / - port: 14269 - readinessProbe: - httpGet: - path: / - port: 14269 -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumeMounts: - - name: data - mountPath: /badger -{{- end }} - resources: -{{- if .Values.jaeger.resources }} -{{ toYaml .Values.jaeger.resources | indent 12 }} -{{- else }} -{{ toYaml .Values.global.defaultResources | indent 12 }} -{{- end }} - affinity: - {{- include "nodeAffinity" . | indent 6 }} - {{- include "podAntiAffinity" . | indent 6 }} - {{- if .Values.global.rbac.pspEnabled }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - serviceAccountName: {{ include "tracing.fullname" . }} - {{- end }} -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumes: - - name: data -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} - persistentVolumeClaim: - claimName: istio-jaeger-pvc -{{- else }} - emptyDir: {} -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/psp.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/psp.yaml deleted file mode 100644 index 44b230492..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/psp.yaml +++ /dev/null @@ -1,86 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "tracing.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ include "tracing.fullname" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -rules: -- apiGroups: - - policy - resourceNames: - - {{ include "tracing.fullname" . }} - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - emptyDir - - secret - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/pvc.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/pvc.yaml deleted file mode 100644 index 9b4c55e4f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/pvc.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: istio-jaeger-pvc - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} -spec: - storageClassName: {{ .Values.jaeger.storageClassName }} - accessModes: - - {{ .Values.jaeger.accessMode }} - resources: - requests: - storage: {{.Values.jaeger.persistentVolumeClaim.storage }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/service.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/service.yaml deleted file mode 100644 index 4210a9b5f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/templates/service.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: tracing - namespace: {{ .Release.Namespace }} - annotations: - {{- range $key, $val := .Values.service.annotations }} - {{ $key }}: {{ $val | quote }} - {{- end }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 16686 - selector: - app: {{ .Values.provider }} ---- -# Jaeger implements the Zipkin API. To support swapping out the tracing backend, we use a Service named Zipkin. -apiVersion: v1 -kind: Service -metadata: - name: zipkin - namespace: {{ .Release.Namespace }} - labels: - name: zipkin - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.zipkin.queryPort }} - targetPort: {{ .Values.zipkin.queryPort }} - selector: - app: {{ .Values.provider }} ---- -apiVersion: v1 -kind: Service -metadata: - name: jaeger-collector - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: ClusterIP - ports: - - name: jaeger-collector-http - port: 14268 - targetPort: 14268 - protocol: TCP - - name: jaeger-collector-grpc - port: 14250 - targetPort: 14250 - protocol: TCP - selector: - app: {{ .Values.provider }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/values.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/values.yaml deleted file mode 100644 index 18ff81c3c..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/charts/tracing/values.yaml +++ /dev/null @@ -1,44 +0,0 @@ -provider: jaeger -contextPath: "" -nodeSelector: {} -podAntiAffinityLabelSelector: [] -podAntiAffinityTermLabelSelector: [] -nameOverride: "" -fullnameOverride: "" - -global: - cattle: - systemDefaultRegistry: "" - defaultResources: {} - imagePullPolicy: IfNotPresent - imagePullSecrets: [] - arch: - amd64: 2 - s390x: 2 - ppc64le: 2 - defaultNodeSelector: {} - rbac: - pspEnabled: false - -jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 - # spanStorageType value can be "memory" and "badger" for all-in-one image - spanStorageType: badger - resources: - requests: - cpu: 10m - persistentVolumeClaim: - enabled: false - storage: 5Gi - storageClassName: "" - accessMode: ReadWriteMany - memory: - max_traces: 50000 -zipkin: - queryPort: 9411 -service: - annotations: {} - name: http-query - type: ClusterIP - externalPort: 16686 diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/configs/istio-base.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/configs/istio-base.yaml deleted file mode 100644 index 7ff972e2d..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/configs/istio-base.yaml +++ /dev/null @@ -1,89 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - addonComponents: - istiocoredns: - enabled: {{ .Values.istiocoredns.enabled }} - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - defaultConfig: - proxyMetadata: - {{- if .Values.dns.enabled }} - ISTIO_META_DNS_CAPTURE: "true" - {{- end }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - istiocoredns: - coreDNSImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.image.repository }} - coreDNSPluginImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.pluginImage.repository }}:{{ .Values.istiocoredns.pluginImage.tag }} - coreDNSTag: {{ .Values.istiocoredns.image.tag }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - excludeNamespaces: - {{- toYaml .Values.cni.excludeNamespaces | nindent 8 }} - logLevel: {{ .Values.cni.logLevel }} - {{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/requirements.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/requirements.yaml deleted file mode 100644 index 943a08326..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/requirements.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dependencies: -- condition: kiali.enabled - name: kiali - repository: file://./charts/kiali -- condition: tracing.enabled - name: tracing - repository: file://./charts/tracing diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/samples/overlay-example.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/samples/overlay-example.yaml deleted file mode 100644 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/_helpers.tpl b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/_helpers.tpl deleted file mode 100644 index 3f7af953a..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/admin-role.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/admin-role.yaml deleted file mode 100644 index ad1313c4f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/base-config-map.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/base-config-map.yaml deleted file mode 100644 index 5323917bc..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrole.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrole.yaml deleted file mode 100644 index a93b3df95..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrole.yaml +++ /dev/null @@ -1,120 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' -- apiGroups: - - policy - resourceNames: - - istio-installer - resources: - - podsecuritypolicies - verbs: - - use diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrolebinding.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrolebinding.yaml deleted file mode 100644 index 9d74a0434..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/edit-role.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/edit-role.yaml deleted file mode 100644 index d1059d58d..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-cni-psp.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-cni-psp.yaml deleted file mode 100644 index 5b94c8503..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-cni-psp.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -spec: - allowPrivilegeEscalation: true - fsGroup: - rule: RunAsAny - hostNetwork: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - secret - - configMap - - emptyDir - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: psp-istio-cni -subjects: - - kind: ServiceAccount - name: istio-cni ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -rules: -- apiGroups: - - policy - resourceNames: - - psp-istio-cni - resources: - - podsecuritypolicies - verbs: - - use -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-job.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-job.yaml deleted file mode 100644 index 9a13f5698..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-job.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - {{- if .Values.global.rbac.pspEnabled }} - securityContext: - runAsUser: 101 - runAsGroup: 101 - {{- end }} - restartPolicy: Never diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-psp.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-psp.yaml deleted file mode 100644 index f0b5ee565..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-install-psp.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-psp.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-psp.yaml deleted file mode 100644 index b3758b74f..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-psp.yaml +++ /dev/null @@ -1,81 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: istio-psp -subjects: - - kind: ServiceAccount - name: istio-egressgateway-service-account - - kind: ServiceAccount - name: istio-ingressgateway-service-account - - kind: ServiceAccount - name: istio-mixer-service-account - - kind: ServiceAccount - name: istio-operator-authproxy - - kind: ServiceAccount - name: istiod-service-account - - kind: ServiceAccount - name: istio-sidecar-injector-service-account - - kind: ServiceAccount - name: istiocoredns-service-account - - kind: ServiceAccount - name: default ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -rules: -- apiGroups: - - policy - resourceNames: - - istio-psp - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - emptyDir - - projected - - secret - - downwardAPI - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-uninstall-job.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-uninstall-job.yaml deleted file mode 100644 index a7f156325..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - securityContext: - runAsUser: 101 - runAsGroup: 101 - restartPolicy: OnFailure diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/overlay-config-map.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/overlay-config-map.yaml deleted file mode 100644 index 287d26b2c..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/service-monitors.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/service-monitors.yaml deleted file mode 100644 index c3d60c4fc..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/serviceaccount.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/serviceaccount.yaml deleted file mode 100644 index 82b6cbb7e..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/view-role.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/view-role.yaml deleted file mode 100644 index 5947d3eba..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio-1.8/rancher-istio/1.8.601/values.yaml b/charts/rancher-istio-1.8/rancher-istio/1.8.601/values.yaml deleted file mode 100644 index cae665177..000000000 --- a/charts/rancher-istio-1.8/rancher-istio/1.8.601/values.yaml +++ /dev/null @@ -1,95 +0,0 @@ -overlayFile: "" -tag: 1.8.6 -##Setting forceInstall: true will remove the check for istio version < 1.6.x and will not analyze your install cluster prior to install -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.8.6-rancher1 - -##Deprecated as of 1.8 and unsupported in 1.9, native support provided by enabling `dns.enabled=true` -istiocoredns: - enabled: false - image: - repository: rancher/mirrored-coredns-coredns - tag: 1.6.2 - pluginImage: - repository: rancher/mirrored-istio-coredns-plugin - tag: 0.2-istio-1.1 - -##Native support for dns added in 1.8 -dns: - enabled: false - -base: - enabled: true - -cni: - enabled: false - repository: rancher/mirrored-istio-install-cni - tag: 1.8.6 - logLevel: info - excludeNamespaces: - - istio-system - - kube-system - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/mirrored-istio-pilot - tag: 1.8.6 - -telemetry: - enabled: true - v2: - enabled: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.8.6 - proxy_init: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.8.6 - defaultPodDisruptionBudget: - enabled: true - rbac: - pspEnabled: false - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/mirrored-kiali-kiali - tag: v1.32.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - in_cluster_url: "http://tracing.istio-system.svc:16686/jaeger" - grafana: - in_cluster_url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - -tracing: - enabled: false - contextPath: "/jaeger" - jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/Chart.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/Chart.yaml deleted file mode 100644 index 60d96c61c..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/Chart.yaml +++ /dev/null @@ -1,21 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.32.100-rc01 - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Istio - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/requests-cpu: 710m - catalog.cattle.io/requests-memory: 2314Mi - catalog.cattle.io/ui-component: istio -apiVersion: v1 -appVersion: 1.9.5 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.9.501 diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/README.md b/charts/rancher-istio-1.9/rancher-istio/1.9.501/README.md deleted file mode 100644 index 199e45312..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart - -# Uninstallation Requirements -To ensure rancher-istio uninstalls correctly, you must uninstall rancher-istio prior to uninstalling chart dependencies (see installation requirements for chart dependencies). This is because all definitions need to be available in order to properly build the rancher-istio objects for removal. - -If you remove dependent CRD charts prior to removing rancher-istio, you may encounter the following error:: - -`Error: uninstallation completed with 1 error(s): unable to build kubernetes objects for delete: unable to recognize "": no matches for kind "MonitoringDashboard" in version "monitoring.kiali.io/v1alpha1"` - -# Addons - -## Kiali - -Kiali allows you to view and manage your istio-based service mesh through an easy to use dashboard. - -#### Dependencies -- rancher-monitoring chart or other Prometheus installation - -This dependecy installs the required CRDs for installing Kiali. Since Kiali is bundled in with Istio in this chart, if you do not have these dependencies installed, your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` when installing Istio for a succesful installation. - -> **Note:** The following configuration options assume you have installed the dependecies for Kiali. Please ensure you have Promtheus in your cluster before proceeding. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -#### External Services - -##### Prometheus -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Grafana -The `kiali.external_services.grafana` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `grafana.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Tracing -The `kiali.external_services.tracing` url and `.Values.tracing.contextPath` is set in the rancher-istio values.yaml: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` -The url depends on the default values for `namespaceOverride`, and `.Values.service.externalPort` being set in your rancher-tracing or other tracing instance. - -## Jaeger - -Jaeger allows you to trace and monitor distributed microservices. - -> **Note:** This addon is using the all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io/docs/1.21/getting-started/) documentation to determine which installation you will need for your production needs. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/app-readme.md b/charts/rancher-istio-1.9/rancher-istio/1.9.501/app-readme.md deleted file mode 100644 index 0e42df083..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/app-readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Rancher Istio - -Our [Istio](https://istio.io/) installer wraps the istioctl binary commands in a handy helm chart, including an overlay file option to allow complex customization. It also includes: -* **[Kiali](https://kiali.io/)**: Used for graphing traffic flow throughout the mesh -* **[Jaeger](https://www.jaegertracing.io/)**: A quick start, all-in-one installation used for tracing distributed systemm. This is not production qualified, please refer to jaeger documentation to determine which installation you may need instead. - -### Dependencies - -**Rancher Monitoring or other Prometheus installation** - -The Prometheus CRDs are required for installing Kiali which is enabled by default. If you do not have Prometheus installed your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` to bypass this requirement. - -### Customization - -**Rancher Monitoring** - -The Rancher Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -**Custom Prometheus Installation with Kiali** - -To use a custom Monitoring installation, set the `kiali.external_services.prometheus` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` in your rancher-monitoring or other monitoring instance: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -**Custom Grafana Installation with Kiali** - -To use a custom Grafana installation, set the `kiali.external_services.grafana` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `granfa.service.port` in your rancher-monitoring or other grafana instance: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -**Custom Tracing Installation with Kiali** - -To use a custom Tracing installation, set the `kiali.external_services.tracing` url and update the `.Values.tracing.contextPath` in the rancher-istio values.yaml. - -This url depends on the values for `namespaceOverride`, and `.Values.service.externalPort` in your rancher-tracing or other tracing instance.: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/). diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/Chart.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/Chart.yaml deleted file mode 100644 index 9b6fdf385..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.32.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: kiali -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.32.1 diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/NOTES.txt b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/NOTES.txt deleted file mode 100644 index 751019401..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/_helpers.tpl b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/_helpers.tpl deleted file mode 100644 index dd33bbe48..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/_helpers.tpl +++ /dev/null @@ -1,192 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Identifies the log_level with the old verbose_mode and the new log_level considered. -*/}} -{{- define "kiali-server.logLevel" -}} -{{- if .Values.deployment.verbose_mode -}} -{{- .Values.deployment.verbose_mode -}} -{{- else -}} -{{- .Values.deployment.logger.log_level -}} -{{- end -}} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: "kiali" -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- if .Values.external_services.custom_dashboards.enabled }} - {{- $includere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- $excludere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} - {{- else }} - {{- print "" }} - {{- end }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/cabundle.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/cabundle.yaml deleted file mode 100644 index 7462b95a7..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/configmap.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/configmap.yaml deleted file mode 100644 index b1bf53173..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/envoy.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/envoy.yaml deleted file mode 100644 index 85b402017..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics - discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/go.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/go.yaml deleted file mode 100644 index 2d2f42a93..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/go.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/kiali.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/kiali.yaml deleted file mode 100644 index b1f011b4f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100644 index 2e1ed5cff..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100644 index d64596882..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100644 index 76e8d0a4a..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-1.1.yaml deleted file mode 100644 index 1d4951196..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-x.y.yaml deleted file mode 100644 index 57ddc60ef..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/nodejs.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/nodejs.yaml deleted file mode 100644 index 1ffe0aa10..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/quarkus.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/quarkus.yaml deleted file mode 100644 index cef5f3dce..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100644 index 42d87d890..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm.yaml deleted file mode 100644 index ced3acdd9..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-tomcat.yaml deleted file mode 100644 index c07016aa2..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/thorntail.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/thorntail.yaml deleted file mode 100644 index 6bd85e6f5..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/tomcat.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/tomcat.yaml deleted file mode 100644 index 9a803342f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-client.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-client.yaml deleted file mode 100644 index 2d591d6b0..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-eventbus.yaml deleted file mode 100644 index 65f9ee2ec..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-jvm.yaml deleted file mode 100644 index 2663186f3..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-pool.yaml deleted file mode 100644 index f6af921b3..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-server.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-server.yaml deleted file mode 100644 index de6b89df9..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/deployment.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/deployment.yaml deleted file mode 100644 index 100c57922..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/deployment.yaml +++ /dev/null @@ -1,174 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - {{- if .Values.deployment.pod_labels }} - {{- toYaml .Values.deployment.pod_labels | nindent 8 }} - {{- end }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: "" - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LOG_LEVEL - value: "{{ include "kiali-server.logLevel" . }}" - - name: LOG_FORMAT - value: "{{ .Values.deployment.logger.log_format }}" - - name: LOG_TIME_FIELD_FORMAT - value: "{{ .Values.deployment.logger.time_field_format }}" - - name: LOG_SAMPLER_RATE - value: "{{ .Values.deployment.logger.sampler_rate }}" - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/hpa.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/hpa.yaml deleted file mode 100644 index 934c4c1e9..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.hpa.spec }} ---- -apiVersion: {{ .Values.deployment.hpa.api_version }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "kiali-server.fullname" . }} - {{- toYaml .Values.deployment.hpa.spec | nindent 2 }} -... -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/ingress.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/ingress.yaml deleted file mode 100644 index e4c98db1b..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/oauth.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/oauth.yaml deleted file mode 100644 index a178bb85e..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/psp.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/psp.yaml deleted file mode 100644 index f891892cc..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/psp.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: kiali ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: - - policy - resourceNames: - - {{ include "kiali-server.fullname" . }}-psp - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - emptyDir - - projected - - secret - - downwardAPI - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-controlplane.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-controlplane.yaml deleted file mode 100644 index a22c76756..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-controlplane.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - secrets - verbs: - - list -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-viewer.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-viewer.yaml deleted file mode 100644 index 9fdd9fd1d..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role-viewer.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role.yaml deleted file mode 100644 index 8444bc753..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/role.yaml +++ /dev/null @@ -1,108 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding-controlplane.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding-controlplane.yaml deleted file mode 100644 index 5a0015836..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding-controlplane.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-controlplane -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding.yaml deleted file mode 100644 index 1eaabd65f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/route.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/route.yaml deleted file mode 100644 index 27940dc96..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/service.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/service.yaml deleted file mode 100644 index 9ccf4f388..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/service.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if and (not (empty .Values.server.web_fqdn)) (not (empty .Values.server.web_schema)) }} - {{- if empty .Values.server.web_port }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}{{ default "" .Values.server.web_root }} - {{- else }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}:{{ .Values.server.web_port }}{{(default "" .Values.server.web_root) }} - {{- end }} - {{- end }} - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/serviceaccount.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/serviceaccount.yaml deleted file mode 100644 index 9151b6f6a..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/validate-install-crd.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/validate-install-crd.yaml deleted file mode 100644 index b42eeb266..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/web-root-configmap.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/web-root-configmap.yaml deleted file mode 100644 index 970d4e4f5..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/values.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/values.yaml deleted file mode 100644 index aada4e09a..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/kiali/values.yaml +++ /dev/null @@ -1,93 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - hpa: - api_version: "autoscaling/v2beta2" - spec: {} - repository: rancher/mirrored-kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.32.0 - ingress_enabled: true - logger: - log_format: "text" - log_level: "info" - time_field_format: "2006-01-02T15:04:05Z07:00" - sampler_rate: "1" - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - pod_labels: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - version_label: v1.32.0 - view_only_mode: false - -external_services: - custom_dashboards: - enabled: true - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: - rbac: - pspEnabled: false diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/.helmignore b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/Chart.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/Chart.yaml deleted file mode 100644 index 6e368616d..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: istio-system - catalog.rancher.io/release-name: rancher-tracing -apiVersion: v1 -appVersion: 1.20.0 -description: A quick start Jaeger Tracing installation using the all-in-one demo. - This is not production qualified. Refer to https://www.jaegertracing.io/ for details. -name: tracing -version: 1.20.1 diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/README.md b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/README.md deleted file mode 100644 index 25534c628..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Jaeger - -A Rancher chart based on the Jaeger all-in-one quick installation option. This chart will allow you to trace and monitor distributed microservices. - -> **Note:** The basic all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io) documentation to determine which installation you will need for your production needs. diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_affinity.tpl b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_affinity.tpl deleted file mode 100644 index bf6a9aee5..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_affinity.tpl +++ /dev/null @@ -1,92 +0,0 @@ -{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} -{{- define "nodeAffinity" }} - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityRequiredDuringScheduling" . }} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityPreferredDuringScheduling" . }} -{{- end }} - -{{- define "nodeAffinityRequiredDuringScheduling" }} - nodeSelectorTerms: - - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - {{ $key | quote }} - {{- end }} - {{- end }} - {{- $nodeSelector := default .Values.global.defaultNodeSelector .Values.nodeSelector -}} - {{- range $key, $val := $nodeSelector }} - - key: {{ $key }} - operator: In - values: - - {{ $val | quote }} - {{- end }} -{{- end }} - -{{- define "nodeAffinityPreferredDuringScheduling" }} - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - weight: {{ $val | int }} - preference: - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - - {{ $key | quote }} - {{- end }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinity" }} -{{- if or .Values.podAntiAffinityLabelSelector .Values.podAntiAffinityTermLabelSelector}} - podAntiAffinity: - {{- if .Values.podAntiAffinityLabelSelector }} - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityRequiredDuringScheduling" . }} - {{- end }} - {{- if or .Values.podAntiAffinityTermLabelSelector}} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityPreferredDuringScheduling" . }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "podAntiAffinityRequiredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityLabelSelector }} - - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinityPreferredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityTermLabelSelector }} - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - weight: 100 - {{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_helpers.tpl b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_helpers.tpl deleted file mode 100644 index 56cfa7335..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/_helpers.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "tracing.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "tracing.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/deployment.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/deployment.yaml deleted file mode 100644 index 25bb67fd3..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/deployment.yaml +++ /dev/null @@ -1,86 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - selector: - matchLabels: - app: {{ .Values.provider }} - template: - metadata: - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - annotations: - sidecar.istio.io/inject: "false" - prometheus.io/scrape: "true" - prometheus.io/port: "14269" -{{- if .Values.jaeger.podAnnotations }} -{{ toYaml .Values.jaeger.podAnnotations | indent 8 }} -{{- end }} - spec: - containers: - - name: jaeger - image: "{{ template "system_default_registry" . }}{{ .Values.jaeger.repository }}:{{ .Values.jaeger.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - env: - {{- if eq .Values.jaeger.spanStorageType "badger" }} - - name: BADGER_EPHEMERAL - value: "false" - - name: SPAN_STORAGE_TYPE - value: "badger" - - name: BADGER_DIRECTORY_VALUE - value: "/badger/data" - - name: BADGER_DIRECTORY_KEY - value: "/badger/key" - {{- end }} - - name: COLLECTOR_ZIPKIN_HTTP_PORT - value: "9411" - - name: MEMORY_MAX_TRACES - value: "{{ .Values.jaeger.memory.max_traces }}" - - name: QUERY_BASE_PATH - value: {{ if .Values.contextPath }} {{ .Values.contextPath }} {{ else }} /{{ .Values.provider }} {{ end }} - livenessProbe: - httpGet: - path: / - port: 14269 - readinessProbe: - httpGet: - path: / - port: 14269 -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumeMounts: - - name: data - mountPath: /badger -{{- end }} - resources: -{{- if .Values.jaeger.resources }} -{{ toYaml .Values.jaeger.resources | indent 12 }} -{{- else }} -{{ toYaml .Values.global.defaultResources | indent 12 }} -{{- end }} - affinity: - {{- include "nodeAffinity" . | indent 6 }} - {{- include "podAntiAffinity" . | indent 6 }} - {{- if .Values.global.rbac.pspEnabled }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - serviceAccountName: {{ include "tracing.fullname" . }} - {{- end }} -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumes: - - name: data -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} - persistentVolumeClaim: - claimName: istio-jaeger-pvc -{{- else }} - emptyDir: {} -{{- end }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/psp.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/psp.yaml deleted file mode 100644 index 44b230492..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/psp.yaml +++ /dev/null @@ -1,86 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "tracing.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ include "tracing.fullname" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -rules: -- apiGroups: - - policy - resourceNames: - - {{ include "tracing.fullname" . }} - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - emptyDir - - secret - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/pvc.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/pvc.yaml deleted file mode 100644 index 9b4c55e4f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/pvc.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: istio-jaeger-pvc - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} -spec: - storageClassName: {{ .Values.jaeger.storageClassName }} - accessModes: - - {{ .Values.jaeger.accessMode }} - resources: - requests: - storage: {{.Values.jaeger.persistentVolumeClaim.storage }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/service.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/service.yaml deleted file mode 100644 index 4210a9b5f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/templates/service.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: tracing - namespace: {{ .Release.Namespace }} - annotations: - {{- range $key, $val := .Values.service.annotations }} - {{ $key }}: {{ $val | quote }} - {{- end }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 16686 - selector: - app: {{ .Values.provider }} ---- -# Jaeger implements the Zipkin API. To support swapping out the tracing backend, we use a Service named Zipkin. -apiVersion: v1 -kind: Service -metadata: - name: zipkin - namespace: {{ .Release.Namespace }} - labels: - name: zipkin - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.zipkin.queryPort }} - targetPort: {{ .Values.zipkin.queryPort }} - selector: - app: {{ .Values.provider }} ---- -apiVersion: v1 -kind: Service -metadata: - name: jaeger-collector - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: ClusterIP - ports: - - name: jaeger-collector-http - port: 14268 - targetPort: 14268 - protocol: TCP - - name: jaeger-collector-grpc - port: 14250 - targetPort: 14250 - protocol: TCP - selector: - app: {{ .Values.provider }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/values.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/values.yaml deleted file mode 100644 index 18ff81c3c..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/charts/tracing/values.yaml +++ /dev/null @@ -1,44 +0,0 @@ -provider: jaeger -contextPath: "" -nodeSelector: {} -podAntiAffinityLabelSelector: [] -podAntiAffinityTermLabelSelector: [] -nameOverride: "" -fullnameOverride: "" - -global: - cattle: - systemDefaultRegistry: "" - defaultResources: {} - imagePullPolicy: IfNotPresent - imagePullSecrets: [] - arch: - amd64: 2 - s390x: 2 - ppc64le: 2 - defaultNodeSelector: {} - rbac: - pspEnabled: false - -jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 - # spanStorageType value can be "memory" and "badger" for all-in-one image - spanStorageType: badger - resources: - requests: - cpu: 10m - persistentVolumeClaim: - enabled: false - storage: 5Gi - storageClassName: "" - accessMode: ReadWriteMany - memory: - max_traces: 50000 -zipkin: - queryPort: 9411 -service: - annotations: {} - name: http-query - type: ClusterIP - externalPort: 16686 diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/configs/istio-base.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/configs/istio-base.yaml deleted file mode 100644 index c5fa6f5f0..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/configs/istio-base.yaml +++ /dev/null @@ -1,82 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - defaultConfig: - proxyMetadata: - {{- if .Values.dns.enabled }} - ISTIO_META_DNS_CAPTURE: "true" - {{- end }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - excludeNamespaces: - {{- toYaml .Values.cni.excludeNamespaces | nindent 8 }} - logLevel: {{ .Values.cni.logLevel }} - {{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/requirements.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/requirements.yaml deleted file mode 100644 index 943a08326..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/requirements.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dependencies: -- condition: kiali.enabled - name: kiali - repository: file://./charts/kiali -- condition: tracing.enabled - name: tracing - repository: file://./charts/tracing diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/samples/overlay-example.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/samples/overlay-example.yaml deleted file mode 100644 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/_helpers.tpl b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/_helpers.tpl deleted file mode 100644 index 3f7af953a..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/admin-role.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/admin-role.yaml deleted file mode 100644 index ad1313c4f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/base-config-map.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/base-config-map.yaml deleted file mode 100644 index 5323917bc..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrole.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrole.yaml deleted file mode 100644 index a93b3df95..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrole.yaml +++ /dev/null @@ -1,120 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' -- apiGroups: - - policy - resourceNames: - - istio-installer - resources: - - podsecuritypolicies - verbs: - - use diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrolebinding.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrolebinding.yaml deleted file mode 100644 index 9d74a0434..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/edit-role.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/edit-role.yaml deleted file mode 100644 index d1059d58d..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-cni-psp.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-cni-psp.yaml deleted file mode 100644 index 5b94c8503..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-cni-psp.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -spec: - allowPrivilegeEscalation: true - fsGroup: - rule: RunAsAny - hostNetwork: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - secret - - configMap - - emptyDir - - hostPath ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: psp-istio-cni -subjects: - - kind: ServiceAccount - name: istio-cni ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: psp-istio-cni - namespace: {{ template "istio.namespace" . }} -rules: -- apiGroups: - - policy - resourceNames: - - psp-istio-cni - resources: - - podsecuritypolicies - verbs: - - use -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-job.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-job.yaml deleted file mode 100644 index 9a13f5698..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-job.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - {{- if .Values.global.rbac.pspEnabled }} - securityContext: - runAsUser: 101 - runAsGroup: 101 - {{- end }} - restartPolicy: Never diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-psp.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-psp.yaml deleted file mode 100644 index f0b5ee565..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-install-psp.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-psp.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-psp.yaml deleted file mode 100644 index b3758b74f..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-psp.yaml +++ /dev/null @@ -1,81 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: istio-psp -subjects: - - kind: ServiceAccount - name: istio-egressgateway-service-account - - kind: ServiceAccount - name: istio-ingressgateway-service-account - - kind: ServiceAccount - name: istio-mixer-service-account - - kind: ServiceAccount - name: istio-operator-authproxy - - kind: ServiceAccount - name: istiod-service-account - - kind: ServiceAccount - name: istio-sidecar-injector-service-account - - kind: ServiceAccount - name: istiocoredns-service-account - - kind: ServiceAccount - name: default ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -rules: -- apiGroups: - - policy - resourceNames: - - istio-psp - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: istio-psp - namespace: {{ template "istio.namespace" . }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - emptyDir - - projected - - secret - - downwardAPI - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-uninstall-job.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-uninstall-job.yaml deleted file mode 100644 index a7f156325..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - securityContext: - runAsUser: 101 - runAsGroup: 101 - restartPolicy: OnFailure diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/overlay-config-map.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/overlay-config-map.yaml deleted file mode 100644 index 287d26b2c..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/service-monitors.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/service-monitors.yaml deleted file mode 100644 index c3d60c4fc..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/serviceaccount.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/serviceaccount.yaml deleted file mode 100644 index 82b6cbb7e..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/view-role.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/view-role.yaml deleted file mode 100644 index 5947d3eba..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio-1.9/rancher-istio/1.9.501/values.yaml b/charts/rancher-istio-1.9/rancher-istio/1.9.501/values.yaml deleted file mode 100644 index e679a6fbb..000000000 --- a/charts/rancher-istio-1.9/rancher-istio/1.9.501/values.yaml +++ /dev/null @@ -1,85 +0,0 @@ -overlayFile: "" -tag: 1.9.5 -##Setting forceInstall: true will remove the check for istio version < 1.6.x and will not analyze your install cluster prior to install -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.9.5-rancher1 - -##Native support for dns added in 1.8 -dns: - enabled: false - -base: - enabled: true - -cni: - enabled: false - repository: rancher/mirrored-istio-install-cni - tag: 1.9.5 - logLevel: info - excludeNamespaces: - - istio-system - - kube-system - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/mirrored-istio-pilot - tag: 1.9.5 - -telemetry: - enabled: true - v2: - enabled: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.9.5 - proxy_init: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.9.5 - defaultPodDisruptionBudget: - enabled: true - rbac: - pspEnabled: false - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/mirrored-kiali-kiali - tag: v1.32.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - in_cluster_url: "http://tracing.istio-system.svc:16686/jaeger" - grafana: - in_cluster_url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - -tracing: - enabled: false - contextPath: "/jaeger" - jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 diff --git a/charts/rancher-istio/rancher-istio/1.7.100/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.100/Chart.yaml deleted file mode 100755 index c4dbb210b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.23.001 - catalog.cattle.io/certified: rancher - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.cattle.io/ui-component: istio - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: 1.7.1 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.7.100 diff --git a/charts/rancher-istio/rancher-istio/1.7.100/README.md b/charts/rancher-istio/rancher-istio/1.7.100/README.md deleted file mode 100755 index d373dff8d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart -- rancher-monitoring chart or other monitoring installation - -### Kiali -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/Chart.yaml deleted file mode 100755 index b1643d95c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server - catalog.cattle.io/os: linux -apiVersion: v2 -appVersion: v1.23.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.23.0 diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/NOTES.txt b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/cabundle.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/envoy.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/go.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/kiali.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/ingess.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/oauth.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role-viewer.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/rolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/route.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/validate-install-crd.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/web-root-configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/web-root-configmap.yaml deleted file mode 100755 index 0daa7bb23..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:rancher-istio-kiali:20001/proxy'; -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/values.yaml b/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/values.yaml deleted file mode 100755 index 12ea7379d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/charts/rancher-kiali-server/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.23.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.23.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-istio/rancher-istio/1.7.100/configs/istio-base.yaml b/charts/rancher-istio/rancher-istio/1.7.100/configs/istio-base.yaml deleted file mode 100755 index c66e769dd..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/configs/istio-base.yaml +++ /dev/null @@ -1,99 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - addonComponents: - istiocoredns: - enabled: {{ .Values.istiocoredns.enabled }} - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - policy: - enabled: {{ .Values.policy.enabled }} - telemetry: - enabled: {{ .Values.telemetry.v1.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - enablePrometheusMerge: {{ .Values.meshConfig.enablePrometheusMerge }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - istiocoredns: - coreDNSImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.image.repository }} - coreDNSPluginImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.pluginImage.repository }}:{{ .Values.istiocoredns.pluginImage.tag }} - coreDNSTag: {{ .Values.istiocoredns.image.tag }} - {{- if or .Values.policy.enabled .Values.telemetry.v1.enabled }} - mixer: - {{- if .Values.policy.enabled }} - policy: - image: {{ template "system_default_registry" . }}{{ .Values.policy.repository }}:{{ .Values.policy.tag }} - {{- end }} - {{- if .Values.telemetry.v1.enabled }} - telemetry: - image: {{ template "system_default_registry" . }}{{ .Values.telemetry.v1.repository }}:{{ .Values.telemetry.v1.tag }} - {{- end }} - {{- end }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v1: - enabled: {{ .Values.telemetry.v1.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - {{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/requirements.lock b/charts/rancher-istio/rancher-istio/1.7.100/requirements.lock deleted file mode 100755 index 40950318d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/requirements.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: rancher-kiali-server - repository: file://../../rancher-kiali-server/charts - version: 1.23.0 -digest: sha256:33579a1f60d18cd1c2fd2e6e569018acdfe3c2459b9a1b77f341d53001512759 -generated: "2020-10-02T23:45:54.868279746Z" diff --git a/charts/rancher-istio/rancher-istio/1.7.100/requirements.yaml b/charts/rancher-istio/rancher-istio/1.7.100/requirements.yaml deleted file mode 100755 index 6c0a47abd..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/requirements.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dependencies: - - - name: rancher-kiali-server - alias: kiali - condition: kiali.enabled - version: 1.23.0 - repository: file://../../rancher-kiali-server/charts diff --git a/charts/rancher-istio/rancher-istio/1.7.100/samples/overlay-example.yaml b/charts/rancher-istio/rancher-istio/1.7.100/samples/overlay-example.yaml deleted file mode 100755 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.100/templates/_helpers.tpl deleted file mode 100755 index 3f7af953a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/admin-role.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/admin-role.yaml deleted file mode 100755 index ad1313c4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/base-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/base-config-map.yaml deleted file mode 100755 index 5323917bc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrole.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrole.yaml deleted file mode 100755 index 3e621d897..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrolebinding.yaml deleted file mode 100755 index 9d74a0434..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/edit-role.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/edit-role.yaml deleted file mode 100755 index d1059d58d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-install-job.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-install-job.yaml deleted file mode 100755 index 0e9c732e1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-install-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - restartPolicy: Never diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-uninstall-job.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-uninstall-job.yaml deleted file mode 100755 index b5946e55f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - restartPolicy: OnFailure diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/overlay-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/overlay-config-map.yaml deleted file mode 100755 index 287d26b2c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/service-monitors.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/service-monitors.yaml deleted file mode 100755 index c3d60c4fc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/serviceaccount.yaml deleted file mode 100755 index 82b6cbb7e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio/rancher-istio/1.7.100/templates/view-role.yaml b/charts/rancher-istio/rancher-istio/1.7.100/templates/view-role.yaml deleted file mode 100755 index 5947d3eba..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio/rancher-istio/1.7.100/values.yaml b/charts/rancher-istio/rancher-istio/1.7.100/values.yaml deleted file mode 100755 index 4647a6df0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.100/values.yaml +++ /dev/null @@ -1,95 +0,0 @@ -overlayFile: "" -tag: 1.7.1 -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.7.1-rancher1 - -istiocoredns: - enabled: false - image: - repository: rancher/coredns-coredns - tag: 1.6.2 - pluginImage: - repository: rancher/istio-coredns-plugin - tag: 0.2-istio-1.1 - -base: - enabled: true - -cni: - enabled: false - repository: rancher/istio-install-cni - tag: 1.7.1 - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/istio-pilot - tag: 1.7.1 - -#Mixer Policy is deprecated in 1.7.x, will not be supported in 1.8.x -policy: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.1 - -telemetry: - enabled: true - #Telemetry v1 is deprecated in 1.7.x, will not be supported in 1.8.x - v1: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.1 - v2: - enabled: true - -sidecarInjectorWebhook: - enableNamespacesByDefault: false - objectSelector: - enabled: true - autoInject: true - rewriteAppHTTPProbe: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/istio-proxyv2 - tag: 1.7.1 - proxy_init: - repository: rancher/istio-proxyv2 - tag: 1.7.1 - defaultPodDisruptionBudget: - enabled: true - -# this can be removed in 1.7 as it is default -meshConfig: - enablePrometheusMerge: true - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/kiali-kiali - tag: v1.23.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - enabled: false diff --git a/charts/rancher-istio/rancher-istio/1.7.300/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.300/Chart.yaml deleted file mode 100755 index 61cd6d05b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.24.001 - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Istio - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/ui-component: istio - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: 1.7.3 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.7.300 diff --git a/charts/rancher-istio/rancher-istio/1.7.300/README.md b/charts/rancher-istio/rancher-istio/1.7.300/README.md deleted file mode 100755 index c90394f2e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/README.md +++ /dev/null @@ -1,36 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart - - -## Kiali - -### Dependencies -- rancher-monitoring chart or other Prometheus installation - -This dependecy installs the required CRDs for installing Kiali. Since Kiali is bundled in with Istio in this chart, if you do not have these dependencies installed, your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` when installing Istio for a succesful installation. - -> **Note:** The following configuration options assume you have installed the dependecies for Kiali. Please ensure you have Promtheus in your cluster before proceeding. - -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` diff --git a/charts/rancher-istio/rancher-istio/1.7.300/app-readme.md b/charts/rancher-istio/rancher-istio/1.7.300/app-readme.md deleted file mode 100755 index e24468457..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/app-readme.md +++ /dev/null @@ -1,30 +0,0 @@ -# Rancher Istio - -Our [Istio](https://istio.io/) installer wraps the istioctl binary commands in a handy helm chart, including an overlay file option to allow complex customization. It also includes: -* **[Kiali](https://kiali.io/)**: Used for graphing traffic flow throughout the mesh - -### Dependencies - -**Rancher Monitoring or other Prometheus installation** - -The Prometheus CRDs are required for installing Kiali which is enabled by default. If you do not have Prometheus installed your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` to bypass this requirement. - -### Customization - -**Rancher Monitoring** - -The Rancher Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -**Custom Prometheus Installation with Kiali** - -To use a custom Monitoring installation, set the `kiali.external_services.prometheus` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port`: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/). diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/Chart.yaml deleted file mode 100755 index e4ab2a590..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server - catalog.cattle.io/os: linux -apiVersion: v2 -appVersion: v1.24.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.24.0 diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/NOTES.txt b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/cabundle.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/envoy.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/go.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/kiali.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/ingess.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/oauth.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role-viewer.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/rolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/route.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/validate-install-crd.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/web-root-configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/web-root-configmap.yaml deleted file mode 100755 index 0daa7bb23..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:rancher-istio-kiali:20001/proxy'; -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/values.yaml b/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/values.yaml deleted file mode 100755 index fccc6d4ce..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/charts/rancher-kiali-server/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.24.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.24.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-istio/rancher-istio/1.7.300/configs/istio-base.yaml b/charts/rancher-istio/rancher-istio/1.7.300/configs/istio-base.yaml deleted file mode 100755 index c66e769dd..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/configs/istio-base.yaml +++ /dev/null @@ -1,99 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - addonComponents: - istiocoredns: - enabled: {{ .Values.istiocoredns.enabled }} - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - policy: - enabled: {{ .Values.policy.enabled }} - telemetry: - enabled: {{ .Values.telemetry.v1.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - enablePrometheusMerge: {{ .Values.meshConfig.enablePrometheusMerge }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - istiocoredns: - coreDNSImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.image.repository }} - coreDNSPluginImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.pluginImage.repository }}:{{ .Values.istiocoredns.pluginImage.tag }} - coreDNSTag: {{ .Values.istiocoredns.image.tag }} - {{- if or .Values.policy.enabled .Values.telemetry.v1.enabled }} - mixer: - {{- if .Values.policy.enabled }} - policy: - image: {{ template "system_default_registry" . }}{{ .Values.policy.repository }}:{{ .Values.policy.tag }} - {{- end }} - {{- if .Values.telemetry.v1.enabled }} - telemetry: - image: {{ template "system_default_registry" . }}{{ .Values.telemetry.v1.repository }}:{{ .Values.telemetry.v1.tag }} - {{- end }} - {{- end }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v1: - enabled: {{ .Values.telemetry.v1.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - {{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/requirements.lock b/charts/rancher-istio/rancher-istio/1.7.300/requirements.lock deleted file mode 100755 index a48bab22b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/requirements.lock +++ /dev/null @@ -1,6 +0,0 @@ -dependencies: -- name: rancher-kiali-server - repository: file://../../rancher-kiali-server/charts - version: 1.24.0 -digest: sha256:c7007a5ff0aa6a0d2db2a2c01e7cbf89c28b6337466e5942c32bc752d79dd98f -generated: "2020-11-10T00:01:51.992186001Z" diff --git a/charts/rancher-istio/rancher-istio/1.7.300/requirements.yaml b/charts/rancher-istio/rancher-istio/1.7.300/requirements.yaml deleted file mode 100755 index 1887bbf5a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/requirements.yaml +++ /dev/null @@ -1,7 +0,0 @@ -dependencies: - - - name: rancher-kiali-server - alias: kiali - condition: kiali.enabled - version: 1.24.0 - repository: file://../../rancher-kiali-server/charts diff --git a/charts/rancher-istio/rancher-istio/1.7.300/samples/overlay-example.yaml b/charts/rancher-istio/rancher-istio/1.7.300/samples/overlay-example.yaml deleted file mode 100755 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.300/templates/_helpers.tpl deleted file mode 100755 index 3f7af953a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/admin-role.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/admin-role.yaml deleted file mode 100755 index ad1313c4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/base-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/base-config-map.yaml deleted file mode 100755 index 5323917bc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrole.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrole.yaml deleted file mode 100755 index 3e621d897..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrolebinding.yaml deleted file mode 100755 index 9d74a0434..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/edit-role.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/edit-role.yaml deleted file mode 100755 index d1059d58d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-install-job.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-install-job.yaml deleted file mode 100755 index 0e9c732e1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-install-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - restartPolicy: Never diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-uninstall-job.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-uninstall-job.yaml deleted file mode 100755 index b5946e55f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - restartPolicy: OnFailure diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/overlay-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/overlay-config-map.yaml deleted file mode 100755 index 287d26b2c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/service-monitors.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/service-monitors.yaml deleted file mode 100755 index c3d60c4fc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/serviceaccount.yaml deleted file mode 100755 index 82b6cbb7e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio/rancher-istio/1.7.300/templates/view-role.yaml b/charts/rancher-istio/rancher-istio/1.7.300/templates/view-role.yaml deleted file mode 100755 index 5947d3eba..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio/rancher-istio/1.7.300/values.yaml b/charts/rancher-istio/rancher-istio/1.7.300/values.yaml deleted file mode 100755 index 9c301d889..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.300/values.yaml +++ /dev/null @@ -1,96 +0,0 @@ -overlayFile: "" -tag: 1.7.3 -##Setting forceInstall: true will remove the check for istio version < 1.6.x and will not analyze your install cluster prior to install -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.7.3-rancher2 - -istiocoredns: - enabled: false - image: - repository: rancher/coredns-coredns - tag: 1.6.2 - pluginImage: - repository: rancher/istio-coredns-plugin - tag: 0.2-istio-1.1 - -base: - enabled: true - -cni: - enabled: false - repository: rancher/istio-install-cni - tag: 1.7.3 - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/istio-pilot - tag: 1.7.3 - -#Mixer Policy is deprecated in 1.7.x, will not be supported in 1.8.x -policy: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.3 - -telemetry: - enabled: true - #Telemetry v1 is deprecated in 1.7.x, will not be supported in 1.8.x - v1: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.3 - v2: - enabled: true - -sidecarInjectorWebhook: - enableNamespacesByDefault: false - objectSelector: - enabled: true - autoInject: true - rewriteAppHTTPProbe: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/istio-proxyv2 - tag: 1.7.3 - proxy_init: - repository: rancher/istio-proxyv2 - tag: 1.7.3 - defaultPodDisruptionBudget: - enabled: true - -# this can be removed in 1.7 as it is default -meshConfig: - enablePrometheusMerge: true - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/kiali-kiali - tag: v1.24.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - enabled: false diff --git a/charts/rancher-istio/rancher-istio/1.7.301/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.301/Chart.yaml deleted file mode 100755 index afa6127f8..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.24.003 - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Istio - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/ui-component: istio -apiVersion: v1 -appVersion: 1.7.3 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.7.301 diff --git a/charts/rancher-istio/rancher-istio/1.7.301/README.md b/charts/rancher-istio/rancher-istio/1.7.301/README.md deleted file mode 100755 index 96634b713..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/README.md +++ /dev/null @@ -1,46 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart - - -# Addons - -## Kiali - -Kiali allows you to view and manage your istio-based service mesh through an easy to use dashboard. - -### Dependencies -- rancher-monitoring chart or other Prometheus installation - -This dependecy installs the required CRDs for installing Kiali. Since Kiali is bundled in with Istio in this chart, if you do not have these dependencies installed, your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` when installing Istio for a succesful installation. - -> **Note:** The following configuration options assume you have installed the dependecies for Kiali. Please ensure you have Promtheus in your cluster before proceeding. - -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -## Jaeger - -Jaeger allows you to trace and monitor distributed microservices. - -> **Note:** This addon is using the all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io/docs/1.21/getting-started/) documentation to determine which installation you will need for your production needs. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` \ No newline at end of file diff --git a/charts/rancher-istio/rancher-istio/1.7.301/app-readme.md b/charts/rancher-istio/rancher-istio/1.7.301/app-readme.md deleted file mode 100755 index 6a99367cb..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/app-readme.md +++ /dev/null @@ -1,31 +0,0 @@ -# Rancher Istio - -Our [Istio](https://istio.io/) installer wraps the istioctl binary commands in a handy helm chart, including an overlay file option to allow complex customization. It also includes: -* **[Kiali](https://kiali.io/)**: Used for graphing traffic flow throughout the mesh -* **[Jaeger](https://www.jaegertracing.io/)**: A quick start, all-in-one installation used for tracing distributed systemm. This is not production qualified, please refer to jaeger documentation to determine which installation you may need instead. - -### Dependencies - -**Rancher Monitoring or other Prometheus installation** - -The Prometheus CRDs are required for installing Kiali which is enabled by default. If you do not have Prometheus installed your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` to bypass this requirement. - -### Customization - -**Rancher Monitoring** - -The Rancher Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -**Custom Prometheus Installation with Kiali** - -To use a custom Monitoring installation, set the `kiali.external_services.prometheus` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port`: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/). diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/Chart.yaml deleted file mode 100755 index f15dcf604..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.24.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.24.0 diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/NOTES.txt b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/cabundle.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/envoy.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/go.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/kiali.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/ingess.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/oauth.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role-viewer.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/rolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/route.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/validate-install-crd.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/web-root-configmap.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/web-root-configmap.yaml deleted file mode 100755 index 970d4e4f5..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/values.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/values.yaml deleted file mode 100755 index fccc6d4ce..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-kiali-server/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.24.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.24.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/.helmignore b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/.helmignore deleted file mode 100755 index 0e8a0eb36..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/Chart.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/Chart.yaml deleted file mode 100755 index 0a3437798..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: istio-system - catalog.rancher.io/release-name: rancher-tracing -apiVersion: v1 -appVersion: 1.20.0 -description: A quick start Jaeger Tracing installation using the all-in-one demo. - This is not production qualified. Refer to https://www.jaegertracing.io/ for details. -name: rancher-tracing -version: 1.20.001 diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/README.md b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/README.md deleted file mode 100755 index 25534c628..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Jaeger - -A Rancher chart based on the Jaeger all-in-one quick installation option. This chart will allow you to trace and monitor distributed microservices. - -> **Note:** The basic all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io) documentation to determine which installation you will need for your production needs. diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_affinity.tpl b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_affinity.tpl deleted file mode 100755 index bf6a9aee5..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_affinity.tpl +++ /dev/null @@ -1,92 +0,0 @@ -{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} -{{- define "nodeAffinity" }} - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityRequiredDuringScheduling" . }} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityPreferredDuringScheduling" . }} -{{- end }} - -{{- define "nodeAffinityRequiredDuringScheduling" }} - nodeSelectorTerms: - - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - {{ $key | quote }} - {{- end }} - {{- end }} - {{- $nodeSelector := default .Values.global.defaultNodeSelector .Values.nodeSelector -}} - {{- range $key, $val := $nodeSelector }} - - key: {{ $key }} - operator: In - values: - - {{ $val | quote }} - {{- end }} -{{- end }} - -{{- define "nodeAffinityPreferredDuringScheduling" }} - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - weight: {{ $val | int }} - preference: - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - - {{ $key | quote }} - {{- end }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinity" }} -{{- if or .Values.podAntiAffinityLabelSelector .Values.podAntiAffinityTermLabelSelector}} - podAntiAffinity: - {{- if .Values.podAntiAffinityLabelSelector }} - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityRequiredDuringScheduling" . }} - {{- end }} - {{- if or .Values.podAntiAffinityTermLabelSelector}} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityPreferredDuringScheduling" . }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "podAntiAffinityRequiredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityLabelSelector }} - - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinityPreferredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityTermLabelSelector }} - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - weight: 100 - {{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_helpers.tpl deleted file mode 100755 index 56cfa7335..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/_helpers.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "tracing.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "tracing.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/deployment.yaml deleted file mode 100755 index e7ecfadd8..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/deployment.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - selector: - matchLabels: - app: {{ .Values.provider }} - template: - metadata: - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - annotations: - sidecar.istio.io/inject: "false" - prometheus.io/scrape: "true" - prometheus.io/port: "14269" -{{- if .Values.jaeger.podAnnotations }} -{{ toYaml .Values.jaeger.podAnnotations | indent 8 }} -{{- end }} - spec: - containers: - - name: jaeger - image: "{{ template "system_default_registry" . }}{{ .Values.jaeger.repository }}:{{ .Values.jaeger.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - env: - {{- if eq .Values.jaeger.spanStorageType "badger" }} - - name: BADGER_EPHEMERAL - value: "false" - - name: SPAN_STORAGE_TYPE - value: "badger" - - name: BADGER_DIRECTORY_VALUE - value: "/badger/data" - - name: BADGER_DIRECTORY_KEY - value: "/badger/key" - {{- end }} - - name: COLLECTOR_ZIPKIN_HTTP_PORT - value: "9411" - - name: MEMORY_MAX_TRACES - value: "{{ .Values.jaeger.memory.max_traces }}" - - name: QUERY_BASE_PATH - value: {{ if .Values.contextPath }} {{ .Values.contextPath }} {{ else }} /{{ .Values.provider }} {{ end }} - livenessProbe: - httpGet: - path: / - port: 14269 - readinessProbe: - httpGet: - path: / - port: 14269 -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumeMounts: - - name: data - mountPath: /badger -{{- end }} - resources: -{{- if .Values.jaeger.resources }} -{{ toYaml .Values.jaeger.resources | indent 12 }} -{{- else }} -{{ toYaml .Values.global.defaultResources | indent 12 }} -{{- end }} - affinity: - {{- include "nodeAffinity" . | indent 6 }} - {{- include "podAntiAffinity" . | indent 6 }} -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumes: - - name: data -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} - persistentVolumeClaim: - claimName: istio-jaeger-pvc -{{- else }} - emptyDir: {} -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/pvc.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/pvc.yaml deleted file mode 100755 index 9b4c55e4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/pvc.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: istio-jaeger-pvc - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} -spec: - storageClassName: {{ .Values.jaeger.storageClassName }} - accessModes: - - {{ .Values.jaeger.accessMode }} - resources: - requests: - storage: {{.Values.jaeger.persistentVolumeClaim.storage }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/service.yaml deleted file mode 100755 index 4210a9b5f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/templates/service.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: tracing - namespace: {{ .Release.Namespace }} - annotations: - {{- range $key, $val := .Values.service.annotations }} - {{ $key }}: {{ $val | quote }} - {{- end }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 16686 - selector: - app: {{ .Values.provider }} ---- -# Jaeger implements the Zipkin API. To support swapping out the tracing backend, we use a Service named Zipkin. -apiVersion: v1 -kind: Service -metadata: - name: zipkin - namespace: {{ .Release.Namespace }} - labels: - name: zipkin - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.zipkin.queryPort }} - targetPort: {{ .Values.zipkin.queryPort }} - selector: - app: {{ .Values.provider }} ---- -apiVersion: v1 -kind: Service -metadata: - name: jaeger-collector - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: ClusterIP - ports: - - name: jaeger-collector-http - port: 14268 - targetPort: 14268 - protocol: TCP - - name: jaeger-collector-grpc - port: 14250 - targetPort: 14250 - protocol: TCP - selector: - app: {{ .Values.provider }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/values.yaml b/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/values.yaml deleted file mode 100755 index 0002f11f8..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/charts/rancher-tracing/values.yaml +++ /dev/null @@ -1,42 +0,0 @@ -provider: jaeger -contextPath: "" -nodeSelector: {} -podAntiAffinityLabelSelector: [] -podAntiAffinityTermLabelSelector: [] -nameOverride: "" -fullnameOverride: "" - -global: - cattle: - systemDefaultRegistry: "" - defaultResources: {} - imagePullPolicy: IfNotPresent - imagePullSecrets: [] - arch: - amd64: 2 - s390x: 2 - ppc64le: 2 - defaultNodeSelector: {} - -jaeger: - repository: rancher/jaegertracing-all-in-one - tag: 1.20.0 - # spanStorageType value can be "memory" and "badger" for all-in-one image - spanStorageType: badger - resources: - requests: - cpu: 10m - persistentVolumeClaim: - enabled: false - storage: 5Gi - storageClassName: "" - accessMode: ReadWriteMany - memory: - max_traces: 50000 -zipkin: - queryPort: 9411 -service: - annotations: {} - name: http-query - type: ClusterIP - externalPort: 16686 diff --git a/charts/rancher-istio/rancher-istio/1.7.301/configs/istio-base.yaml b/charts/rancher-istio/rancher-istio/1.7.301/configs/istio-base.yaml deleted file mode 100755 index daf77f5c7..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/configs/istio-base.yaml +++ /dev/null @@ -1,102 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - addonComponents: - istiocoredns: - enabled: {{ .Values.istiocoredns.enabled }} - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - policy: - enabled: {{ .Values.policy.enabled }} - telemetry: - enabled: {{ .Values.telemetry.v1.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - enablePrometheusMerge: {{ .Values.meshConfig.enablePrometheusMerge }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - istiocoredns: - coreDNSImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.image.repository }} - coreDNSPluginImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.pluginImage.repository }}:{{ .Values.istiocoredns.pluginImage.tag }} - coreDNSTag: {{ .Values.istiocoredns.image.tag }} - {{- if or .Values.policy.enabled .Values.telemetry.v1.enabled }} - mixer: - {{- if .Values.policy.enabled }} - policy: - image: {{ template "system_default_registry" . }}{{ .Values.policy.repository }}:{{ .Values.policy.tag }} - {{- end }} - {{- if .Values.telemetry.v1.enabled }} - telemetry: - image: {{ template "system_default_registry" . }}{{ .Values.telemetry.v1.repository }}:{{ .Values.telemetry.v1.tag }} - {{- end }} - {{- end }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v1: - enabled: {{ .Values.telemetry.v1.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - excludeNamespaces: - {{- toYaml .Values.cni.excludeNamespaces | nindent 8 }} - logLevel: {{ .Values.cni.logLevel }} - {{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/requirements.lock b/charts/rancher-istio/rancher-istio/1.7.301/requirements.lock deleted file mode 100755 index f47835c14..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/requirements.lock +++ /dev/null @@ -1,9 +0,0 @@ -dependencies: -- name: rancher-kiali-server - repository: file://../../rancher-kiali-server/charts - version: 1.24.0 -- name: rancher-tracing - repository: file://../../rancher-tracing/charts - version: 1.20.001 -digest: sha256:92116a2b3454607da3ef18e994de75a2b75db56c4dfc8baf9b76e839d007b1cc -generated: "2021-01-07T05:24:11.644300126Z" diff --git a/charts/rancher-istio/rancher-istio/1.7.301/requirements.yaml b/charts/rancher-istio/rancher-istio/1.7.301/requirements.yaml deleted file mode 100755 index e0429b593..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/requirements.yaml +++ /dev/null @@ -1,13 +0,0 @@ -dependencies: - - - name: rancher-kiali-server - alias: kiali - condition: kiali.enabled - version: 1.24.0 - repository: file://../../rancher-kiali-server/charts - - - name: rancher-tracing - alias: tracing - condition: tracing.enabled - version: 1.20.001 - repository: file://../../rancher-tracing/charts diff --git a/charts/rancher-istio/rancher-istio/1.7.301/samples/overlay-example.yaml b/charts/rancher-istio/rancher-istio/1.7.301/samples/overlay-example.yaml deleted file mode 100755 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.7.301/templates/_helpers.tpl deleted file mode 100755 index 3f7af953a..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/admin-role.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/admin-role.yaml deleted file mode 100755 index ad1313c4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/base-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/base-config-map.yaml deleted file mode 100755 index 5323917bc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrole.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrole.yaml deleted file mode 100755 index 3e621d897..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrolebinding.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrolebinding.yaml deleted file mode 100755 index 9d74a0434..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/edit-role.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/edit-role.yaml deleted file mode 100755 index d1059d58d..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-install-job.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-install-job.yaml deleted file mode 100755 index 0e9c732e1..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-install-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - restartPolicy: Never diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-uninstall-job.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-uninstall-job.yaml deleted file mode 100755 index b5946e55f..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - restartPolicy: OnFailure diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/overlay-config-map.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/overlay-config-map.yaml deleted file mode 100755 index 287d26b2c..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/service-monitors.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/service-monitors.yaml deleted file mode 100755 index c3d60c4fc..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/serviceaccount.yaml deleted file mode 100755 index 82b6cbb7e..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio/rancher-istio/1.7.301/templates/view-role.yaml b/charts/rancher-istio/rancher-istio/1.7.301/templates/view-role.yaml deleted file mode 100755 index 5947d3eba..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio/rancher-istio/1.7.301/values.yaml b/charts/rancher-istio/rancher-istio/1.7.301/values.yaml deleted file mode 100755 index da4042282..000000000 --- a/charts/rancher-istio/rancher-istio/1.7.301/values.yaml +++ /dev/null @@ -1,106 +0,0 @@ -overlayFile: "" -tag: 1.7.3 -##Setting forceInstall: true will remove the check for istio version < 1.6.x and will not analyze your install cluster prior to install -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.7.3-rancher2 - -istiocoredns: - enabled: false - image: - repository: rancher/coredns-coredns - tag: 1.6.2 - pluginImage: - repository: rancher/istio-coredns-plugin - tag: 0.2-istio-1.1 - -base: - enabled: true - -cni: - enabled: false - repository: rancher/istio-install-cni - tag: 1.7.3 - logLevel: info - excludeNamespaces: - - istio-system - - kube-system - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/istio-pilot - tag: 1.7.3 - -#Mixer Policy is deprecated in 1.7.x, will not be supported in 1.8.x -policy: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.3 - -telemetry: - enabled: true - #Telemetry v1 is deprecated in 1.7.x, will not be supported in 1.8.x - v1: - enabled: false - repository: rancher/istio-mixer - tag: 1.7.3 - v2: - enabled: true - -sidecarInjectorWebhook: - enableNamespacesByDefault: false - objectSelector: - enabled: true - autoInject: true - rewriteAppHTTPProbe: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/istio-proxyv2 - tag: 1.7.3 - proxy_init: - repository: rancher/istio-proxyv2 - tag: 1.7.3 - defaultPodDisruptionBudget: - enabled: true - -# this can be removed in 1.7 as it is default -meshConfig: - enablePrometheusMerge: true - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/kiali-kiali - tag: v1.24.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - in_cluster_url: "http://tracing.istio-system.svc:16686" - -tracing: - enabled: false - jaeger: - repository: rancher/jaegertracing-all-in-one - tag: 1.20.0 diff --git a/charts/rancher-istio/rancher-istio/1.8.300/Chart.yaml b/charts/rancher-istio/rancher-istio/1.8.300/Chart.yaml deleted file mode 100755 index 8df587ad9..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/Chart.yaml +++ /dev/null @@ -1,21 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=1.29.000 - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Istio - catalog.cattle.io/namespace: istio-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: networking.istio.io.virtualservice/v1beta1 - catalog.cattle.io/release-name: rancher-istio - catalog.cattle.io/requests-cpu: 710m - catalog.cattle.io/requests-memory: 2314Mi - catalog.cattle.io/ui-component: istio -apiVersion: v1 -appVersion: 1.8.3 -description: A basic Istio setup that installs with the istioctl. Refer to https://istio.io/latest/ - for details. -icon: https://charts.rancher.io/assets/logos/istio.svg -keywords: -- networking -- infrastructure -name: rancher-istio -version: 1.8.300 diff --git a/charts/rancher-istio/rancher-istio/1.8.300/README.md b/charts/rancher-istio/rancher-istio/1.8.300/README.md deleted file mode 100755 index 199e45312..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# Rancher Istio Installers - -A Rancher created chart that packages the istioctl binary to install via a helm chart. - -# Installation Requirements - -## Chart Dependencies -- rancher-kiali-server-crd chart - -# Uninstallation Requirements -To ensure rancher-istio uninstalls correctly, you must uninstall rancher-istio prior to uninstalling chart dependencies (see installation requirements for chart dependencies). This is because all definitions need to be available in order to properly build the rancher-istio objects for removal. - -If you remove dependent CRD charts prior to removing rancher-istio, you may encounter the following error:: - -`Error: uninstallation completed with 1 error(s): unable to build kubernetes objects for delete: unable to recognize "": no matches for kind "MonitoringDashboard" in version "monitoring.kiali.io/v1alpha1"` - -# Addons - -## Kiali - -Kiali allows you to view and manage your istio-based service mesh through an easy to use dashboard. - -#### Dependencies -- rancher-monitoring chart or other Prometheus installation - -This dependecy installs the required CRDs for installing Kiali. Since Kiali is bundled in with Istio in this chart, if you do not have these dependencies installed, your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` when installing Istio for a succesful installation. - -> **Note:** The following configuration options assume you have installed the dependecies for Kiali. Please ensure you have Promtheus in your cluster before proceeding. - -The Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -#### External Services - -##### Prometheus -The `kiali.external_services.prometheus` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Grafana -The `kiali.external_services.grafana` url is set in the values.yaml: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -The url depends on the default values for `nameOverride`, `namespaceOverride`, and `grafana.service.port` being set in your rancher-monitoring or other monitoring instance. - -##### Tracing -The `kiali.external_services.tracing` url and `.Values.tracing.contextPath` is set in the rancher-istio values.yaml: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` -The url depends on the default values for `namespaceOverride`, and `.Values.service.externalPort` being set in your rancher-tracing or other tracing instance. - -## Jaeger - -Jaeger allows you to trace and monitor distributed microservices. - -> **Note:** This addon is using the all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io/docs/1.21/getting-started/) documentation to determine which installation you will need for your production needs. - -# Installation -``` -helm install rancher-istio . --create-namespace -n istio-system -``` \ No newline at end of file diff --git a/charts/rancher-istio/rancher-istio/1.8.300/app-readme.md b/charts/rancher-istio/rancher-istio/1.8.300/app-readme.md deleted file mode 100755 index 0e42df083..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/app-readme.md +++ /dev/null @@ -1,45 +0,0 @@ -# Rancher Istio - -Our [Istio](https://istio.io/) installer wraps the istioctl binary commands in a handy helm chart, including an overlay file option to allow complex customization. It also includes: -* **[Kiali](https://kiali.io/)**: Used for graphing traffic flow throughout the mesh -* **[Jaeger](https://www.jaegertracing.io/)**: A quick start, all-in-one installation used for tracing distributed systemm. This is not production qualified, please refer to jaeger documentation to determine which installation you may need instead. - -### Dependencies - -**Rancher Monitoring or other Prometheus installation** - -The Prometheus CRDs are required for installing Kiali which is enabled by default. If you do not have Prometheus installed your Istio installation will fail. If you do not plan on using Kiali, set `kiali.enabled=false` to bypass this requirement. - -### Customization - -**Rancher Monitoring** - -The Rancher Monitoring app sets `prometheus.prometheusSpec.ignoreNamespaceSelectors=false` which means all namespaces will be scraped by Prometheus by default. This ensures you can view traffic, metrics and graphs for resources deployed in other namespaces. - -To limit scraping to specific namespaces, set `prometheus.prometheusSpec.ignoreNamespaceSelectors=true` and add one of the following configurations to ensure you can continue to view traffic, metrics and graphs for your deployed resources. - -1. Add a Service Monitor or Pod Monitor in the namespace with the targets you want to scrape. -1. Add an additionalScrapeConfig to your rancher-monitoring instance to scrape all targets in all namespaces. - -**Custom Prometheus Installation with Kiali** - -To use a custom Monitoring installation, set the `kiali.external_services.prometheus` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `prometheus.service.port` in your rancher-monitoring or other monitoring instance: -``` -http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc:{{ prometheus.service.port }} -``` -**Custom Grafana Installation with Kiali** - -To use a custom Grafana installation, set the `kiali.external_services.grafana` url in the values.yaml. This url depends on the values for `nameOverride`, `namespaceOverride`, and `granfa.service.port` in your rancher-monitoring or other grafana instance: -``` -http://{{ .Values.nameOverride }}-grafana.{{ .Values.namespaceOverride }}.svc:{{ grafana.service.port }} -``` -**Custom Tracing Installation with Kiali** - -To use a custom Tracing installation, set the `kiali.external_services.tracing` url and update the `.Values.tracing.contextPath` in the rancher-istio values.yaml. - -This url depends on the values for `namespaceOverride`, and `.Values.service.externalPort` in your rancher-tracing or other tracing instance.: -``` -http://tracing.{{ .Values.namespaceOverride }}.svc:{{ .Values.service.externalPort }}/{{ .Values.tracing.contextPath }} -``` - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/istio/v2.5/). diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/Chart.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/Chart.yaml deleted file mode 100755 index e08a9b65b..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.29.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: kiali -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.29.0 diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/NOTES.txt b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/_helpers.tpl deleted file mode 100755 index dd33bbe48..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/_helpers.tpl +++ /dev/null @@ -1,192 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Identifies the log_level with the old verbose_mode and the new log_level considered. -*/}} -{{- define "kiali-server.logLevel" -}} -{{- if .Values.deployment.verbose_mode -}} -{{- .Values.deployment.verbose_mode -}} -{{- else -}} -{{- .Values.deployment.logger.log_level -}} -{{- end -}} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: "kiali" -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- if .Values.external_services.custom_dashboards.enabled }} - {{- $includere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- $excludere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} - {{- else }} - {{- print "" }} - {{- end }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/cabundle.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/configmap.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/envoy.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/go.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/kiali.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/nodejs.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/quarkus.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/thorntail.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/tomcat.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-client.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-jvm.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-pool.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-server.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/deployment.yaml deleted file mode 100755 index de5ae7ebe..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/deployment.yaml +++ /dev/null @@ -1,174 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - {{- if .Values.deployment.pod_labels }} - {{- toYaml .Values.deployment.pod_labels | nindent 8 }} - {{- end }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LOG_LEVEL - value: "{{ include "kiali-server.logLevel" . }}" - - name: LOG_FORMAT - value: "{{ .Values.deployment.logger.log_format }}" - - name: LOG_TIME_FIELD_FORMAT - value: "{{ .Values.deployment.logger.time_field_format }}" - - name: LOG_SAMPLER_RATE - value: "{{ .Values.deployment.logger.sampler_rate }}" - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/hpa.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/hpa.yaml deleted file mode 100755 index 934c4c1e9..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.hpa.spec }} ---- -apiVersion: {{ .Values.deployment.hpa.api_version }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "kiali-server.fullname" . }} - {{- toYaml .Values.deployment.hpa.spec | nindent 2 }} -... -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/ingress.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/ingress.yaml deleted file mode 100755 index e4c98db1b..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/oauth.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-controlplane.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-controlplane.yaml deleted file mode 100755 index a22c76756..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-controlplane.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - secrets - verbs: - - list -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-viewer.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-viewer.yaml deleted file mode 100755 index a496c0828..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role-viewer.yaml +++ /dev/null @@ -1,96 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role.yaml deleted file mode 100755 index bd51e8d5e..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/role.yaml +++ /dev/null @@ -1,107 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding-controlplane.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding-controlplane.yaml deleted file mode 100755 index fcd8fd579..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding-controlplane.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: kiali-controlplane -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/route.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/validate-install-crd.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/validate-install-crd.yaml deleted file mode 100755 index b42eeb266..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/web-root-configmap.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/web-root-configmap.yaml deleted file mode 100755 index 970d4e4f5..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/values.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/values.yaml deleted file mode 100755 index 46d703c18..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/kiali/values.yaml +++ /dev/null @@ -1,91 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - hpa: - api_version: "autoscaling/v2beta2" - spec: {} - repository: rancher/mirrored-kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.29.0 - ingress_enabled: true - logger: - log_format: "text" - log_level: "info" - time_field_format: "2006-01-02T15:04:05Z07:00" - sampler_rate: "1" - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - pod_labels: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - version_label: v1.29.0 - view_only_mode: false - -external_services: - custom_dashboards: - enabled: true - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/.helmignore b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/.helmignore deleted file mode 100755 index 0e8a0eb36..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/Chart.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/Chart.yaml deleted file mode 100755 index bae6dfa47..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/Chart.yaml +++ /dev/null @@ -1,12 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: istio-system - catalog.rancher.io/release-name: rancher-tracing -apiVersion: v1 -appVersion: 1.20.0 -description: A quick start Jaeger Tracing installation using the all-in-one demo. - This is not production qualified. Refer to https://www.jaegertracing.io/ for details. -name: tracing -version: 1.20.0 diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/README.md b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/README.md deleted file mode 100755 index 25534c628..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Jaeger - -A Rancher chart based on the Jaeger all-in-one quick installation option. This chart will allow you to trace and monitor distributed microservices. - -> **Note:** The basic all-in-one Jaeger installation which is not qualified for production. Use the [Jaeger Tracing](https://www.jaegertracing.io) documentation to determine which installation you will need for your production needs. diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_affinity.tpl b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_affinity.tpl deleted file mode 100755 index bf6a9aee5..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_affinity.tpl +++ /dev/null @@ -1,92 +0,0 @@ -{{/* affinity - https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ */}} -{{- define "nodeAffinity" }} - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityRequiredDuringScheduling" . }} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "nodeAffinityPreferredDuringScheduling" . }} -{{- end }} - -{{- define "nodeAffinityRequiredDuringScheduling" }} - nodeSelectorTerms: - - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - {{ $key | quote }} - {{- end }} - {{- end }} - {{- $nodeSelector := default .Values.global.defaultNodeSelector .Values.nodeSelector -}} - {{- range $key, $val := $nodeSelector }} - - key: {{ $key }} - operator: In - values: - - {{ $val | quote }} - {{- end }} -{{- end }} - -{{- define "nodeAffinityPreferredDuringScheduling" }} - {{- range $key, $val := .Values.global.arch }} - {{- if gt ($val | int) 0 }} - - weight: {{ $val | int }} - preference: - matchExpressions: - - key: beta.kubernetes.io/arch - operator: In - values: - - {{ $key | quote }} - {{- end }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinity" }} -{{- if or .Values.podAntiAffinityLabelSelector .Values.podAntiAffinityTermLabelSelector}} - podAntiAffinity: - {{- if .Values.podAntiAffinityLabelSelector }} - requiredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityRequiredDuringScheduling" . }} - {{- end }} - {{- if or .Values.podAntiAffinityTermLabelSelector}} - preferredDuringSchedulingIgnoredDuringExecution: - {{- include "podAntiAffinityPreferredDuringScheduling" . }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "podAntiAffinityRequiredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityLabelSelector }} - - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - {{- end }} -{{- end }} - -{{- define "podAntiAffinityPreferredDuringScheduling" }} - {{- range $index, $item := .Values.podAntiAffinityTermLabelSelector }} - - podAffinityTerm: - labelSelector: - matchExpressions: - - key: {{ $item.key }} - operator: {{ $item.operator }} - {{- if $item.values }} - values: - {{- $vals := split "," $item.values }} - {{- range $i, $v := $vals }} - - {{ $v | quote }} - {{- end }} - {{- end }} - topologyKey: {{ $item.topologyKey }} - weight: 100 - {{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_helpers.tpl deleted file mode 100755 index 56cfa7335..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/_helpers.tpl +++ /dev/null @@ -1,32 +0,0 @@ -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "tracing.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "tracing.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/deployment.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/deployment.yaml deleted file mode 100755 index e7ecfadd8..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/deployment.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "tracing.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - selector: - matchLabels: - app: {{ .Values.provider }} - template: - metadata: - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} - annotations: - sidecar.istio.io/inject: "false" - prometheus.io/scrape: "true" - prometheus.io/port: "14269" -{{- if .Values.jaeger.podAnnotations }} -{{ toYaml .Values.jaeger.podAnnotations | indent 8 }} -{{- end }} - spec: - containers: - - name: jaeger - image: "{{ template "system_default_registry" . }}{{ .Values.jaeger.repository }}:{{ .Values.jaeger.tag }}" - imagePullPolicy: {{ .Values.global.imagePullPolicy }} - env: - {{- if eq .Values.jaeger.spanStorageType "badger" }} - - name: BADGER_EPHEMERAL - value: "false" - - name: SPAN_STORAGE_TYPE - value: "badger" - - name: BADGER_DIRECTORY_VALUE - value: "/badger/data" - - name: BADGER_DIRECTORY_KEY - value: "/badger/key" - {{- end }} - - name: COLLECTOR_ZIPKIN_HTTP_PORT - value: "9411" - - name: MEMORY_MAX_TRACES - value: "{{ .Values.jaeger.memory.max_traces }}" - - name: QUERY_BASE_PATH - value: {{ if .Values.contextPath }} {{ .Values.contextPath }} {{ else }} /{{ .Values.provider }} {{ end }} - livenessProbe: - httpGet: - path: / - port: 14269 - readinessProbe: - httpGet: - path: / - port: 14269 -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumeMounts: - - name: data - mountPath: /badger -{{- end }} - resources: -{{- if .Values.jaeger.resources }} -{{ toYaml .Values.jaeger.resources | indent 12 }} -{{- else }} -{{ toYaml .Values.global.defaultResources | indent 12 }} -{{- end }} - affinity: - {{- include "nodeAffinity" . | indent 6 }} - {{- include "podAntiAffinity" . | indent 6 }} -{{- if eq .Values.jaeger.spanStorageType "badger" }} - volumes: - - name: data -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} - persistentVolumeClaim: - claimName: istio-jaeger-pvc -{{- else }} - emptyDir: {} -{{- end }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/pvc.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/pvc.yaml deleted file mode 100755 index 9b4c55e4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/pvc.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if .Values.jaeger.persistentVolumeClaim.enabled }} -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: istio-jaeger-pvc - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} -spec: - storageClassName: {{ .Values.jaeger.storageClassName }} - accessModes: - - {{ .Values.jaeger.accessMode }} - resources: - requests: - storage: {{.Values.jaeger.persistentVolumeClaim.storage }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/service.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/service.yaml deleted file mode 100755 index 4210a9b5f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/templates/service.yaml +++ /dev/null @@ -1,63 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: tracing - namespace: {{ .Release.Namespace }} - annotations: - {{- range $key, $val := .Values.service.annotations }} - {{ $key }}: {{ $val | quote }} - {{- end }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: {{ .Values.service.type }} - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.service.externalPort }} - protocol: TCP - targetPort: 16686 - selector: - app: {{ .Values.provider }} ---- -# Jaeger implements the Zipkin API. To support swapping out the tracing backend, we use a Service named Zipkin. -apiVersion: v1 -kind: Service -metadata: - name: zipkin - namespace: {{ .Release.Namespace }} - labels: - name: zipkin - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - ports: - - name: {{ .Values.service.name }} - port: {{ .Values.zipkin.queryPort }} - targetPort: {{ .Values.zipkin.queryPort }} - selector: - app: {{ .Values.provider }} ---- -apiVersion: v1 -kind: Service -metadata: - name: jaeger-collector - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Values.provider }} - heritage: {{ .Release.Service }} - release: {{ .Release.Name }} -spec: - type: ClusterIP - ports: - - name: jaeger-collector-http - port: 14268 - targetPort: 14268 - protocol: TCP - - name: jaeger-collector-grpc - port: 14250 - targetPort: 14250 - protocol: TCP - selector: - app: {{ .Values.provider }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/values.yaml b/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/values.yaml deleted file mode 100755 index cae26c748..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/charts/tracing/values.yaml +++ /dev/null @@ -1,42 +0,0 @@ -provider: jaeger -contextPath: "" -nodeSelector: {} -podAntiAffinityLabelSelector: [] -podAntiAffinityTermLabelSelector: [] -nameOverride: "" -fullnameOverride: "" - -global: - cattle: - systemDefaultRegistry: "" - defaultResources: {} - imagePullPolicy: IfNotPresent - imagePullSecrets: [] - arch: - amd64: 2 - s390x: 2 - ppc64le: 2 - defaultNodeSelector: {} - -jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 - # spanStorageType value can be "memory" and "badger" for all-in-one image - spanStorageType: badger - resources: - requests: - cpu: 10m - persistentVolumeClaim: - enabled: false - storage: 5Gi - storageClassName: "" - accessMode: ReadWriteMany - memory: - max_traces: 50000 -zipkin: - queryPort: 9411 -service: - annotations: {} - name: http-query - type: ClusterIP - externalPort: 16686 diff --git a/charts/rancher-istio/rancher-istio/1.8.300/configs/istio-base.yaml b/charts/rancher-istio/rancher-istio/1.8.300/configs/istio-base.yaml deleted file mode 100755 index c484f5988..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/configs/istio-base.yaml +++ /dev/null @@ -1,85 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - addonComponents: - istiocoredns: - enabled: {{ .Values.istiocoredns.enabled }} - components: - base: - enabled: {{ .Values.base.enabled }} - cni: - enabled: {{ .Values.cni.enabled }} - egressGateways: - - enabled: {{ .Values.egressGateways.enabled }} - name: istio-egressgateway - ingressGateways: - - enabled: {{ .Values.ingressGateways.enabled }} - name: istio-ingressgateway - k8s: - service: - ports: - - name: status-port - port: 15021 - targetPort: 15021 - - name: http2 - port: 80 - targetPort: 8080 - nodePort: 31380 - - name: https - port: 443 - targetPort: 8443 - nodePort: 31390 - - name: tcp - port: 31400 - targetPort: 31400 - nodePort: 31400 - - name: tls - port: 15443 - targetPort: 15443 - istiodRemote: - enabled: {{ .Values.istiodRemote.enabled }} - pilot: - enabled: {{ .Values.pilot.enabled }} - hub: {{ .Values.systemDefaultRegistry | default "docker.io" }} - profile: default - tag: {{ .Values.tag }} - revision: {{ .Values.revision }} - meshConfig: - enablePrometheusMerge: {{ .Values.meshConfig.enablePrometheusMerge }} - values: - gateways: - istio-egressgateway: - name: istio-egressgateway - type: {{ .Values.egressGateways.type }} - istio-ingressgateway: - name: istio-ingressgateway - type: {{ .Values.ingressGateways.type }} - global: - istioNamespace: {{ template "istio.namespace" . }} - proxy: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy.repository }}:{{ .Values.global.proxy.tag }} - proxy_init: - image: {{ template "system_default_registry" . }}{{ .Values.global.proxy_init.repository }}:{{ .Values.global.proxy_init.tag }} - {{- if .Values.global.defaultPodDisruptionBudget.enabled }} - defaultPodDisruptionBudget: - enabled: {{ .Values.global.defaultPodDisruptionBudget.enabled }} - {{- end }} - istiocoredns: - coreDNSImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.image.repository }} - coreDNSPluginImage: {{ template "system_default_registry" . }}{{ .Values.istiocoredns.pluginImage.repository }}:{{ .Values.istiocoredns.pluginImage.tag }} - coreDNSTag: {{ .Values.istiocoredns.image.tag }} - {{- if .Values.pilot.enabled }} - pilot: - image: {{ template "system_default_registry" . }}{{ .Values.pilot.repository }}:{{ .Values.pilot.tag }} - {{- end }} - telemetry: - enabled: {{ .Values.telemetry.enabled }} - v2: - enabled: {{ .Values.telemetry.v2.enabled }} - {{- if .Values.cni.enabled }} - cni: - image: {{ template "system_default_registry" . }}{{ .Values.cni.repository }}:{{ .Values.cni.tag }} - excludeNamespaces: - {{- toYaml .Values.cni.excludeNamespaces | nindent 8 }} - logLevel: {{ .Values.cni.logLevel }} - {{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/requirements.yaml b/charts/rancher-istio/rancher-istio/1.8.300/requirements.yaml deleted file mode 100755 index b60745780..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/requirements.yaml +++ /dev/null @@ -1,17 +0,0 @@ -dependencies: -- name: kiali - version: "" - repository: file://./charts/kiali - condition: kiali.enabled - tags: [] - enabled: false - importvalues: [] - alias: "" -- name: tracing - version: "" - repository: file://./charts/tracing - condition: tracing.enabled - tags: [] - enabled: false - importvalues: [] - alias: "" diff --git a/charts/rancher-istio/rancher-istio/1.8.300/samples/overlay-example.yaml b/charts/rancher-istio/rancher-istio/1.8.300/samples/overlay-example.yaml deleted file mode 100755 index 5cf3cf3b0..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/samples/overlay-example.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: install.istio.io/v1alpha1 -kind: IstioOperator -spec: - components: - ingressGateways: - - enabled: true - name: ilb-gateway - namespace: user-ingressgateway-ns - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal - - enabled: true - name: other-gateway - namespace: cattle-istio-system - k8s: - resources: - requests: - cpu: 200m - service: - ports: - - name: tcp-citadel-grpc-tls - port: 8060 - targetPort: 8060 - - name: tcp-dns - port: 5353 - serviceAnnotations: - cloud.google.com/load-balancer-type: internal diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/_helpers.tpl b/charts/rancher-istio/rancher-istio/1.8.300/templates/_helpers.tpl deleted file mode 100755 index 3f7af953a..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/_helpers.tpl +++ /dev/null @@ -1,12 +0,0 @@ -{{/* Ensure namespace is set the same everywhere */}} -{{- define "istio.namespace" -}} - {{- .Release.Namespace | default "istio-system" -}} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/admin-role.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/admin-role.yaml deleted file mode 100755 index ad1313c4f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/admin-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - name: istio-admin - namespace: {{ template "istio.namespace" . }} -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/base-config-map.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/base-config-map.yaml deleted file mode 100755 index 5323917bc..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/base-config-map.yaml +++ /dev/null @@ -1,7 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-base - namespace: {{ template "istio.namespace" . }} -data: -{{ tpl (.Files.Glob "configs/*").AsConfig . | indent 2 }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrole.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrole.yaml deleted file mode 100755 index 3e621d897..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrole.yaml +++ /dev/null @@ -1,112 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: istio-installer -rules: -# istio groups -- apiGroups: - - authentication.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - config.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - install.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - networking.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - rbac.istio.io - resources: - - '*' - verbs: - - '*' -- apiGroups: - - security.istio.io - resources: - - '*' - verbs: - - '*' -# k8s groups -- apiGroups: - - admissionregistration.k8s.io - resources: - - mutatingwebhookconfigurations - - validatingwebhookconfigurations - verbs: - - '*' -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions.apiextensions.k8s.io - - customresourcedefinitions - verbs: - - '*' -- apiGroups: - - apps - - extensions - resources: - - daemonsets - - deployments - - deployments/finalizers - - ingresses - - replicasets - - statefulsets - verbs: - - '*' -- apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - '*' -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - get - - create -- apiGroups: - - policy - resources: - - poddisruptionbudgets - verbs: - - '*' -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - roles - - rolebindings - verbs: - - '*' -- apiGroups: - - "" - resources: - - configmaps - - endpoints - - events - - namespaces - - pods - - pods/exec - - persistentvolumeclaims - - secrets - - services - - serviceaccounts - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrolebinding.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrolebinding.yaml deleted file mode 100755 index 9d74a0434..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,12 +0,0 @@ -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: istio-installer -subjects: -- kind: ServiceAccount - name: istio-installer - namespace: {{ template "istio.namespace" . }} -roleRef: - kind: ClusterRole - name: istio-installer - apiGroup: rbac.authorization.k8s.io diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/edit-role.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/edit-role.yaml deleted file mode 100755 index d1059d58d..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/edit-role.yaml +++ /dev/null @@ -1,43 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-edit: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-edit -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: - - '*' - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: - - '*' diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-install-job.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-install-job.yaml deleted file mode 100755 index 0e9c732e1..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-install-job.yaml +++ /dev/null @@ -1,45 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-installer - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded -spec: - backoffLimit: 1 - template: - spec: - containers: - - name: istioctl-installer - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - - name: FORCE_INSTALL - value: {{ .Values.forceInstall | default "false" | quote }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/run.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{- end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{- end }} - serviceAccountName: istio-installer - restartPolicy: Never diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-uninstall-job.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-uninstall-job.yaml deleted file mode 100755 index b5946e55f..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/istio-uninstall-job.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: istioctl-uninstaller - namespace: {{ template "istio.namespace" . }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-weight": "-5" - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - spec: - containers: - - name: istioctl-uninstaller - image: {{ template "system_default_registry" . }}{{ .Values.installer.repository }}:{{ .Values.installer.tag }} - env: - - name: RELEASE_NAME - value: {{ .Release.Name }} - - name: ISTIO_NAMESPACE - value: {{ template "istio.namespace" . }} - command: ["/bin/sh","-c"] - args: ["/usr/local/app/scripts/uninstall_istio_system.sh"] - volumeMounts: - - name: config-volume - mountPath: /app/istio-base.yaml - subPath: istio-base.yaml - {{- if .Values.overlayFile }} - - name: overlay-volume - mountPath: /app/overlay-config.yaml - subPath: overlay-config.yaml - {{ end }} - volumes: - - name: config-volume - configMap: - name: istio-installer-base - {{- if .Values.overlayFile }} - - name: overlay-volume - configMap: - name: istio-installer-overlay - {{ end }} - serviceAccountName: istio-installer - restartPolicy: OnFailure diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/overlay-config-map.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/overlay-config-map.yaml deleted file mode 100755 index 287d26b2c..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/overlay-config-map.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if .Values.overlayFile }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: istio-installer-overlay - namespace: {{ template "istio.namespace" . }} -data: - overlay-config.yaml: {{ toYaml .Values.overlayFile | indent 2 }} -{{- end }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/service-monitors.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/service-monitors.yaml deleted file mode 100755 index c3d60c4fc..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/service-monitors.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if .Values.kiali.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: envoy-stats-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-proxies -spec: - selector: - matchExpressions: - - {key: istio-prometheus-ignore, operator: DoesNotExist} - namespaceSelector: - any: true - jobLabel: envoy-stats - endpoints: - - path: /stats/prometheus - targetPort: 15090 - interval: 15s - relabelings: - - sourceLabels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: '.*-envoy-prom' - - action: labeldrop - regex: "__meta_kubernetes_pod_label_(.+)" - - sourceLabels: [__meta_kubernetes_namespace] - action: replace - targetLabel: namespace - - sourceLabels: [__meta_kubernetes_pod_name] - action: replace - targetLabel: pod_name ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: istio-component-monitor - namespace: {{ template "istio.namespace" . }} - labels: - monitoring: istio-components -spec: - jobLabel: istio - targetLabels: [app] - selector: - matchExpressions: - - {key: istio, operator: In, values: [pilot]} - namespaceSelector: - any: true - endpoints: - - port: http-monitoring - interval: 15s -{{- end -}} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/serviceaccount.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/serviceaccount.yaml deleted file mode 100755 index 82b6cbb7e..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/serviceaccount.yaml +++ /dev/null @@ -1,5 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: istio-installer - namespace: {{ template "istio.namespace" . }} diff --git a/charts/rancher-istio/rancher-istio/1.8.300/templates/view-role.yaml b/charts/rancher-istio/rancher-istio/1.8.300/templates/view-role.yaml deleted file mode 100755 index 5947d3eba..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/templates/view-role.yaml +++ /dev/null @@ -1,41 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - rbac.authorization.k8s.io/aggregate-to-view: "true" - namespace: {{ template "istio.namespace" . }} - name: istio-view -rules: - - apiGroups: - - config.istio.io - resources: - - adapters - - attributemanifests - - handlers - - httpapispecbindings - - httpapispecs - - instances - - quotaspecbindings - - quotaspecs - - rules - - templates - verbs: ["get", "watch", "list"] - - apiGroups: - - networking.istio.io - resources: - - destinationrules - - envoyfilters - - gateways - - serviceentries - - sidecars - - virtualservices - - workloadentries - verbs: ["get", "watch", "list"] - - apiGroups: - - security.istio.io - resources: - - authorizationpolicies - - peerauthentications - - requestauthentications - verbs: ["get", "watch", "list"] diff --git a/charts/rancher-istio/rancher-istio/1.8.300/values.yaml b/charts/rancher-istio/rancher-istio/1.8.300/values.yaml deleted file mode 100755 index 653572f03..000000000 --- a/charts/rancher-istio/rancher-istio/1.8.300/values.yaml +++ /dev/null @@ -1,92 +0,0 @@ -overlayFile: "" -tag: 1.8.3 -##Setting forceInstall: true will remove the check for istio version < 1.6.x and will not analyze your install cluster prior to install -forceInstall: false - -installer: - repository: rancher/istio-installer - tag: 1.8.3-rancher1 - -istiocoredns: - enabled: false - image: - repository: rancher/mirrored-coredns-coredns - tag: 1.6.2 - pluginImage: - repository: rancher/mirrored-istio-coredns-plugin - tag: 0.2-istio-1.1 - -base: - enabled: true - -cni: - enabled: false - repository: rancher/mirrored-istio-install-cni - tag: 1.8.3 - logLevel: info - excludeNamespaces: - - istio-system - - kube-system - -egressGateways: - enabled: false - type: NodePort - -ingressGateways: - enabled: true - type: NodePort - -istiodRemote: - enabled: false - -pilot: - enabled: true - repository: rancher/mirrored-istio-pilot - tag: 1.8.3 - -telemetry: - enabled: true - v2: - enabled: true - -global: - cattle: - systemDefaultRegistry: "" - proxy: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.8.3 - proxy_init: - repository: rancher/mirrored-istio-proxyv2 - tag: 1.8.3 - defaultPodDisruptionBudget: - enabled: true - -# this can be removed in 1.7 as it is default -meshConfig: - enablePrometheusMerge: true - -# Kiali subchart from rancher-kiali-server -kiali: - enabled: true - auth: - strategy: anonymous - deployment: - ingress_enabled: false - repository: rancher/mirrored-kiali-kiali - tag: v1.29.0 - external_services: - prometheus: - custom_metrics_url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - url: "http://rancher-monitoring-prometheus.cattle-monitoring-system.svc:9090" - tracing: - in_cluster_url: "http://tracing.istio-system.svc:16686/jaeger" - grafana: - in_cluster_url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - url: "http://rancher-monitoring-grafana.cattle-monitoring-system.svc:80" - -tracing: - enabled: false - contextPath: "/jaeger" - jaeger: - repository: rancher/mirrored-jaegertracing-all-in-one - tag: 1.20.0 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/Chart.yaml deleted file mode 100755 index 445f3599d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/Chart.yaml +++ /dev/null @@ -1,7 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" -apiVersion: v2 -description: Installs the CRDs for rancher-kiali-server. -name: rancher-kiali-server-crd -type: application -version: 1.23.001 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/README.md b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/README.md deleted file mode 100755 index a5d564749..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-kiali-server-crd -A Rancher chart that installs the CRDs used by [rancher-kiali-server](https://github.com/rancher/dev-charts/tree/master/packages/rancher-kiali-server). diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/templates/crds.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/templates/crds.yaml deleted file mode 100755 index d14366ad5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.23.001/templates/crds.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: monitoringdashboards.monitoring.kiali.io -spec: - group: monitoring.kiali.io - names: - kind: MonitoringDashboard - listKind: MonitoringDashboardList - plural: monitoringdashboards - singular: monitoringdashboard - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/Chart.yaml deleted file mode 100755 index d3f2f682a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/Chart.yaml +++ /dev/null @@ -1,7 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" -apiVersion: v2 -description: Installs the CRDs for rancher-kiali-server. -name: rancher-kiali-server-crd -type: application -version: 1.24.001 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/README.md b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/README.md deleted file mode 100755 index 3847c18a1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-kiali-server-crd -A Rancher chart that installs the CRDs used by rancher-kiali-server. diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/templates/crds.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/templates/crds.yaml deleted file mode 100755 index d14366ad5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.001/templates/crds.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: monitoringdashboards.monitoring.kiali.io -spec: - group: monitoring.kiali.io - names: - kind: MonitoringDashboard - listKind: MonitoringDashboardList - plural: monitoringdashboards - singular: monitoringdashboard - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/Chart.yaml deleted file mode 100755 index e4dd7cdf5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/Chart.yaml +++ /dev/null @@ -1,7 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" -apiVersion: v2 -description: Installs the CRDs for rancher-kiali-server. -name: rancher-kiali-server-crd -type: application -version: 1.24.003 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/README.md b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/README.md deleted file mode 100755 index 3847c18a1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-kiali-server-crd -A Rancher chart that installs the CRDs used by rancher-kiali-server. diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/templates/crds.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/templates/crds.yaml deleted file mode 100755 index d14366ad5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.24.003/templates/crds.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: monitoringdashboards.monitoring.kiali.io -spec: - group: monitoring.kiali.io - names: - kind: MonitoringDashboard - listKind: MonitoringDashboardList - plural: monitoringdashboards - singular: monitoringdashboard - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/Chart.yaml deleted file mode 100755 index 8dea63886..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/Chart.yaml +++ /dev/null @@ -1,7 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" -apiVersion: v2 -description: Installs the CRDs for rancher-kiali-server. -name: rancher-kiali-server-crd -type: application -version: 1.29.000 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/README.md b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/README.md deleted file mode 100755 index 3847c18a1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-kiali-server-crd -A Rancher chart that installs the CRDs used by rancher-kiali-server. diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/templates/crds.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/templates/crds.yaml deleted file mode 100755 index d14366ad5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.29.000/templates/crds.yaml +++ /dev/null @@ -1,18 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - name: monitoringdashboards.monitoring.kiali.io -spec: - group: monitoring.kiali.io - names: - kind: MonitoringDashboard - listKind: MonitoringDashboardList - plural: monitoringdashboards - singular: monitoringdashboard - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/Chart.yaml deleted file mode 100644 index 09eb29caa..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/Chart.yaml +++ /dev/null @@ -1,7 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" -apiVersion: v2 -description: Installs the CRDs for rancher-kiali-server. -name: rancher-kiali-server-crd -type: application -version: 1.32.100+up1.32.0 diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/README.md b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/README.md deleted file mode 100644 index 3847c18a1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-kiali-server-crd -A Rancher chart that installs the CRDs used by rancher-kiali-server. diff --git a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/templates/crds.yaml b/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/templates/crds.yaml deleted file mode 100644 index ae7c49349..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server-crd/1.32.100+up1.32.0/templates/crds.yaml +++ /dev/null @@ -1,22 +0,0 @@ ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - name: monitoringdashboards.monitoring.kiali.io -spec: - group: monitoring.kiali.io - names: - kind: MonitoringDashboard - listKind: MonitoringDashboardList - plural: monitoringdashboards - singular: monitoringdashboard - scope: Namespaced - versions: - - name: v1alpha1 - served: true - storage: true - schema: - openAPIV3Schema: - type: object - x-kubernetes-preserve-unknown-fields: true -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/Chart.yaml deleted file mode 100755 index 8083cf929..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server - catalog.cattle.io/os: linux -apiVersion: v2 -appVersion: v1.23.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.23.001 diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/NOTES.txt b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/_helpers.tpl b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/cabundle.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/envoy.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/go.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/kiali.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/nodejs.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/quarkus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/thorntail.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-client.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-server.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/deployment.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/ingess.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/oauth.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role-viewer.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/rolebinding.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/route.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/service.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/serviceaccount.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/validate-install-crd.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/web-root-configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/web-root-configmap.yaml deleted file mode 100755 index 0daa7bb23..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:rancher-istio-kiali:20001/proxy'; -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/values.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/values.yaml deleted file mode 100755 index 12ea7379d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.23.001/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.23.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.23.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/Chart.yaml deleted file mode 100755 index a94f55dbf..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server - catalog.cattle.io/os: linux -apiVersion: v2 -appVersion: v1.24.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.24.001 diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/NOTES.txt b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/_helpers.tpl b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/cabundle.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/envoy.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/go.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/kiali.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/nodejs.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/quarkus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/thorntail.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-client.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-server.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/deployment.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/ingess.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/oauth.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role-viewer.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/rolebinding.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/route.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/service.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/serviceaccount.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/validate-install-crd.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/web-root-configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/web-root-configmap.yaml deleted file mode 100755 index 0daa7bb23..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:rancher-istio-kiali:20001/proxy'; -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/values.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/values.yaml deleted file mode 100755 index fccc6d4ce..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.001/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.24.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.24.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/Chart.yaml deleted file mode 100755 index 57e2d891d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.24.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.24.003 diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/NOTES.txt b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/_helpers.tpl b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/_helpers.tpl deleted file mode 100755 index 9dd3d7ff0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/_helpers.tpl +++ /dev/null @@ -1,176 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- $includere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- $excludere := "" }} -{{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} -{{- end }} -{{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/cabundle.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/envoy.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/go.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/kiali.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/nodejs.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/quarkus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/thorntail.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-client.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-server.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/deployment.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/deployment.yaml deleted file mode 100755 index 6fab9ee49..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/deployment.yaml +++ /dev/null @@ -1,165 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - - "-v" - - "{{ .Values.deployment.verbose_mode }}" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/ingess.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/ingess.yaml deleted file mode 100755 index 5a427e896..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/ingess.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: extensions/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/oauth.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role-viewer.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role-viewer.yaml deleted file mode 100755 index 790406017..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role-viewer.yaml +++ /dev/null @@ -1,101 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - get - - list - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role.yaml deleted file mode 100755 index 34a47dd89..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/role.yaml +++ /dev/null @@ -1,118 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - config.istio.io - - networking.istio.io - - authentication.istio.io - - rbac.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.maistra.io"] - resources: - - servicemeshpolicies - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["rbac.maistra.io"] - resources: - - servicemeshrbacconfigs - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/rolebinding.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/route.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/service.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/serviceaccount.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/validate-install-crd.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/validate-install-crd.yaml deleted file mode 100755 index 01d33e632..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-kiali-server-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/web-root-configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/web-root-configmap.yaml deleted file mode 100755 index 970d4e4f5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/values.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/values.yaml deleted file mode 100755 index fccc6d4ce..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.24.003/values.yaml +++ /dev/null @@ -1,79 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - repository: rancher/kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.24.0 - ingress_enabled: true - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - verbose_mode: "3" - version_label: v1.24.0 - view_only_mode: false - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/Chart.yaml deleted file mode 100755 index 9ad884d7b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.29.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.29.000 diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/NOTES.txt b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/NOTES.txt deleted file mode 100755 index 751019401..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/_helpers.tpl b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/_helpers.tpl deleted file mode 100755 index dd33bbe48..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/_helpers.tpl +++ /dev/null @@ -1,192 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Identifies the log_level with the old verbose_mode and the new log_level considered. -*/}} -{{- define "kiali-server.logLevel" -}} -{{- if .Values.deployment.verbose_mode -}} -{{- .Values.deployment.verbose_mode -}} -{{- else -}} -{{- .Values.deployment.logger.log_level -}} -{{- end -}} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: "kiali" -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- if .Values.external_services.custom_dashboards.enabled }} - {{- $includere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- $excludere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} - {{- else }} - {{- print "" }} - {{- end }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/cabundle.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/cabundle.yaml deleted file mode 100755 index 7462b95a7..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/configmap.yaml deleted file mode 100755 index b1bf53173..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/envoy.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/envoy.yaml deleted file mode 100755 index 8d961b848..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics -# discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/go.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/go.yaml deleted file mode 100755 index 01ebed7b5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/go.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/kiali.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/kiali.yaml deleted file mode 100755 index 0d5b5caa2..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100755 index e89e1200c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100755 index ab487dccc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100755 index d7014951d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-1.1.yaml deleted file mode 100755 index c00446c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-x.y.yaml deleted file mode 100755 index d15f527d9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/nodejs.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/nodejs.yaml deleted file mode 100755 index d772a16c0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/quarkus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/quarkus.yaml deleted file mode 100755 index 4fc3e9ac0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100755 index 2ff4ae576..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm.yaml deleted file mode 100755 index 8bd43055b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-tomcat.yaml deleted file mode 100755 index 4b27aee4f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/thorntail.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/thorntail.yaml deleted file mode 100755 index 513488df4..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/tomcat.yaml deleted file mode 100755 index 28fd7f1cc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-client.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-client.yaml deleted file mode 100755 index 17392d87f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-eventbus.yaml deleted file mode 100755 index fa659b55c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,58 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-jvm.yaml deleted file mode 100755 index ac03ea2e0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-pool.yaml deleted file mode 100755 index 3715e9c10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-server.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-server.yaml deleted file mode 100755 index 686295468..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,61 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/deployment.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/deployment.yaml deleted file mode 100755 index de5ae7ebe..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/deployment.yaml +++ /dev/null @@ -1,174 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - {{- if .Values.deployment.pod_labels }} - {{- toYaml .Values.deployment.pod_labels | nindent 8 }} - {{- end }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: null - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LOG_LEVEL - value: "{{ include "kiali-server.logLevel" . }}" - - name: LOG_FORMAT - value: "{{ .Values.deployment.logger.log_format }}" - - name: LOG_TIME_FIELD_FORMAT - value: "{{ .Values.deployment.logger.time_field_format }}" - - name: LOG_SAMPLER_RATE - value: "{{ .Values.deployment.logger.sampler_rate }}" - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/hpa.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/hpa.yaml deleted file mode 100755 index 934c4c1e9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.hpa.spec }} ---- -apiVersion: {{ .Values.deployment.hpa.api_version }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "kiali-server.fullname" . }} - {{- toYaml .Values.deployment.hpa.spec | nindent 2 }} -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/ingress.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/ingress.yaml deleted file mode 100755 index e4c98db1b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/oauth.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/oauth.yaml deleted file mode 100755 index a178bb85e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-controlplane.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-controlplane.yaml deleted file mode 100755 index a22c76756..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-controlplane.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - secrets - verbs: - - list -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-viewer.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-viewer.yaml deleted file mode 100755 index a496c0828..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role-viewer.yaml +++ /dev/null @@ -1,96 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role.yaml deleted file mode 100755 index bd51e8d5e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/role.yaml +++ /dev/null @@ -1,107 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding-controlplane.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding-controlplane.yaml deleted file mode 100755 index fcd8fd579..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding-controlplane.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: kiali-controlplane -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding.yaml deleted file mode 100755 index 1eaabd65f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/route.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/route.yaml deleted file mode 100755 index 27940dc96..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/service.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/service.yaml deleted file mode 100755 index 69dc395d1..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/service.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/serviceaccount.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/serviceaccount.yaml deleted file mode 100755 index 9151b6f6a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/validate-install-crd.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/validate-install-crd.yaml deleted file mode 100755 index b42eeb266..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/web-root-configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/web-root-configmap.yaml deleted file mode 100755 index 970d4e4f5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/values.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/values.yaml deleted file mode 100755 index 46d703c18..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.29.000/values.yaml +++ /dev/null @@ -1,91 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - hpa: - api_version: "autoscaling/v2beta2" - spec: {} - repository: rancher/mirrored-kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.29.0 - ingress_enabled: true - logger: - log_format: "text" - log_level: "info" - time_field_format: "2006-01-02T15:04:05Z07:00" - sampler_rate: "1" - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - pod_labels: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - version_label: v1.29.0 - view_only_mode: false - -external_services: - custom_dashboards: - enabled: true - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/Chart.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/Chart.yaml deleted file mode 100644 index 59218f75c..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/Chart.yaml +++ /dev/null @@ -1,31 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-kiali-server-crd=match - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: monitoringdashboards.monitoring.kiali.io/v1alpha1 - catalog.cattle.io/requires-gvr: monitoring.coreos.com.prometheus/v1 - catalog.rancher.io/namespace: cattle-istio-system - catalog.rancher.io/release-name: rancher-kiali-server -apiVersion: v2 -appVersion: v1.32.0 -description: Kiali is an open source project for service mesh observability, refer - to https://www.kiali.io for details. This is installed as sub-chart with customized - values in Rancher's Istio. -home: https://github.com/kiali/kiali -icon: https://raw.githubusercontent.com/kiali/kiali.io/master/themes/kiali/static/img/kiali_logo_masthead.png -keywords: -- istio -- kiali -- networking -- infrastructure -maintainers: -- email: kiali-users@googlegroups.com - name: Kiali - url: https://kiali.io -name: rancher-kiali-server -sources: -- https://github.com/kiali/kiali -- https://github.com/kiali/kiali-ui -- https://github.com/kiali/kiali-operator -- https://github.com/kiali/helm-charts -version: 1.32.100+up1.32.0 diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/NOTES.txt b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/NOTES.txt deleted file mode 100644 index 751019401..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/NOTES.txt +++ /dev/null @@ -1,5 +0,0 @@ -Welcome to Kiali! For more details on Kiali, see: https://kiali.io - -The Kiali Server [{{ .Chart.AppVersion }}] has been installed in namespace [{{ .Release.Namespace }}]. It will be ready soon. - -(Helm: Chart=[{{ .Chart.Name }}], Release=[{{ .Release.Name }}], Version=[{{ .Chart.Version }}]) diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/_helpers.tpl b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/_helpers.tpl deleted file mode 100644 index dd33bbe48..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/_helpers.tpl +++ /dev/null @@ -1,192 +0,0 @@ -{{/* vim: set filetype=mustache: */}} - -{{/* -Expand the name of the chart. -*/}} -{{- define "kiali-server.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kiali-server.fullname" -}} -{{- if .Values.fullnameOverride }} - {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} - {{- $name := default .Chart.Name .Values.nameOverride }} - {{- printf "%s" $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "kiali-server.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Identifies the log_level with the old verbose_mode and the new log_level considered. -*/}} -{{- define "kiali-server.logLevel" -}} -{{- if .Values.deployment.verbose_mode -}} -{{- .Values.deployment.verbose_mode -}} -{{- else -}} -{{- .Values.deployment.logger.log_level -}} -{{- end -}} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "kiali-server.labels" -}} -helm.sh/chart: {{ include "kiali-server.chart" . }} -app: {{ include "kiali-server.name" . }} -{{ include "kiali-server.selectorLabels" . }} -version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/version: {{ .Values.deployment.version_label | default .Chart.AppVersion | quote }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/part-of: "kiali" -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "kiali-server.selectorLabels" -}} -app.kubernetes.io/name: {{ include "kiali-server.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Used to determine if a custom dashboard (defined in .Template.Name) should be deployed. -*/}} -{{- define "kiali-server.isDashboardEnabled" -}} -{{- if .Values.external_services.custom_dashboards.enabled }} - {{- $includere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.includes }} - {{- if $s }} - {{- if $includere }} - {{- $includere = printf "%s|^%s$" $includere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $includere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- $excludere := "" }} - {{- range $_, $s := .Values.deployment.custom_dashboards.excludes }} - {{- if $s }} - {{- if $excludere }} - {{- $excludere = printf "%s|^%s$" $excludere ($s | replace "*" ".*" | replace "?" ".") }} - {{- else }} - {{- $excludere = printf "^%s$" ($s | replace "*" ".*" | replace "?" ".") }} - {{- end }} - {{- end }} - {{- end }} - {{- if (and (mustRegexMatch (default "no-matches" $includere) (base .Template.Name)) (not (mustRegexMatch (default "no-matches" $excludere) (base .Template.Name)))) }} - {{- print "enabled" }} - {{- else }} - {{- print "" }} - {{- end }} -{{- else }} - {{- print "" }} -{{- end }} -{{- end }} - -{{/* -Determine the default login token signing key. -*/}} -{{- define "kiali-server.login_token.signing_key" -}} -{{- if .Values.login_token.signing_key }} - {{- .Values.login_token.signing_key }} -{{- else }} - {{- randAlphaNum 16 }} -{{- end }} -{{- end }} - -{{/* -Determine the default web root. -*/}} -{{- define "kiali-server.server.web_root" -}} -{{- if .Values.server.web_root }} - {{- .Values.server.web_root | trimSuffix "/" }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/" }} - {{- else }} - {{- "/kiali" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity cert file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.cert_file" -}} -{{- if hasKey .Values.identity "cert_file" }} - {{- .Values.identity.cert_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.crt" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the default identity private key file. There is no default if on k8s; only on OpenShift. -*/}} -{{- define "kiali-server.identity.private_key_file" -}} -{{- if hasKey .Values.identity "private_key_file" }} - {{- .Values.identity.private_key_file }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- "/kiali-cert/tls.key" }} - {{- else }} - {{- "" }} - {{- end }} -{{- end }} -{{- end }} - -{{/* -Determine the istio namespace - default is where Kiali is installed. -*/}} -{{- define "kiali-server.istio_namespace" -}} -{{- if .Values.istio_namespace }} - {{- .Values.istio_namespace }} -{{- else }} - {{- .Release.Namespace }} -{{- end }} -{{- end }} - -{{/* -Determine the auth strategy to use - default is "token" on Kubernetes and "openshift" on OpenShift. -*/}} -{{- define "kiali-server.auth.strategy" -}} -{{- if .Values.auth.strategy }} - {{- if (and (eq .Values.auth.strategy "openshift") (not .Values.kiali_route_url)) }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or use a different auth strategy via the --set auth.strategy=... option." }} - {{- end }} - {{- .Values.auth.strategy }} -{{- else }} - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - {{- if not .Values.kiali_route_url }} - {{- fail "You did not define what the Kiali Route URL will be (--set kiali_route_url=...). Without this set, the openshift auth strategy will not work. Either set that or explicitly indicate another auth strategy you want via the --set auth.strategy=... option." }} - {{- end }} - {{- "openshift" }} - {{- else }} - {{- "token" }} - {{- end }} -{{- end }} -{{- end }} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/cabundle.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/cabundle.yaml deleted file mode 100644 index 7462b95a7..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/cabundle.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }}-cabundle - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - service.beta.openshift.io/inject-cabundle: "true" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/configmap.yaml deleted file mode 100644 index b1bf53173..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/configmap.yaml +++ /dev/null @@ -1,24 +0,0 @@ ---- -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - config.yaml: | - {{- /* Most of .Values is simply the ConfigMap - strip out the keys that are not part of the ConfigMap */}} - {{- $cm := omit .Values "nameOverride" "fullnameOverride" "kiali_route_url" }} - {{- /* The helm chart defines namespace for us, but pass it to the ConfigMap in case the server needs it */}} - {{- $_ := set $cm.deployment "namespace" .Release.Namespace }} - {{- /* Some values of the ConfigMap are generated, but might not be identical, from .Values */}} - {{- $_ := set $cm "istio_namespace" (include "kiali-server.istio_namespace" .) }} - {{- $_ := set $cm.auth "strategy" (include "kiali-server.auth.strategy" .) }} - {{- $_ := set $cm.auth.openshift "client_id_prefix" (include "kiali-server.fullname" .) }} - {{- $_ := set $cm.identity "cert_file" (include "kiali-server.identity.cert_file" .) }} - {{- $_ := set $cm.identity "private_key_file" (include "kiali-server.identity.private_key_file" .) }} - {{- $_ := set $cm.login_token "signing_key" (include "kiali-server.login_token.signing_key" .) }} - {{- $_ := set $cm.server "web_root" (include "kiali-server.server.web_root" .) }} - {{- toYaml $cm | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/envoy.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/envoy.yaml deleted file mode 100644 index 85b402017..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/envoy.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: envoy - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Envoy Metrics - discoverOn: "envoy_server_uptime" - items: - - chart: - name: "Pods uptime" - spans: 4 - metricName: "envoy_server_uptime" - dataType: "raw" - - chart: - name: "Allocated memory" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_allocated" - dataType: "raw" - min: 0 - - chart: - name: "Heap size" - unit: "bytes" - spans: 4 - metricName: "envoy_server_memory_heap_size" - dataType: "raw" - min: 0 - - chart: - name: "Upstream active connections" - spans: 6 - metricName: "envoy_cluster_upstream_cx_active" - dataType: "raw" - - chart: - name: "Upstream total requests" - spans: 6 - metricName: "envoy_cluster_upstream_rq_total" - unit: "rps" - dataType: "rate" - - chart: - name: "Downstream active connections" - spans: 6 - metricName: "envoy_listener_downstream_cx_active" - dataType: "raw" - - chart: - name: "Downstream HTTP requests" - spans: 6 - metricName: "envoy_listener_http_downstream_rq" - unit: "rps" - dataType: "rate" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/go.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/go.yaml deleted file mode 100644 index 2d2f42a93..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/go.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: go - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Go Metrics - runtime: Go - discoverOn: "go_info" - items: - - chart: - name: "CPU ratio" - spans: 6 - metricName: "process_cpu_seconds_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "RSS Memory" - unit: "bytes" - spans: 6 - metricName: "process_resident_memory_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Goroutines" - spans: 6 - metricName: "go_goroutines" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Heap allocation rate" - unit: "bytes/s" - spans: 6 - metricName: "go_memstats_alloc_bytes_total" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "GC rate" - spans: 6 - metricName: "go_gc_duration_seconds_count" - dataType: "rate" - aggregations: - - label: "pod_name" - displayName: "Pod" - - chart: - name: "Next GC" - unit: "bytes" - spans: 6 - metricName: "go_memstats_next_gc_bytes" - dataType: "raw" - aggregations: - - label: "pod_name" - displayName: "Pod" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/kiali.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/kiali.yaml deleted file mode 100644 index b1f011b4f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/kiali.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: kiali - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Kiali Internal Metrics - items: - - chart: - name: "API processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_api_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "route" - displayName: "Route" - - chart: - name: "Functions processing duration" - unit: "seconds" - spans: 6 - metricName: "kiali_go_function_processing_duration_seconds" - dataType: "histogram" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" - - chart: - name: "Failures" - spans: 12 - metricName: "kiali_go_function_failures_total" - dataType: "raw" - aggregations: - - label: "function" - displayName: "Function" - - label: "package" - displayName: "Package" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml deleted file mode 100644 index 2e1ed5cff..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm-pool.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Pool Metrics - discoverOn: "jvm_buffer_total_capacity_bytes" - items: - - chart: - name: "Pool buffer memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer capacity" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_total_capacity_bytes" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" - - chart: - name: "Pool buffer count" - unit: "bytes" - spans: 4 - metricName: "jvm_buffer_count" - dataType: "raw" - aggregations: - - label: "id" - displayName: "Pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm.yaml deleted file mode 100644 index d64596882..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.0.6-jvm.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.0.6-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live" - items: - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon" - dataType: "raw" - - chart: - name: "Loaded classes" - spans: 4 - metricName: "jvm_classes_loaded" - dataType: "raw" - - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.1-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.1-jvm.yaml deleted file mode 100644 index 76e8d0a4a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/micrometer-1.1-jvm.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: micrometer-1.1-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: JVM - title: JVM Metrics - discoverOn: "jvm_threads_live_threads" - items: - - chart: - name: "Memory used" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_used_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory commited" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_committed_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - chart: - name: "Memory max" - unit: "bytes" - spans: 4 - metricName: "jvm_memory_max_bytes" - dataType: "raw" - aggregations: - - label: "area" - displayName: "Area" - - label: "id" - displayName: "Space" - - - chart: - name: "Total live threads" - spans: 4 - metricName: "jvm_threads_live_threads" - dataType: "raw" - - chart: - name: "Daemon threads" - spans: 4 - metricName: "jvm_threads_daemon_threads" - dataType: "raw" - - chart: - name: "Threads states" - spans: 4 - metricName: "jvm_threads_states_threads" - dataType: "raw" - aggregations: - - label: "state" - displayName: "State" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-1.1.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-1.1.yaml deleted file mode 100644 index 1d4951196..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-1.1.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-1.1 - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:thread_count" - items: - - chart: - name: "Current loaded classes" - spans: 6 - metricName: "base:classloader_current_loaded_class_count" - dataType: "raw" - - chart: - name: "Unloaded classes" - spans: 6 - metricName: "base:classloader_total_unloaded_class_count" - dataType: "raw" - - chart: - name: "Thread count" - spans: 4 - metricName: "base:thread_count" - dataType: "raw" - - chart: - name: "Thread max count" - spans: 4 - metricName: "base:thread_max_count" - dataType: "raw" - - chart: - name: "Thread daemon count" - spans: 4 - metricName: "base:thread_daemon_count" - dataType: "raw" - - chart: - name: "Committed heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_committed_heap_bytes" - dataType: "raw" - - chart: - name: "Max heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_max_heap_bytes" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "base:memory_used_heap_bytes" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-x.y.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-x.y.yaml deleted file mode 100644 index 57ddc60ef..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/microprofile-x.y.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: microprofile-x.y - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: MicroProfile Metrics - runtime: MicroProfile - discoverOn: "base:gc_complete_scavenger_count" - items: - - chart: - name: "Young GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_young_generation_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Young GC count" - spans: 3 - metricName: "base:gc_young_generation_scavenger_count" - dataType: "raw" - - chart: - name: "Total GC time" - unit: "seconds" - spans: 3 - metricName: "base:gc_complete_scavenger_time_seconds" - dataType: "raw" - - chart: - name: "Total GC count" - spans: 3 - metricName: "base:gc_complete_scavenger_count" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/nodejs.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/nodejs.yaml deleted file mode 100644 index 1ffe0aa10..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/nodejs.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: nodejs - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Node.js - title: Node.js Metrics - discoverOn: "nodejs_active_handles_total" - items: - - chart: - name: "Active handles" - spans: 4 - metricName: "nodejs_active_handles_total" - dataType: "raw" - - chart: - name: "Active requests" - spans: 4 - metricName: "nodejs_active_requests_total" - dataType: "raw" - - chart: - name: "Event loop lag" - unit: "seconds" - spans: 4 - metricName: "nodejs_eventloop_lag_seconds" - dataType: "raw" - - chart: - name: "Total heap size" - unit: "bytes" - spans: 12 - metricName: "nodejs_heap_space_size_total_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Used heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_used_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" - - chart: - name: "Available heap size" - unit: "bytes" - spans: 6 - metricName: "nodejs_heap_space_size_available_bytes" - dataType: "raw" - aggregations: - - label: "space" - displayName: "Space" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/quarkus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/quarkus.yaml deleted file mode 100644 index cef5f3dce..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/quarkus.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: quarkus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - title: Quarkus Metrics - runtime: Quarkus - items: - - chart: - name: "Thread count" - spans: 4 - metricName: "vendor:thread_count" - dataType: "raw" - - chart: - name: "Used heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_heap_usage_bytes" - dataType: "raw" - - chart: - name: "Used non-heap" - unit: "bytes" - spans: 4 - metricName: "vendor:memory_non_heap_usage_bytes" - dataType: "raw" - - include: "microprofile-x.y" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm-pool.yaml deleted file mode 100644 index 42d87d890..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm-pool.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Pool Metrics - items: - - include: "micrometer-1.0.6-jvm-pool" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm.yaml deleted file mode 100644 index ced3acdd9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: JVM Metrics - items: - - include: "micrometer-1.0.6-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-tomcat.yaml deleted file mode 100644 index c07016aa2..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/springboot-tomcat.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: springboot-tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Spring Boot - title: Tomcat Metrics - items: - - include: "tomcat" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/thorntail.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/thorntail.yaml deleted file mode 100644 index 6bd85e6f5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/thorntail.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: thorntail - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Thorntail - title: Thorntail Metrics - discoverOn: "vendor:loaded_modules" - items: - - include: "microprofile-1.1" - - chart: - name: "Loaded modules" - spans: 6 - metricName: "vendor:loaded_modules" - dataType: "raw" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/tomcat.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/tomcat.yaml deleted file mode 100644 index 9a803342f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/tomcat.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: tomcat - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Tomcat - title: Tomcat Metrics - discoverOn: "tomcat_sessions_created_total" - items: - - chart: - name: "Sessions created" - spans: 4 - metricName: "tomcat_sessions_created_total" - dataType: "raw" - - chart: - name: "Active sessions" - spans: 4 - metricName: "tomcat_sessions_active_current" - dataType: "raw" - - chart: - name: "Sessions rejected" - spans: 4 - metricName: "tomcat_sessions_rejected_total" - dataType: "raw" - - - chart: - name: "Bytes sent" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_sent_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Bytes received" - unit: "bitrate" - spans: 6 - metricName: "tomcat_global_received_bytes_total" - dataType: "rate" - aggregations: - - label: "name" - displayName: "Name" - - - chart: - name: "Global errors" - spans: 6 - metricName: "tomcat_global_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" - - chart: - name: "Servlet errors" - spans: 6 - metricName: "tomcat_servlet_error_total" - dataType: "raw" - aggregations: - - label: "name" - displayName: "Name" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-client.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-client.yaml deleted file mode 100644 index 2d591d6b0..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-client.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-client - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Client Metrics - discoverOn: "vertx_http_client_connections" - items: - - chart: - name: "Client response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_client_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_client_requestCount_total" - dataType: "rate" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Client active connections" - spans: 6 - metricName: "vertx_http_client_connections" - dataType: "raw" - - chart: - name: "Client active websockets" - spans: 6 - metricName: "vertx_http_client_wsConnections" - dataType: "raw" - - chart: - name: "Client bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesSent" - dataType: "histogram" - - chart: - name: "Client bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_client_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-eventbus.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-eventbus.yaml deleted file mode 100644 index 65f9ee2ec..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-eventbus.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-eventbus - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Eventbus Metrics - discoverOn: "vertx_eventbus_handlers" - items: - - chart: - name: "Event bus handlers" - spans: 6 - metricName: "vertx_eventbus_handlers" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus pending messages" - spans: 6 - metricName: "vertx_eventbus_pending" - dataType: "raw" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus processing time" - unit: "seconds" - spans: 6 - metricName: "vertx_eventbus_processingTime_seconds" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes read" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesRead" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" - - chart: - name: "Event bus bytes written" - unit: "bytes" - spans: 6 - metricName: "vertx_eventbus_bytesWritten" - dataType: "histogram" - aggregations: - - label: "address" - displayName: "Eventbus address" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-jvm.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-jvm.yaml deleted file mode 100644 index 2663186f3..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-jvm.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-jvm - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: JVM Metrics - items: - - include: "micrometer-1.1-jvm" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-pool.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-pool.yaml deleted file mode 100644 index f6af921b3..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-pool.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-pool - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Pools Metrics - discoverOn: "vertx_pool_ratio" - items: - - chart: - name: "Usage duration" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_usage_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Usage ratio" - spans: 6 - metricName: "vertx_pool_ratio" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Queue size" - spans: 6 - metricName: "vertx_pool_queue_size" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Time in queue" - unit: "seconds" - spans: 6 - metricName: "vertx_pool_queue_delay_seconds" - dataType: "histogram" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" - - chart: - name: "Resources used" - spans: 6 - metricName: "vertx_pool_inUse" - dataType: "raw" - aggregations: - - label: "pool_name" - displayName: "Name" - - label: "pool_type" - displayName: "Type" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-server.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-server.yaml deleted file mode 100644 index de6b89df9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/dashboards/vertx-server.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if (include "kiali-server.isDashboardEnabled" .) }} ---- -apiVersion: "monitoring.kiali.io/v1alpha1" -kind: MonitoringDashboard -metadata: - name: vertx-server - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - runtime: Vert.x - title: Vert.x Server Metrics - discoverOn: "vertx_http_server_connections" - items: - - chart: - name: "Server response time" - unit: "seconds" - spans: 6 - metricName: "vertx_http_server_responseTime_seconds" - dataType: "histogram" - aggregations: - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server request count rate" - unit: "ops" - spans: 6 - metricName: "vertx_http_server_requestCount_total" - dataType: "rate" - aggregations: - - label: "code" - displayName: "Error code" - - label: "path" - displayName: "Path" - - label: "method" - displayName: "Method" - - chart: - name: "Server active connections" - spans: 6 - metricName: "vertx_http_server_connections" - dataType: "raw" - - chart: - name: "Server active websockets" - spans: 6 - metricName: "vertx_http_server_wsConnections" - dataType: "raw" - - chart: - name: "Server bytes sent" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesSent" - dataType: "histogram" - - chart: - name: "Server bytes received" - unit: "bytes" - spans: 6 - metricName: "vertx_http_server_bytesReceived" - dataType: "histogram" -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/deployment.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/deployment.yaml deleted file mode 100644 index 100c57922..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/deployment.yaml +++ /dev/null @@ -1,174 +0,0 @@ ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - replicas: {{ .Values.deployment.replicas }} - selector: - matchLabels: - {{- include "kiali-server.selectorLabels" . | nindent 6 }} - strategy: - rollingUpdate: - maxSurge: 1 - maxUnavailable: 1 - type: RollingUpdate - template: - metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 8 }} - {{- if .Values.deployment.pod_labels }} - {{- toYaml .Values.deployment.pod_labels | nindent 8 }} - {{- end }} - annotations: - {{- if .Values.server.metrics_enabled }} - prometheus.io/scrape: "true" - prometheus.io/port: {{ .Values.server.metrics_port | quote }} - {{- else }} - prometheus.io/scrape: "false" - prometheus.io/port: "" - {{- end }} - kiali.io/runtimes: go,kiali - {{- if .Values.deployment.pod_annotations }} - {{- toYaml .Values.deployment.pod_annotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "kiali-server.fullname" . }} - {{- if .Values.deployment.priority_class_name }} - priorityClassName: {{ .Values.deployment.priority_class_name | quote }} - {{- end }} - {{- if .Values.deployment.image_pull_secrets }} - imagePullSecrets: - {{- range .Values.deployment.image_pull_secrets }} - - name: {{ . }} - {{- end }} - {{- end }} - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.deployment.repository }}:{{ .Values.deployment.tag }}" - imagePullPolicy: {{ .Values.deployment.image_pull_policy | default "Always" }} - name: {{ include "kiali-server.fullname" . }} - command: - - "/opt/kiali/kiali" - - "-config" - - "/kiali-configuration/config.yaml" - ports: - - name: api-port - containerPort: {{ .Values.server.port | default 20001 }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - containerPort: {{ .Values.server.metrics_port | default 9090 }} - {{- end }} - readinessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - livenessProbe: - httpGet: - path: {{ include "kiali-server.server.web_root" . | trimSuffix "/" }}/healthz - port: api-port - {{- if (include "kiali-server.identity.cert_file" .) }} - scheme: HTTPS - {{- else }} - scheme: HTTP - {{- end }} - initialDelaySeconds: 5 - periodSeconds: 30 - env: - - name: ACTIVE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: LOG_LEVEL - value: "{{ include "kiali-server.logLevel" . }}" - - name: LOG_FORMAT - value: "{{ .Values.deployment.logger.log_format }}" - - name: LOG_TIME_FIELD_FORMAT - value: "{{ .Values.deployment.logger.time_field_format }}" - - name: LOG_SAMPLER_RATE - value: "{{ .Values.deployment.logger.sampler_rate }}" - volumeMounts: - {{- if .Values.web_root_override }} - - name: kiali-console - subPath: env.js - mountPath: /opt/kiali/console/env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - mountPath: "/kiali-configuration" - - name: {{ include "kiali-server.fullname" . }}-cert - mountPath: "/kiali-cert" - - name: {{ include "kiali-server.fullname" . }}-secret - mountPath: "/kiali-secret" - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - mountPath: "/kiali-cabundle" - {{- end }} - {{- if .Values.deployment.resources }} - resources: - {{- toYaml .Values.deployment.resources | nindent 10 }} - {{- end }} - volumes: - {{- if .Values.web_root_override }} - - name: kiali-console - configMap: - name: kiali-console - items: - - key: env.js - path: env.js - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-configuration - configMap: - name: {{ include "kiali-server.fullname" . }} - - name: {{ include "kiali-server.fullname" . }}-cert - secret: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - secretName: {{ include "kiali-server.fullname" . }}-cert-secret - {{- else }} - secretName: istio.{{ include "kiali-server.fullname" . }}-service-account - {{- end }} - {{- if not (include "kiali-server.identity.cert_file" .) }} - optional: true - {{- end }} - - name: {{ include "kiali-server.fullname" . }}-secret - secret: - secretName: {{ .Values.deployment.secret_name }} - optional: true - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - - name: {{ include "kiali-server.fullname" . }}-cabundle - configMap: - name: {{ include "kiali-server.fullname" . }}-cabundle - {{- end }} - {{- if or (.Values.deployment.affinity.node) (or (.Values.deployment.pod) (.Values.deployment.pod_anti)) }} - affinity: - {{- if .Values.deployment.affinity.node }} - nodeAffinity: - {{- toYaml .Values.deployment.affinity.node | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod }} - podAffinity: - {{- toYaml .Values.deployment.affinity.pod | nindent 10 }} - {{- end }} - {{- if .Values.deployment.affinity.pod_anti }} - podAntiAffinity: - {{- toYaml .Values.deployment.affinity.pod_anti | nindent 10 }} - {{- end }} - {{- end }} - {{- if .Values.deployment.tolerations }} - tolerations: - {{- toYaml .Values.deployment.tolerations | nindent 8 }} - {{- end }} - {{- if .Values.deployment.node_selector }} - nodeSelector: - {{- toYaml .Values.deployment.node_selector | nindent 8 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/hpa.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/hpa.yaml deleted file mode 100644 index 934c4c1e9..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/hpa.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.deployment.hpa.spec }} ---- -apiVersion: {{ .Values.deployment.hpa.api_version }} -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "kiali-server.fullname" . }} - {{- toYaml .Values.deployment.hpa.spec | nindent 2 }} -... -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/ingress.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/ingress.yaml deleted file mode 100644 index e4c98db1b..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/ingress.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if not (.Capabilities.APIVersions.Has "route.openshift.io/v1") }} -{{- if .Values.deployment.ingress_enabled }} ---- -apiVersion: networking.k8s.io/v1beta1 -kind: Ingress -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }} - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- else }} - # For ingress-nginx versions older than 0.20.0 use secure-backends. - # (see: https://github.com/kubernetes/ingress-nginx/issues/3416#issuecomment-438247948) - # For ingress-nginx versions 0.20.0 and later use backend-protocol. - {{- if (include "kiali-server.identity.cert_file" .) }} - nginx.ingress.kubernetes.io/secure-backends: "true" - nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - {{- else }} - nginx.ingress.kubernetes.io/secure-backends: "false" - nginx.ingress.kubernetes.io/backend-protocol: "HTTP" - {{- end }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - rules: - - http: - paths: - - path: {{ include "kiali-server.server.web_root" . }} - backend: - serviceName: {{ include "kiali-server.fullname" . }} - servicePort: {{ .Values.server.port }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/oauth.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/oauth.yaml deleted file mode 100644 index a178bb85e..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/oauth.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.kiali_route_url }} ---- -apiVersion: oauth.openshift.io/v1 -kind: OAuthClient -metadata: - name: {{ include "kiali-server.fullname" . }}-{{ .Release.Namespace }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -redirectURIs: -- {{ .Values.kiali_route_url }} -grantMethod: auto -allowAnyScope: true -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/psp.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/psp.yaml deleted file mode 100644 index f891892cc..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/psp.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{- if .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-psp -subjects: - - kind: ServiceAccount - name: kiali ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -rules: -- apiGroups: - - policy - resourceNames: - - {{ include "kiali-server.fullname" . }}-psp - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ include "kiali-server.fullname" . }}-psp - namespace: {{ .Release.Namespace }} -spec: - allowPrivilegeEscalation: false - forbiddenSysctls: - - '*' - fsGroup: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - requiredDropCapabilities: - - ALL - runAsUser: - rule: MustRunAsNonRoot - runAsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - ranges: - - max: 65535 - min: 1 - rule: MustRunAs - volumes: - - configMap - - emptyDir - - projected - - secret - - downwardAPI - - persistentVolumeClaim -{{- end }} \ No newline at end of file diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-controlplane.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-controlplane.yaml deleted file mode 100644 index a22c76756..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-controlplane.yaml +++ /dev/null @@ -1,15 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - secrets - verbs: - - list -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-viewer.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-viewer.yaml deleted file mode 100644 index 9fdd9fd1d..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role-viewer.yaml +++ /dev/null @@ -1,97 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }}-viewer - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - get - - list - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - get - - list -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role.yaml deleted file mode 100644 index 8444bc753..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/role.yaml +++ /dev/null @@ -1,108 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -rules: -- apiGroups: [""] - resources: - - configmaps - - endpoints - - namespaces - - nodes - - pods - - pods/log - - pods/proxy - - replicationcontrollers - - services - verbs: - - get - - list - - patch - - watch -- apiGroups: [""] - resources: - - pods/portforward - verbs: - - create - - post -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - list - - patch - - watch -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: - - get - - list - - watch -- apiGroups: ["batch"] - resources: - - cronjobs - - jobs - verbs: - - get - - list - - patch - - watch -- apiGroups: - - networking.istio.io - - security.istio.io - resources: ["*"] - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["apps.openshift.io"] - resources: - - deploymentconfigs - verbs: - - get - - list - - patch - - watch -- apiGroups: ["project.openshift.io"] - resources: - - projects - verbs: - - get -- apiGroups: ["route.openshift.io"] - resources: - - routes - verbs: - - get -- apiGroups: ["monitoring.kiali.io"] - resources: - - monitoringdashboards - verbs: - - get - - list -- apiGroups: ["iter8.tools"] - resources: - - experiments - verbs: - - create - - delete - - get - - list - - patch - - watch -- apiGroups: ["authentication.k8s.io"] - resources: - - tokenreviews - verbs: - - create -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding-controlplane.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding-controlplane.yaml deleted file mode 100644 index 5a0015836..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding-controlplane.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }}-controlplane - namespace: {{ include "kiali-server.istio_namespace" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "kiali-server.fullname" . }}-controlplane -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding.yaml deleted file mode 100644 index 1eaabd65f..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ include "kiali-server.fullname" . }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - {{- if .Values.deployment.view_only_mode }} - name: {{ include "kiali-server.fullname" . }}-viewer - {{- else }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -subjects: -- kind: ServiceAccount - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/route.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/route.yaml deleted file mode 100644 index 27940dc96..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/route.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} -{{- if .Values.deployment.ingress_enabled }} -# As of OpenShift 4.5, need to use --disable-openapi-validation when installing via Helm ---- -apiVersion: route.openshift.io/v1 -kind: Route -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - {{- if hasKey .Values.deployment.override_ingress_yaml.metadata "annotations" }}} - annotations: - {{- toYaml .Values.deployment.override_ingress_yaml.metadata.annotations | nindent 4 }} - {{- end }} -spec: - {{- if hasKey .Values.deployment.override_ingress_yaml "spec" }} - {{- toYaml .Values.deployment.override_ingress_yaml.spec | nindent 2 }} - {{- else }} - tls: - termination: reencrypt - insecureEdgeTerminationPolicy: Redirect - to: - kind: Service - targetPort: {{ .Values.server.port }} - name: {{ include "kiali-server.fullname" . }} - {{- end }} -... -{{- end }} -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/service.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/service.yaml deleted file mode 100644 index 9ccf4f388..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/service.yaml +++ /dev/null @@ -1,47 +0,0 @@ ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} - annotations: - {{- if .Capabilities.APIVersions.Has "route.openshift.io/v1" }} - service.beta.openshift.io/serving-cert-secret-name: {{ include "kiali-server.fullname" . }}-cert-secret - {{- end }} - kiali.io/api-spec: https://kiali.io/api - kiali.io/api-type: rest - {{- if and (not (empty .Values.server.web_fqdn)) (not (empty .Values.server.web_schema)) }} - {{- if empty .Values.server.web_port }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}{{ default "" .Values.server.web_root }} - {{- else }} - kiali.io/external-url: {{ .Values.server.web_schema }}://{{ .Values.server.web_fqdn }}:{{ .Values.server.web_port }}{{(default "" .Values.server.web_root) }} - {{- end }} - {{- end }} - {{- if .Values.deployment.service_annotations }} - {{- toYaml .Values.deployment.service_annotations | nindent 4 }} - {{- end }} -spec: - {{- if .Values.deployment.service_type }} - type: {{ .Values.deployment.service_type }} - {{- end }} - ports: - {{- if (include "kiali-server.identity.cert_file" .) }} - - name: tcp - {{- else }} - - name: http - {{- end }} - protocol: TCP - port: {{ .Values.server.port }} - {{- if .Values.server.metrics_enabled }} - - name: http-metrics - protocol: TCP - port: {{ .Values.server.metrics_port }} - {{- end }} - selector: - {{- include "kiali-server.selectorLabels" . | nindent 4 }} - {{- if .Values.deployment.additional_service_yaml }} - {{- toYaml .Values.deployment.additional_service_yaml | nindent 2 }} - {{- end }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/serviceaccount.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/serviceaccount.yaml deleted file mode 100644 index 9151b6f6a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "kiali-server.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -... diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/validate-install-crd.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/validate-install-crd.yaml deleted file mode 100644 index b42eeb266..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/validate-install-crd.yaml +++ /dev/null @@ -1,14 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.kiali.io/v1alpha1/MonitoringDashboard" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/web-root-configmap.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/web-root-configmap.yaml deleted file mode 100644 index 970d4e4f5..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/templates/web-root-configmap.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.web_root_override }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: kiali-console - namespace: {{ .Release.Namespace }} - labels: - {{- include "kiali-server.labels" . | nindent 4 }} -data: - env.js: | - window.WEB_ROOT='/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Release.Namespace }}/services/http:kiali:20001/proxy/kiali'; -{{- end }} diff --git a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/values.yaml b/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/values.yaml deleted file mode 100644 index aada4e09a..000000000 --- a/charts/rancher-kiali-server/rancher-kiali-server/1.32.100+up1.32.0/values.yaml +++ /dev/null @@ -1,93 +0,0 @@ -nameOverride: "kiali" -fullnameOverride: "kiali" - -# This is required for "openshift" auth strategy. -# You have to know ahead of time what your Route URL will be because -# right now the helm chart can't figure this out at runtime (it would -# need to wait for the Kiali Route to be deployed and for OpenShift -# to start it up). If someone knows how to update this helm chart to -# do this, a PR would be welcome. -kiali_route_url: "" - -# rancher specific override that allows proxy access to kiali url -web_root_override: true - -# -# Settings that mimic the Kiali CR which are placed in the ConfigMap. -# Note that only those values used by the Helm Chart will be here. -# - -istio_namespace: "" # default is where Kiali is installed - -auth: - openid: {} - openshift: {} - strategy: "" - -deployment: - # This only limits what Kiali will attempt to see, but Kiali Service Account has permissions to see everything. - # For more control over what the Kial Service Account can see, use the Kiali Operator - accessible_namespaces: - - "**" - additional_service_yaml: {} - affinity: - node: {} - pod: {} - pod_anti: {} - custom_dashboards: - excludes: [''] - includes: ['*'] - hpa: - api_version: "autoscaling/v2beta2" - spec: {} - repository: rancher/mirrored-kiali-kiali - image_pull_policy: "Always" - image_pull_secrets: [] - tag: v1.32.0 - ingress_enabled: true - logger: - log_format: "text" - log_level: "info" - time_field_format: "2006-01-02T15:04:05Z07:00" - sampler_rate: "1" - node_selector: {} - override_ingress_yaml: - metadata: {} - pod_annotations: {} - pod_labels: {} - priority_class_name: "" - replicas: 1 - resources: {} - secret_name: "kiali" - service_annotations: {} - service_type: "" - tolerations: [] - version_label: v1.32.0 - view_only_mode: false - -external_services: - custom_dashboards: - enabled: true - -identity: {} - #cert_file: - #private_key_file: - -login_token: - signing_key: "" - -server: - port: 20001 - metrics_enabled: true - metrics_port: 9090 - web_root: "" - -# Common settings used among istio subcharts. -global: - # Specify rancher clusterId of external tracing config - # https://github.com/istio/istio.io/issues/4146#issuecomment-493543032 - cattle: - systemDefaultRegistry: "" - clusterId: - rbac: - pspEnabled: false diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/.helmignore b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/Chart.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/Chart.yaml deleted file mode 100644 index 524918a9d..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-kube-state-metrics -apiVersion: v1 -appVersion: 1.9.8 -description: Install kube-state-metrics to generate and expose cluster-level metrics -home: https://github.com/kubernetes/kube-state-metrics/ -keywords: -- metric -- monitoring -- prometheus -- kubernetes -maintainers: -- email: tariq.ibrahim@mulesoft.com - name: tariq1890 -- email: manuel@rueg.eu - name: mrueg -name: rancher-kube-state-metrics -sources: -- https://github.com/kubernetes/kube-state-metrics/ -version: 2.13.101+up2.13.1 diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/LICENSE b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/LICENSE deleted file mode 100644 index 393b7a33b..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright The Helm Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/OWNERS b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/OWNERS deleted file mode 100644 index 206b4fee7..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/OWNERS +++ /dev/null @@ -1,6 +0,0 @@ -approvers: -- tariq1890 -- mrueg -reviewers: -- tariq1890 -- mrueg diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/README.md b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/README.md deleted file mode 100644 index e93a3d252..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# kube-state-metrics Helm Chart - -Installs the [kube-state-metrics agent](https://github.com/kubernetes/kube-state-metrics). - -## Get Repo Info - -```console -helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Install Chart - -```console -# Helm 3 -$ helm install [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] - -# Helm 2 -$ helm install --name [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -# Helm 3 -$ helm uninstall [RELEASE_NAME] - -# Helm 2 -# helm delete --purge [RELEASE_NAME] -``` - -This removes all the Kubernetes components associated with the chart and deletes the release. - -_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ - -## Upgrading Chart - -```console -# Helm 3 or 2 -$ helm upgrade [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### From stable/kube-state-metrics - -You can upgrade in-place: - -1. [get repo info](#get-repo-info) -1. [upgrade](#upgrading-chart) your existing release name using the new chart repo - -## Configuration - -See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: - -```console -helm show values kube-state-metrics/kube-state-metrics -``` - -You may also `helm show values` on this chart's [dependencies](#dependencies) for additional options. diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/NOTES.txt b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/NOTES.txt deleted file mode 100644 index 5a646e0cc..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/NOTES.txt +++ /dev/null @@ -1,10 +0,0 @@ -kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. -The exposed metrics can be found here: -https://github.com/kubernetes/kube-state-metrics/blob/master/docs/README.md#exposed-metrics - -The metrics are exported on the HTTP endpoint /metrics on the listening port. -In your case, {{ template "kube-state-metrics.fullname" . }}.{{ template "kube-state-metrics.namespace" . }}.svc.cluster.local:{{ .Values.service.port }}/metrics - -They are served either as plaintext or protobuf depending on the Accept header. -They are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint. - diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/_helpers.tpl b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/_helpers.tpl deleted file mode 100644 index 4f76b188b..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "kube-state-metrics.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kube-state-metrics.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "kube-state-metrics.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "kube-state-metrics.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "kube-state-metrics.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/clusterrolebinding.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/clusterrolebinding.yaml deleted file mode 100644 index af158c512..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if and .Values.rbac.create .Values.rbac.useClusterRole -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: {{ template "kube-state-metrics.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole -{{- if .Values.rbac.useExistingRole }} - name: {{ .Values.rbac.useExistingRole }} -{{- else }} - name: {{ template "kube-state-metrics.fullname" . }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/deployment.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/deployment.yaml deleted file mode 100644 index 4ab55291b..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/deployment.yaml +++ /dev/null @@ -1,217 +0,0 @@ -apiVersion: apps/v1 -{{- if .Values.autosharding.enabled }} -kind: StatefulSet -{{- else }} -kind: Deployment -{{- end }} -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" - app.kubernetes.io/version: "{{ .Chart.AppVersion }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - replicas: {{ .Values.replicas }} -{{- if .Values.autosharding.enabled }} - serviceName: {{ template "kube-state-metrics.fullname" . }} - volumeClaimTemplates: [] -{{- end }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: "{{ .Release.Name }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 8 }} -{{- end }} -{{- if .Values.podAnnotations }} - annotations: -{{ toYaml .Values.podAnnotations | indent 8 }} -{{- end }} - spec: - hostNetwork: {{ .Values.hostNetwork }} - serviceAccountName: {{ template "kube-state-metrics.serviceAccountName" . }} - {{- if .Values.securityContext.enabled }} - securityContext: - fsGroup: {{ .Values.securityContext.fsGroup }} - runAsGroup: {{ .Values.securityContext.runAsGroup }} - runAsUser: {{ .Values.securityContext.runAsUser }} - runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - containers: - - name: {{ .Chart.Name }} -{{- if .Values.autosharding.enabled }} - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace -{{- end }} - args: -{{ if .Values.extraArgs }} - {{- range .Values.extraArgs }} - - {{ . }} - {{- end }} -{{ end }} -{{ if .Values.collectors.certificatesigningrequests }} - - --collectors=certificatesigningrequests -{{ end }} -{{ if .Values.collectors.configmaps }} - - --collectors=configmaps -{{ end }} -{{ if .Values.collectors.cronjobs }} - - --collectors=cronjobs -{{ end }} -{{ if .Values.collectors.daemonsets }} - - --collectors=daemonsets -{{ end }} -{{ if .Values.collectors.deployments }} - - --collectors=deployments -{{ end }} -{{ if .Values.collectors.endpoints }} - - --collectors=endpoints -{{ end }} -{{ if .Values.collectors.horizontalpodautoscalers }} - - --collectors=horizontalpodautoscalers -{{ end }} -{{ if .Values.collectors.ingresses }} - - --collectors=ingresses -{{ end }} -{{ if .Values.collectors.jobs }} - - --collectors=jobs -{{ end }} -{{ if .Values.collectors.limitranges }} - - --collectors=limitranges -{{ end }} -{{ if .Values.collectors.mutatingwebhookconfigurations }} - - --collectors=mutatingwebhookconfigurations -{{ end }} -{{ if .Values.collectors.namespaces }} - - --collectors=namespaces -{{ end }} -{{ if .Values.collectors.networkpolicies }} - - --collectors=networkpolicies -{{ end }} -{{ if .Values.collectors.nodes }} - - --collectors=nodes -{{ end }} -{{ if .Values.collectors.persistentvolumeclaims }} - - --collectors=persistentvolumeclaims -{{ end }} -{{ if .Values.collectors.persistentvolumes }} - - --collectors=persistentvolumes -{{ end }} -{{ if .Values.collectors.poddisruptionbudgets }} - - --collectors=poddisruptionbudgets -{{ end }} -{{ if .Values.collectors.pods }} - - --collectors=pods -{{ end }} -{{ if .Values.collectors.replicasets }} - - --collectors=replicasets -{{ end }} -{{ if .Values.collectors.replicationcontrollers }} - - --collectors=replicationcontrollers -{{ end }} -{{ if .Values.collectors.resourcequotas }} - - --collectors=resourcequotas -{{ end }} -{{ if .Values.collectors.secrets }} - - --collectors=secrets -{{ end }} -{{ if .Values.collectors.services }} - - --collectors=services -{{ end }} -{{ if .Values.collectors.statefulsets }} - - --collectors=statefulsets -{{ end }} -{{ if .Values.collectors.storageclasses }} - - --collectors=storageclasses -{{ end }} -{{ if .Values.collectors.validatingwebhookconfigurations }} - - --collectors=validatingwebhookconfigurations -{{ end }} -{{ if .Values.collectors.verticalpodautoscalers }} - - --collectors=verticalpodautoscalers -{{ end }} -{{ if .Values.collectors.volumeattachments }} - - --collectors=volumeattachments -{{ end }} -{{ if .Values.namespace }} - - --namespace={{ .Values.namespace | join "," }} -{{ end }} -{{ if .Values.autosharding.enabled }} - - --pod=$(POD_NAME) - - --pod-namespace=$(POD_NAMESPACE) -{{ end }} -{{ if .Values.kubeconfig.enabled }} - - --kubeconfig=/opt/k8s/.kube/config -{{ end }} -{{ if .Values.selfMonitor.telemetryHost }} - - --telemetry-host={{ .Values.selfMonitor.telemetryHost }} -{{ end }} - - --telemetry-port=8081 -{{- if .Values.kubeconfig.enabled }} - volumeMounts: - - name: kubeconfig - mountPath: /opt/k8s/.kube/ - readOnly: true -{{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - ports: - - containerPort: 8080 - livenessProbe: - httpGet: - path: /healthz - port: 8080 - initialDelaySeconds: 5 - timeoutSeconds: 5 - readinessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 5 - timeoutSeconds: 5 -{{- if .Values.resources }} - resources: -{{ toYaml .Values.resources | indent 10 }} -{{- end }} -{{- if .Values.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | indent 8 }} -{{- end }} -{{- if .Values.affinity }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 8 }} -{{- end }} -{{- if .Values.kubeconfig.enabled}} - volumes: - - name: kubeconfig - secret: - secretName: {{ template "kube-state-metrics.fullname" . }}-kubeconfig -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/kubeconfig-secret.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/kubeconfig-secret.yaml deleted file mode 100644 index a7800d7ad..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/kubeconfig-secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.kubeconfig.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-state-metrics.fullname" . }}-kubeconfig - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -type: Opaque -data: - config: '{{ .Values.kubeconfig.secret }}' -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/pdb.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/pdb.yaml deleted file mode 100644 index d3ef8104e..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/pdb.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.podDisruptionBudget -}} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} -{{ toYaml .Values.podDisruptionBudget | indent 2 }} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/podsecuritypolicy.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/podsecuritypolicy.yaml deleted file mode 100644 index e822ba0e7..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if .Values.podSecurityPolicy.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Values.podSecurityPolicy.annotations }} - annotations: -{{ toYaml .Values.podSecurityPolicy.annotations | indent 4 }} -{{- end }} -spec: - privileged: false - volumes: - - 'secret' -{{- if .Values.podSecurityPolicy.additionalVolumes }} -{{ toYaml .Values.podSecurityPolicy.additionalVolumes | indent 4 }} -{{- end }} - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 1 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrole.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrole.yaml deleted file mode 100644 index 217abc950..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrole.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.podSecurityPolicy.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: psp-{{ template "kube-state-metrics.fullname" . }} -rules: -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} -- apiGroups: ['policy'] -{{- else }} -- apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-state-metrics.fullname" . }} -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrolebinding.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrolebinding.yaml deleted file mode 100644 index feb97f228..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.podSecurityPolicy.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: psp-{{ template "kube-state-metrics.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: psp-{{ template "kube-state-metrics.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/role.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/role.yaml deleted file mode 100644 index 6259d2f61..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/role.yaml +++ /dev/null @@ -1,192 +0,0 @@ -{{- if and (eq $.Values.rbac.create true) (not .Values.rbac.useExistingRole) -}} -{{- if eq .Values.rbac.useClusterRole false }} -{{- range (split "," $.Values.namespace) }} -{{- end }} -{{- end -}} ---- -apiVersion: rbac.authorization.k8s.io/v1 -{{- if eq .Values.rbac.useClusterRole false }} -kind: Role -{{- else }} -kind: ClusterRole -{{- end }} -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" $ }} - helm.sh/chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - app.kubernetes.io/managed-by: {{ $.Release.Service }} - app.kubernetes.io/instance: {{ $.Release.Name }} - name: {{ template "kube-state-metrics.fullname" $ }} -{{- if eq .Values.rbac.useClusterRole false }} - namespace: {{ . }} -{{- end }} -rules: -{{ if $.Values.collectors.certificatesigningrequests }} -- apiGroups: ["certificates.k8s.io"] - resources: - - certificatesigningrequests - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.configmaps }} -- apiGroups: [""] - resources: - - configmaps - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.cronjobs }} -- apiGroups: ["batch"] - resources: - - cronjobs - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.daemonsets }} -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.deployments }} -- apiGroups: ["extensions", "apps"] - resources: - - deployments - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.endpoints }} -- apiGroups: [""] - resources: - - endpoints - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.horizontalpodautoscalers }} -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.ingresses }} -- apiGroups: ["extensions", "networking.k8s.io"] - resources: - - ingresses - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.jobs }} -- apiGroups: ["batch"] - resources: - - jobs - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.limitranges }} -- apiGroups: [""] - resources: - - limitranges - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.mutatingwebhookconfigurations }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - mutatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.namespaces }} -- apiGroups: [""] - resources: - - namespaces - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.networkpolicies }} -- apiGroups: ["networking.k8s.io"] - resources: - - networkpolicies - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.nodes }} -- apiGroups: [""] - resources: - - nodes - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.persistentvolumeclaims }} -- apiGroups: [""] - resources: - - persistentvolumeclaims - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.persistentvolumes }} -- apiGroups: [""] - resources: - - persistentvolumes - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.poddisruptionbudgets }} -- apiGroups: ["policy"] - resources: - - poddisruptionbudgets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.pods }} -- apiGroups: [""] - resources: - - pods - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.replicasets }} -- apiGroups: ["extensions", "apps"] - resources: - - replicasets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.replicationcontrollers }} -- apiGroups: [""] - resources: - - replicationcontrollers - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.resourcequotas }} -- apiGroups: [""] - resources: - - resourcequotas - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.secrets }} -- apiGroups: [""] - resources: - - secrets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.services }} -- apiGroups: [""] - resources: - - services - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.statefulsets }} -- apiGroups: ["apps"] - resources: - - statefulsets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.storageclasses }} -- apiGroups: ["storage.k8s.io"] - resources: - - storageclasses - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.validatingwebhookconfigurations }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - validatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.volumeattachments }} -- apiGroups: ["storage.k8s.io"] - resources: - - volumeattachments - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.verticalpodautoscalers }} -- apiGroups: ["autoscaling.k8s.io"] - resources: - - verticalpodautoscalers - verbs: ["list", "watch"] -{{ end -}} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/rolebinding.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/rolebinding.yaml deleted file mode 100644 index 732174a33..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/rolebinding.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and (eq .Values.rbac.create true) (eq .Values.rbac.useClusterRole false) -}} -{{- range (split "," $.Values.namespace) }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" $ }} - helm.sh/chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - app.kubernetes.io/managed-by: {{ $.Release.Service }} - app.kubernetes.io/instance: {{ $.Release.Name }} - name: {{ template "kube-state-metrics.fullname" $ }} - namespace: {{ . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role -{{- if (not $.Values.rbac.useExistingRole) }} - name: {{ template "kube-state-metrics.fullname" $ }} -{{- else }} - name: {{ $.Values.rbac.useExistingRole }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" $ }} - namespace: {{ template "kube-state-metrics.namespace" $ }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/service.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/service.yaml deleted file mode 100644 index 4f8e4a497..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/service.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} - annotations: - {{- if .Values.prometheusScrape }} - prometheus.io/scrape: '{{ .Values.prometheusScrape }}' - {{- end }} - {{- if .Values.service.annotations }} - {{- toYaml .Values.service.annotations | nindent 4 }} - {{- end }} -spec: - type: "{{ .Values.service.type }}" - ports: - - name: "http" - protocol: TCP - port: {{ .Values.service.port }} - {{- if .Values.service.nodePort }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - targetPort: 8080 - {{ if .Values.selfMonitor.enabled }} - - name: "metrics" - protocol: TCP - port: {{ .Values.selfMonitor.telemetryPort | default 8081 }} - targetPort: 8081 - {{ end }} -{{- if .Values.service.loadBalancerIP }} - loadBalancerIP: "{{ .Values.service.loadBalancerIP }}" -{{- end }} - selector: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/serviceaccount.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/serviceaccount.yaml deleted file mode 100644 index 2e8a1ee38..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/serviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- if .Values.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.serviceAccount.annotations | indent 4 }} -{{- end }} -imagePullSecrets: -{{ toYaml .Values.serviceAccount.imagePullSecrets | indent 2 }} -{{- end -}} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/servicemonitor.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/servicemonitor.yaml deleted file mode 100644 index 7d1cd7aa1..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/servicemonitor.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if .Values.prometheus.monitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" - {{- if .Values.prometheus.monitor.additionalLabels }} -{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }} - {{- end }} -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: http - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - {{ if .Values.selfMonitor.enabled }} - - port: metrics - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - {{ end }} -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-role.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-role.yaml deleted file mode 100644 index 9770b0498..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-role.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.autosharding.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get -- apiGroups: - - apps - resourceNames: - - {{ template "kube-state-metrics.fullname" . }} - resources: - - statefulsets - verbs: - - get - - list - - watch -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-rolebinding.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-rolebinding.yaml deleted file mode 100644 index 6a2e5bfe7..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/templates/stsdiscovery-rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.autosharding.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/values.yaml b/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/values.yaml deleted file mode 100644 index f64645690..000000000 --- a/charts/rancher-kube-state-metrics/rancher-kube-state-metrics/2.13.101+up2.13.1/values.yaml +++ /dev/null @@ -1,184 +0,0 @@ -global: - cattle: - systemDefaultRegistry: "" - -# Default values for kube-state-metrics. -prometheusScrape: true -image: - repository: rancher/mirrored-kube-state-metrics-kube-state-metrics - tag: v1.9.8 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -# - name: "image-pull-secret" - -# If set to true, this will deploy kube-state-metrics as a StatefulSet and the data -# will be automatically sharded across <.Values.replicas> pods using the built-in -# autodiscovery feature: https://github.com/kubernetes/kube-state-metrics#automated-sharding -# This is an experimental feature and there are no stability guarantees. -autosharding: - enabled: false - -replicas: 1 - -# List of additional cli arguments to configure kube-state-metrics -# for example: --enable-gzip-encoding, --log-file, etc. -# all the possible args can be found here: https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md -extraArgs: [] - -service: - port: 8080 - # Default to clusterIP for backward compatibility - type: ClusterIP - nodePort: 0 - loadBalancerIP: "" - annotations: {} - -customLabels: {} - -hostNetwork: false - -rbac: - # If true, create & use RBAC resources - create: true - - # Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to it, rolename set here. - # useExistingRole: your-existing-role - - # If set to false - Run without Cluteradmin privs needed - ONLY works if namespace is also set (if useExistingRole is set this name is used as ClusterRole or Role to bind to) - useClusterRole: true - -serviceAccount: - # Specifies whether a ServiceAccount should be created, require rbac true - create: true - # The name of the ServiceAccount to use. - # If not set and create is true, a name is generated using the fullname template - name: - # Reference to one or more secrets to be used when pulling images - # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - imagePullSecrets: [] - # ServiceAccount annotations. - # Use case: AWS EKS IAM roles for service accounts - # ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html - annotations: {} - -prometheus: - monitor: - enabled: false - additionalLabels: {} - namespace: "" - honorLabels: false - -## Specify if a Pod Security Policy for kube-state-metrics must be created -## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ -## -podSecurityPolicy: - enabled: false - annotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - additionalVolumes: [] - -securityContext: - enabled: true - runAsNonRoot: true - runAsGroup: 65534 - runAsUser: 65534 - fsGroup: 65534 - -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -nodeSelector: {} - -## Affinity settings for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ -affinity: {} - -## Tolerations for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -tolerations: [] - -# Annotations to be added to the pod -podAnnotations: {} - -## Assign a PriorityClassName to pods if set -# priorityClassName: "" - -# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} - -# Available collectors for kube-state-metrics. By default all available -# collectors are enabled. -collectors: - certificatesigningrequests: true - configmaps: true - cronjobs: true - daemonsets: true - deployments: true - endpoints: true - horizontalpodautoscalers: true - ingresses: true - jobs: true - limitranges: true - mutatingwebhookconfigurations: true - namespaces: true - networkpolicies: true - nodes: true - persistentvolumeclaims: true - persistentvolumes: true - poddisruptionbudgets: true - pods: true - replicasets: true - replicationcontrollers: true - resourcequotas: true - secrets: true - services: true - statefulsets: true - storageclasses: true - validatingwebhookconfigurations: true - verticalpodautoscalers: false - volumeattachments: true - -# Enabling kubeconfig will pass the --kubeconfig argument to the container -kubeconfig: - enabled: false - # base64 encoded kube-config file - secret: - -# Namespace to be enabled for collecting resources. By default all namespaces are collected. -# namespace: "" - -## Override the deployment namespace -## -namespaceOverride: "" - -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:'. - # limits: - # cpu: 100m - # memory: 64Mi - # requests: - # cpu: 10m - # memory: 32Mi - -## Provide a k8s version to define apiGroups for podSecurityPolicy Cluster Role. -## For example: kubeTargetVersionOverride: 1.14.9 -## -kubeTargetVersionOverride: "" - -# Enable self metrics configuration for service and Service Monitor -# Default values for telemetry configuration can be overriden -selfMonitor: - enabled: false - # telemetryHost: 0.0.0.0 - # telemetryPort: 8081 diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/Chart.yaml deleted file mode 100644 index 2bbff14c4..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.10.1+up3.10.0 diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/README.md b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/README.md deleted file mode 100644 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100644 index c56d915bc..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,763 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the flow active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100644 index a2ed1598c..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4731 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the output active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - logstash_prefix: - type: string - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - data_stream_enable: - type: boolean - data_stream_name: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_id: - type: string - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - discard_kafka_delivery_failed: - type: boolean - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - kafka_agg_max_bytes: - type: integer - kafka_agg_max_messages: - type: string - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100644 index 33d7fe5c1..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,759 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the flow active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100644 index 2cf4748a0..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,7472 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - DNS_Retries: - type: string - DNS_Wait_Time: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Kubelet_Port: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - Use_Kubelet: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - mountPath: - type: string - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - bufferVolumeArgs: - items: - type: string - type: array - bufferVolumeImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - bufferVolumeMetrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - forwardInputConfig: - properties: - add_tag_prefix: - type: string - bind: - type: string - chunk_size_limit: - type: string - chunk_size_warn_limit: - type: string - deny_keepalive: - type: boolean - linger_timeout: - type: integer - port: - type: string - resolve_hostname: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_keepalive_packet: - type: boolean - skip_invalid_event: - type: boolean - source_address_key: - type: string - sourceHostnameKey: - type: string - tag: - type: string - transport: - properties: - ca_cert_path: - type: string - ca_path: - type: string - ca_private_key_passphrase: - type: string - ca_private_key_path: - type: string - cert_path: - type: string - ciphers: - type: string - client_cert_auth: - type: boolean - insecure: - type: boolean - private_key_passphrase: - type: string - private_key_path: - type: string - protocol: - type: string - version: - type: string - type: object - type: object - ignoreRepeatedLogInterval: - type: string - ignoreSameLogInterval: - type: string - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - rootDir: - type: string - scaling: - properties: - podManagementPolicy: - type: string - replicas: - type: integer - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - globalFilters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - loggingRef: - type: string - nodeAgents: - items: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - name: - type: string - nodeAgentFluentbit: - properties: - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - containersPath: - type: string - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - daemonSet: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - minReadySeconds: - format: int32 - type: integer - revisionHistoryLimit: - format: int32 - type: integer - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - template: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - automountServiceAccountToken: - type: boolean - containers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - ephemeralContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - targetContainerName: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - type: object - type: object - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - enabled: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - DNS_Retries: - type: string - DNS_Wait_Time: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Kubelet_Port: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - Use_Kubelet: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - livenessDefaultCheck: - type: boolean - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - metricsService: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - allocateLoadBalancerNodePorts: - type: boolean - clusterIP: - type: string - clusterIPs: - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - items: - type: string - type: array - externalName: - type: string - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - ipFamilies: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - type: string - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - protocol: - default: TCP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - type: boolean - selector: - additionalProperties: - type: string - type: object - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - topologyKeys: - items: - type: string - type: array - type: - type: string - type: object - type: object - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - podPriorityClassName: - type: string - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - varLogsPath: - type: string - type: object - profile: - type: string - type: object - type: array - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100644 index 05b27a736..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.10.1+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4725 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the output active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - logstash_prefix: - type: string - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - data_stream_enable: - type: boolean - data_stream_name: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_id: - type: string - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - discard_kafka_delivery_failed: - type: boolean - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - kafka_agg_max_bytes: - type: integer - kafka_agg_max_messages: - type: string - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/Chart.yaml deleted file mode 100755 index 5da44c496..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.6.000 diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/README.md b/charts/rancher-logging/rancher-logging-crd/3.6.000/README.md deleted file mode 100755 index 57b839d2b..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by [rancher-logging](https://github.com/rancher/dev-charts/tree/master/packages/rancher-logging). diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100755 index ce242e787..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,552 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100755 index 1eaeb2ebb..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4142 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - type: string - ca_path: - type: string - client_cert: - type: string - client_key: - type: string - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - type: object - status: - type: object - required: - - spec - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100755 index fd4aaa812..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,548 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100755 index 4600ae7b1..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,2411 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - preserveUnknownFields: false - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - customConfigSecret: - type: string - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - imds_version: - type: string - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - image: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - type: object - timeout: - type: string - type: object - mountPath: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - image: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - scaling: - properties: - replicas: - type: integer - required: - - replicas - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - loggingRef: - type: string - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100755 index cc5caa94d..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.000/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4136 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - type: string - ca_path: - type: string - client_cert: - type: string - client_key: - type: string - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/Chart.yaml deleted file mode 100755 index deb301813..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.6.001 diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/README.md b/charts/rancher-logging/rancher-logging-crd/3.6.001/README.md deleted file mode 100755 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100755 index ce242e787..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,552 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100755 index 1eaeb2ebb..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4142 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - type: string - ca_path: - type: string - client_cert: - type: string - client_key: - type: string - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - type: object - status: - type: object - required: - - spec - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100755 index fd4aaa812..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,548 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100755 index 4600ae7b1..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,2411 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - preserveUnknownFields: false - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - customConfigSecret: - type: string - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - imds_version: - type: string - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - image: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - type: object - timeout: - type: string - type: object - mountPath: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - image: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - scaling: - properties: - replicas: - type: integer - required: - - replicas - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - loggingRef: - type: string - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100755 index cc5caa94d..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.6.001/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4136 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - type: string - ca_path: - type: string - client_cert: - type: string - client_key: - type: string - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - type: object - status: - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/Chart.yaml deleted file mode 100755 index 388f9665e..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.8.201 diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/README.md b/charts/rancher-logging/rancher-logging-crd/3.8.201/README.md deleted file mode 100755 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100755 index 4b462a388..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,627 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100755 index b46916c7e..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4531 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - required: - - spec - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100755 index 394d91927..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,623 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100755 index 256cc738e..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,2754 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - preserveUnknownFields: false - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - enableUpstream: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - mountPath: - type: string - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - forwardInputConfig: - properties: - add_tag_prefix: - type: string - bind: - type: string - chunk_size_limit: - type: string - chunk_size_warn_limit: - type: string - deny_keepalive: - type: boolean - linger_timeout: - type: integer - port: - type: string - resolve_hostname: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_keepalive_packet: - type: boolean - skip_invalid_event: - type: boolean - source_address_key: - type: string - sourceHostnameKey: - type: string - tag: - type: string - transport: - properties: - ca_cert_path: - type: string - ca_path: - type: string - ca_private_key_passphrase: - type: string - ca_private_key_path: - type: string - cert_path: - type: string - ciphers: - type: string - client_cert_auth: - type: boolean - insecure: - type: boolean - private_key_passphrase: - type: string - private_key_path: - type: string - protocol: - type: string - version: - type: string - type: object - type: object - ignoreRepeatedLogInterval: - type: string - ignoreSameLogInterval: - type: string - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - rootDir: - type: string - scaling: - properties: - podManagementPolicy: - type: string - replicas: - type: integer - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - loggingRef: - type: string - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100755 index 01b84e408..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.8.201/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4525 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_type: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - store_as: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/Chart.yaml deleted file mode 100755 index d9ace18ce..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.9.000 diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/README.md b/charts/rancher-logging/rancher-logging-crd/3.9.000/README.md deleted file mode 100755 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100755 index 9fc6e22a5..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,765 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100755 index a82252ad9..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4563 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - - azure_storage_sas_token - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - required: - - spec - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100755 index a01a1331d..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,761 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100755 index d14c80e2c..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,3536 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - preserveUnknownFields: false - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - mountPath: - type: string - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - forwardInputConfig: - properties: - add_tag_prefix: - type: string - bind: - type: string - chunk_size_limit: - type: string - chunk_size_warn_limit: - type: string - deny_keepalive: - type: boolean - linger_timeout: - type: integer - port: - type: string - resolve_hostname: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_keepalive_packet: - type: boolean - skip_invalid_event: - type: boolean - source_address_key: - type: string - sourceHostnameKey: - type: string - tag: - type: string - transport: - properties: - ca_cert_path: - type: string - ca_path: - type: string - ca_private_key_passphrase: - type: string - ca_private_key_path: - type: string - cert_path: - type: string - ciphers: - type: string - client_cert_auth: - type: boolean - insecure: - type: boolean - private_key_passphrase: - type: string - private_key_path: - type: string - protocol: - type: string - version: - type: string - type: object - type: object - ignoreRepeatedLogInterval: - type: string - ignoreSameLogInterval: - type: string - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - rootDir: - type: string - scaling: - properties: - podManagementPolicy: - type: string - replicas: - type: integer - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - globalFilters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - loggingRef: - type: string - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100755 index b04c809ce..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.000/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4557 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - - azure_storage_sas_token - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer_chunk_limit: - type: string - hostname: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/Chart.yaml deleted file mode 100644 index ab3630def..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.9.401+up3.10.0 diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/README.md b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/README.md deleted file mode 100644 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100644 index c56d915bc..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,763 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the flow active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100644 index a2ed1598c..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4731 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the output active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - logstash_prefix: - type: string - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - data_stream_enable: - type: boolean - data_stream_name: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_id: - type: string - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - discard_kafka_delivery_failed: - type: boolean - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - kafka_agg_max_bytes: - type: integer - kafka_agg_max_messages: - type: string - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - required: - - spec - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100644 index 33d7fe5c1..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,759 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the flow active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100644 index 2cf4748a0..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,7472 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - scope: Cluster - versions: - - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - DNS_Retries: - type: string - DNS_Wait_Time: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Kubelet_Port: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - Use_Kubelet: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - mountPath: - type: string - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - bufferVolumeArgs: - items: - type: string - type: array - bufferVolumeImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - bufferVolumeMetrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - forwardInputConfig: - properties: - add_tag_prefix: - type: string - bind: - type: string - chunk_size_limit: - type: string - chunk_size_warn_limit: - type: string - deny_keepalive: - type: boolean - linger_timeout: - type: integer - port: - type: string - resolve_hostname: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_keepalive_packet: - type: boolean - skip_invalid_event: - type: boolean - source_address_key: - type: string - sourceHostnameKey: - type: string - tag: - type: string - transport: - properties: - ca_cert_path: - type: string - ca_path: - type: string - ca_private_key_passphrase: - type: string - ca_private_key_path: - type: string - cert_path: - type: string - ciphers: - type: string - client_cert_auth: - type: boolean - insecure: - type: boolean - private_key_passphrase: - type: string - private_key_path: - type: string - protocol: - type: string - version: - type: string - type: object - type: object - ignoreRepeatedLogInterval: - type: string - ignoreSameLogInterval: - type: string - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - rootDir: - type: string - scaling: - properties: - podManagementPolicy: - type: string - replicas: - type: integer - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - globalFilters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - loggingRef: - type: string - nodeAgents: - items: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - name: - type: string - nodeAgentFluentbit: - properties: - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - containersPath: - type: string - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - daemonSet: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - minReadySeconds: - format: int32 - type: integer - revisionHistoryLimit: - format: int32 - type: integer - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - template: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - automountServiceAccountToken: - type: boolean - containers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - ephemeralContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - targetContainerName: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - default: TCP - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - overhead: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - x-kubernetes-list-map-keys: - - topologyKey - - whenUnsatisfiable - x-kubernetes-list-type: map - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - type: object - type: object - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - enabled: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - DNS_Retries: - type: string - DNS_Wait_Time: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Kubelet_Port: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - Use_Kubelet: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - livenessDefaultCheck: - type: boolean - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - metricsService: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - allocateLoadBalancerNodePorts: - type: boolean - clusterIP: - type: string - clusterIPs: - items: - type: string - type: array - x-kubernetes-list-type: atomic - externalIPs: - items: - type: string - type: array - externalName: - type: string - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - ipFamilies: - items: - type: string - type: array - x-kubernetes-list-type: atomic - ipFamilyPolicy: - type: string - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - protocol: - default: TCP - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - x-kubernetes-list-map-keys: - - port - - protocol - x-kubernetes-list-type: map - publishNotReadyAddresses: - type: boolean - selector: - additionalProperties: - type: string - type: object - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - topologyKeys: - items: - type: string - type: array - type: - type: string - type: object - type: object - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - podPriorityClassName: - type: string - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - varLogsPath: - type: string - type: object - profile: - type: string - type: object - type: array - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100644 index 05b27a736..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.10.0/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4725 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.5.0 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: Is the output active? - jsonPath: .status.active - name: Active - type: boolean - - description: Number of problems - jsonPath: .status.problemsCount - name: Problems - type: integer - name: v1beta1 - schema: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - logstash_prefix: - type: string - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_account - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - data_stream_enable: - type: boolean - data_stream_name: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_id: - type: string - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - discard_kafka_delivery_failed: - type: boolean - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - kafka_agg_max_bytes: - type: integer - kafka_agg_max_messages: - type: string - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - served: true - storage: true - subresources: - status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/Chart.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/Chart.yaml deleted file mode 100644 index 7c3ef19d0..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/release-name: rancher-logging-crd -apiVersion: v1 -description: Installs the CRDs for rancher-logging. -name: rancher-logging-crd -type: application -version: 3.9.401+up3.9.4 diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/README.md b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/README.md deleted file mode 100644 index d4beb54fa..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-logging-crd -A Rancher chart that installs the CRDs used by rancher-logging. diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusterflows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusterflows.yaml deleted file mode 100644 index 9fc6e22a5..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusterflows.yaml +++ /dev/null @@ -1,765 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusterflows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterFlow - listKind: ClusterFlowList - plural: clusterflows - singular: clusterflow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - namespaces: - items: - type: string - type: array - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusteroutputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusteroutputs.yaml deleted file mode 100644 index 029e28ec8..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_clusteroutputs.yaml +++ /dev/null @@ -1,4721 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: clusteroutputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: ClusterOutput - listKind: ClusterOutputList - plural: clusteroutputs - singular: clusteroutput - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - - azure_storage_sas_token - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - enabledNamespaces: - items: - type: string - type: array - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - required: - - spec - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_flows.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_flows.yaml deleted file mode 100644 index a01a1331d..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_flows.yaml +++ /dev/null @@ -1,761 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: flows.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the flow active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Flow - listKind: FlowList - plural: flows - singular: flow - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - localOutputRefs: - items: - type: string - type: array - loggingRef: - type: string - match: - items: - properties: - exclude: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - select: - properties: - container_names: - items: - type: string - type: array - hosts: - items: - type: string - type: array - labels: - additionalProperties: - type: string - type: object - type: object - type: object - type: array - outputRefs: - items: - type: string - type: array - selectors: - additionalProperties: - type: string - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_loggings.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_loggings.yaml deleted file mode 100644 index 9d9c20fa1..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_loggings.yaml +++ /dev/null @@ -1,7095 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: loggings.logging.banzaicloud.io -spec: - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Logging - listKind: LoggingList - plural: loggings - singular: logging - preserveUnknownFields: false - scope: Cluster - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - allowClusterResourcesFromAllNamespaces: - type: boolean - controlNamespace: - type: string - defaultFlow: - properties: - filters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - globalOutputRefs: - items: - type: string - type: array - outputRefs: - items: - type: string - type: array - type: object - enableRecreateWorkloadOnImmutableFieldChange: - type: boolean - flowConfigCheckDisabled: - type: boolean - flowConfigOverride: - type: string - fluentbit: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - mountPath: - type: string - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - nodeSelector: - additionalProperties: - type: string - type: object - parser: - type: string - podPriorityClassName: - type: string - position_db: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - type: object - fluentd: - properties: - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - annotations: - additionalProperties: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - configCheckAnnotations: - additionalProperties: - type: string - type: object - configReloaderImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - disablePvc: - type: boolean - fluentLogDestination: - type: string - fluentOutLogrotate: - properties: - age: - type: string - enabled: - type: boolean - path: - type: string - size: - type: string - required: - - enabled - type: object - fluentdPvcSpec: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - forwardInputConfig: - properties: - add_tag_prefix: - type: string - bind: - type: string - chunk_size_limit: - type: string - chunk_size_warn_limit: - type: string - deny_keepalive: - type: boolean - linger_timeout: - type: integer - port: - type: string - resolve_hostname: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_keepalive_packet: - type: boolean - skip_invalid_event: - type: boolean - source_address_key: - type: string - sourceHostnameKey: - type: string - tag: - type: string - transport: - properties: - ca_cert_path: - type: string - ca_path: - type: string - ca_private_key_passphrase: - type: string - ca_private_key_path: - type: string - cert_path: - type: string - ciphers: - type: string - client_cert_auth: - type: boolean - insecure: - type: boolean - private_key_passphrase: - type: string - private_key_path: - type: string - protocol: - type: string - version: - type: string - type: object - type: object - ignoreRepeatedLogInterval: - type: string - ignoreSameLogInterval: - type: string - image: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - livenessDefaultCheck: - type: boolean - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - nodeSelector: - additionalProperties: - type: string - type: object - podPriorityClassName: - type: string - port: - format: int32 - type: integer - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - rootDir: - type: string - scaling: - properties: - podManagementPolicy: - type: string - replicas: - type: integer - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - volumeModImage: - properties: - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - pullPolicy: - type: string - repository: - type: string - tag: - type: string - type: object - volumeMountChmod: - type: boolean - workers: - format: int32 - type: integer - type: object - globalFilters: - items: - properties: - concat: - properties: - continuous_line_regexp: - type: string - flush_interval: - type: integer - keep_partial_key: - type: boolean - keep_partial_metadata: - type: string - key: - type: string - multiline_end_regexp: - type: string - multiline_start_regexp: - type: string - n_lines: - type: integer - partial_key: - type: string - partial_value: - type: string - separator: - type: string - stream_identity_key: - type: string - timeout_label: - type: string - use_first_timestamp: - type: boolean - use_partial_metadata: - type: string - type: object - dedot: - properties: - de_dot_nested: - type: boolean - de_dot_separator: - type: string - type: object - detectExceptions: - properties: - languages: - items: - type: string - type: array - max_bytes: - type: integer - max_lines: - type: integer - message: - type: string - multiline_flush_interval: - type: string - remove_tag_prefix: - type: string - stream: - type: string - type: object - enhanceK8s: - properties: - api_groups: - items: - type: string - type: array - bearer_token_file: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cache_refresh: - type: integer - cache_refresh_variation: - type: integer - cache_size: - type: integer - cache_ttl: - type: integer - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - core_api_versions: - items: - type: string - type: array - data_type: - type: string - in_namespace_path: - items: - type: string - type: array - in_pod_path: - items: - type: string - type: array - kubernetes_url: - type: string - secret_dir: - type: string - ssl_partial_chain: - type: boolean - verify_ssl: - type: boolean - type: object - geoip: - properties: - backend_library: - type: string - geoip_2_database: - type: string - geoip_database: - type: string - geoip_lookup_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - skip_adding_null_record: - type: boolean - type: object - grep: - properties: - and: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - or: - items: - properties: - exclude: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - type: array - regexp: - items: - properties: - key: - type: string - pattern: - type: string - required: - - key - - pattern - type: object - type: array - type: object - parser: - properties: - emit_invalid_record_to_error: - type: boolean - hash_value_field: - type: string - inject_key_prefix: - type: string - key_name: - type: string - parse: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - parsers: - items: - properties: - delimiter: - type: string - delimiter_pattern: - type: string - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - format_firstline: - type: string - keep_time_key: - type: boolean - label_delimiter: - type: string - local_time: - type: boolean - multiline: - items: - type: string - type: array - null_empty_string: - type: boolean - null_value_pattern: - type: string - patterns: - items: - properties: - estimate_current_event: - type: boolean - expression: - type: string - format: - type: string - keep_time_key: - type: boolean - local_time: - type: boolean - null_empty_string: - type: boolean - null_value_pattern: - type: string - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - time_format: - type: string - time_key: - type: string - time_type: - type: string - timezone: - type: string - type: - type: string - types: - type: string - utc: - type: boolean - type: object - type: array - remove_key_name_field: - type: boolean - replace_invalid_sequence: - type: boolean - reserve_data: - type: boolean - reserve_time: - type: boolean - type: object - prometheus: - properties: - labels: - additionalProperties: - type: string - type: object - metrics: - items: - properties: - buckets: - type: string - desc: - type: string - key: - type: string - labels: - additionalProperties: - type: string - type: object - name: - type: string - type: - type: string - required: - - desc - - name - - type - type: object - type: array - type: object - record_modifier: - properties: - char_encoding: - type: string - prepare_value: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - replaces: - items: - properties: - expression: - type: string - key: - type: string - replace: - type: string - required: - - expression - - key - - replace - type: object - type: array - whitelist_keys: - type: string - type: object - record_transformer: - properties: - auto_typecast: - type: boolean - enable_ruby: - type: boolean - keep_keys: - type: string - records: - items: - additionalProperties: - type: string - type: object - type: array - remove_keys: - type: string - renew_record: - type: boolean - renew_time_key: - type: string - type: object - stdout: - properties: - output_type: - type: string - type: object - sumologic: - properties: - collector_key_name: - type: string - collector_value: - type: string - exclude_container_regex: - type: string - exclude_facility_regex: - type: string - exclude_host_regex: - type: string - exclude_namespace_regex: - type: string - exclude_pod_regex: - type: string - exclude_priority_regex: - type: string - exclude_unit_regex: - type: string - log_format: - type: string - source_category: - type: string - source_category_key_name: - type: string - source_category_prefix: - type: string - source_category_replace_dash: - type: string - source_host: - type: string - source_host_key_name: - type: string - source_name: - type: string - source_name_key_name: - type: string - tracing_annotation_prefix: - type: string - tracing_container_name: - type: string - tracing_format: - type: boolean - tracing_host: - type: string - tracing_label_prefix: - type: string - tracing_namespace: - type: string - tracing_pod: - type: string - tracing_pod_id: - type: string - type: object - tag_normaliser: - properties: - format: - type: string - type: object - throttle: - properties: - group_bucket_limit: - type: integer - group_bucket_period_s: - type: integer - group_drop_logs: - type: boolean - group_key: - type: string - group_reset_rate_s: - type: integer - group_warning_delay_s: - type: integer - type: object - type: object - type: array - loggingRef: - type: string - nodeAgents: - items: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - name: - type: string - nodeAgentFluentbit: - properties: - bufferStorage: - properties: - storage.backlog.mem_limit: - type: string - storage.checksum: - type: string - storage.path: - type: string - storage.sync: - type: string - type: object - bufferStorageVolume: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - containersPath: - type: string - coroStackSize: - format: int32 - type: integer - customConfigSecret: - type: string - daemonSet: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - minReadySeconds: - format: int32 - type: integer - revisionHistoryLimit: - format: int32 - type: integer - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - template: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - activeDeadlineSeconds: - format: int64 - type: integer - affinity: - properties: - nodeAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - preference: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - properties: - nodeSelectorTerms: - items: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - properties: - preferredDuringSchedulingIgnoredDuringExecution: - items: - properties: - podAffinityTerm: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - weight: - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - namespaces: - items: - type: string - type: array - topologyKey: - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - automountServiceAccountToken: - type: boolean - containers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - dnsConfig: - properties: - nameservers: - items: - type: string - type: array - options: - items: - properties: - name: - type: string - value: - type: string - type: object - type: array - searches: - items: - type: string - type: array - type: object - dnsPolicy: - type: string - enableServiceLinks: - type: boolean - ephemeralContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - targetContainerName: - type: string - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - hostAliases: - items: - properties: - hostnames: - items: - type: string - type: array - ip: - type: string - type: object - type: array - hostIPC: - type: boolean - hostNetwork: - type: boolean - hostPID: - type: boolean - hostname: - type: string - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - initContainers: - items: - properties: - args: - items: - type: string - type: array - command: - items: - type: string - type: array - env: - items: - properties: - name: - type: string - value: - type: string - valueFrom: - properties: - configMapKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - items: - properties: - configMapRef: - properties: - name: - type: string - optional: - type: boolean - type: object - prefix: - type: string - secretRef: - properties: - name: - type: string - optional: - type: boolean - type: object - type: object - type: array - image: - type: string - imagePullPolicy: - type: string - lifecycle: - properties: - postStart: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - name: - type: string - ports: - items: - properties: - containerPort: - format: int32 - type: integer - hostIP: - type: string - hostPort: - format: int32 - type: integer - name: - type: string - protocol: - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - startupProbe: - properties: - exec: - properties: - command: - items: - type: string - type: array - type: object - failureThreshold: - format: int32 - type: integer - httpGet: - properties: - host: - type: string - httpHeaders: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - path: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - scheme: - type: string - required: - - port - type: object - initialDelaySeconds: - format: int32 - type: integer - periodSeconds: - format: int32 - type: integer - successThreshold: - format: int32 - type: integer - tcpSocket: - properties: - host: - type: string - port: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - format: int32 - type: integer - type: object - stdin: - type: boolean - stdinOnce: - type: boolean - terminationMessagePath: - type: string - terminationMessagePolicy: - type: string - tty: - type: boolean - volumeDevices: - items: - properties: - devicePath: - type: string - name: - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - items: - properties: - mountPath: - type: string - mountPropagation: - type: string - name: - type: string - readOnly: - type: boolean - subPath: - type: string - subPathExpr: - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - type: string - required: - - name - type: object - type: array - nodeName: - type: string - nodeSelector: - additionalProperties: - type: string - type: object - overhead: - additionalProperties: - type: string - type: object - preemptionPolicy: - type: string - priority: - format: int32 - type: integer - priorityClassName: - type: string - readinessGates: - items: - properties: - conditionType: - type: string - required: - - conditionType - type: object - type: array - restartPolicy: - type: string - runtimeClassName: - type: string - schedulerName: - type: string - securityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccountName: - type: string - setHostnameAsFQDN: - type: boolean - shareProcessNamespace: - type: boolean - subdomain: - type: string - terminationGracePeriodSeconds: - format: int64 - type: integer - tolerations: - items: - properties: - effect: - type: string - key: - type: string - operator: - type: string - tolerationSeconds: - format: int64 - type: integer - value: - type: string - type: object - type: array - topologySpreadConstraints: - items: - properties: - labelSelector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - maxSkew: - format: int32 - type: integer - topologyKey: - type: string - whenUnsatisfiable: - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - volumes: - items: - properties: - awsElasticBlockStore: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - azureDisk: - properties: - cachingMode: - type: string - diskName: - type: string - diskURI: - type: string - fsType: - type: string - kind: - type: string - readOnly: - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - properties: - readOnly: - type: boolean - secretName: - type: string - shareName: - type: string - required: - - secretName - - shareName - type: object - cephfs: - properties: - monitors: - items: - type: string - type: array - path: - type: string - readOnly: - type: boolean - secretFile: - type: string - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - monitors - type: object - cinder: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeID: - type: string - required: - - volumeID - type: object - configMap: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - csi: - properties: - driver: - type: string - fsType: - type: string - nodePublishSecretRef: - properties: - name: - type: string - type: object - readOnly: - type: boolean - volumeAttributes: - additionalProperties: - type: string - type: object - required: - - driver - type: object - downwardAPI: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - ephemeral: - properties: - readOnly: - type: boolean - volumeClaimTemplate: - properties: - metadata: - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - required: - - spec - type: object - type: object - fc: - properties: - fsType: - type: string - lun: - format: int32 - type: integer - readOnly: - type: boolean - targetWWNs: - items: - type: string - type: array - wwids: - items: - type: string - type: array - type: object - flexVolume: - properties: - driver: - type: string - fsType: - type: string - options: - additionalProperties: - type: string - type: object - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - required: - - driver - type: object - flocker: - properties: - datasetName: - type: string - datasetUUID: - type: string - type: object - gcePersistentDisk: - properties: - fsType: - type: string - partition: - format: int32 - type: integer - pdName: - type: string - readOnly: - type: boolean - required: - - pdName - type: object - gitRepo: - properties: - directory: - type: string - repository: - type: string - revision: - type: string - required: - - repository - type: object - glusterfs: - properties: - endpoints: - type: string - path: - type: string - readOnly: - type: boolean - required: - - endpoints - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - iscsi: - properties: - chapAuthDiscovery: - type: boolean - chapAuthSession: - type: boolean - fsType: - type: string - initiatorName: - type: string - iqn: - type: string - iscsiInterface: - type: string - lun: - format: int32 - type: integer - portals: - items: - type: string - type: array - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - targetPortal: - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - type: string - nfs: - properties: - path: - type: string - readOnly: - type: boolean - server: - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - properties: - fsType: - type: string - pdID: - type: string - required: - - pdID - type: object - portworxVolume: - properties: - fsType: - type: string - readOnly: - type: boolean - volumeID: - type: string - required: - - volumeID - type: object - projected: - properties: - defaultMode: - format: int32 - type: integer - sources: - items: - properties: - configMap: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - downwardAPI: - properties: - items: - items: - properties: - fieldRef: - properties: - apiVersion: - type: string - fieldPath: - type: string - required: - - fieldPath - type: object - mode: - format: int32 - type: integer - path: - type: string - resourceFieldRef: - properties: - containerName: - type: string - divisor: - type: string - resource: - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - properties: - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - name: - type: string - optional: - type: boolean - type: object - serviceAccountToken: - properties: - audience: - type: string - expirationSeconds: - format: int64 - type: integer - path: - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - properties: - group: - type: string - readOnly: - type: boolean - registry: - type: string - tenant: - type: string - user: - type: string - volume: - type: string - required: - - registry - - volume - type: object - rbd: - properties: - fsType: - type: string - image: - type: string - keyring: - type: string - monitors: - items: - type: string - type: array - pool: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - user: - type: string - required: - - image - - monitors - type: object - scaleIO: - properties: - fsType: - type: string - gateway: - type: string - protectionDomain: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - sslEnabled: - type: boolean - storageMode: - type: string - storagePool: - type: string - system: - type: string - volumeName: - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - properties: - defaultMode: - format: int32 - type: integer - items: - items: - properties: - key: - type: string - mode: - format: int32 - type: integer - path: - type: string - required: - - key - - path - type: object - type: array - optional: - type: boolean - secretName: - type: string - type: object - storageos: - properties: - fsType: - type: string - readOnly: - type: boolean - secretRef: - properties: - name: - type: string - type: object - volumeName: - type: string - volumeNamespace: - type: string - type: object - vsphereVolume: - properties: - fsType: - type: string - storagePolicyID: - type: string - storagePolicyName: - type: string - volumePath: - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - type: object - updateStrategy: - properties: - rollingUpdate: - properties: - maxUnavailable: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - type: object - type: - type: string - type: object - type: object - type: object - disableKubernetesFilter: - type: boolean - enableUpstream: - type: boolean - enabled: - type: boolean - extraVolumeMounts: - items: - properties: - destination: - pattern: ^/.+$ - type: string - readOnly: - type: boolean - source: - pattern: ^/.+$ - type: string - required: - - destination - - source - type: object - type: array - filterAws: - properties: - Match: - type: string - account_id: - type: boolean - ami_id: - type: boolean - az: - type: boolean - ec2_instance_id: - type: boolean - ec2_instance_type: - type: boolean - hostname: - type: boolean - imds_version: - type: string - private_ip: - type: boolean - vpc_id: - type: boolean - type: object - filterKubernetes: - properties: - Annotations: - type: string - Buffer_Size: - type: string - Dummy_Meta: - type: string - K8S-Logging.Exclude: - type: string - K8S-Logging.Parser: - type: string - Keep_Log: - type: string - Kube_CA_File: - type: string - Kube_CA_Path: - type: string - Kube_Tag_Prefix: - type: string - Kube_Token_File: - type: string - Kube_URL: - type: string - Kube_meta_preload_cache_dir: - type: string - Labels: - type: string - Match: - type: string - Merge_Log: - type: string - Merge_Log_Key: - type: string - Merge_Log_Trim: - type: string - Merge_Parser: - type: string - Regex_Parser: - type: string - Use_Journal: - type: string - tls.debug: - type: string - tls.verify: - type: string - type: object - flush: - format: int32 - type: integer - forwardOptions: - properties: - Require_ack_response: - type: boolean - Retry_Limit: - type: string - Send_options: - type: boolean - Tag: - type: string - Time_as_Integer: - type: boolean - type: object - grace: - format: int32 - type: integer - inputTail: - properties: - Buffer_Chunk_Size: - type: string - Buffer_Max_Size: - type: string - DB: - type: string - DB_Sync: - type: string - Docker_Mode: - type: string - Docker_Mode_Flush: - type: string - Exclude_Path: - type: string - Ignore_Older: - type: string - Key: - type: string - Mem_Buf_Limit: - type: string - Multiline: - type: string - Multiline_Flush: - type: string - Parser: - type: string - Parser_Firstline: - type: string - Parser_N: - items: - type: string - type: array - Path: - type: string - Path_Key: - type: string - Refresh_Interval: - type: string - Rotate_Wait: - type: string - Skip_Long_Lines: - type: string - Tag: - type: string - Tag_Regex: - type: string - storage.type: - type: string - type: object - livenessDefaultCheck: - type: boolean - logLevel: - type: string - metrics: - properties: - interval: - type: string - path: - type: string - port: - format: int32 - type: integer - prometheusAnnotations: - type: boolean - serviceMonitor: - type: boolean - serviceMonitorConfig: - properties: - additionalLabels: - additionalProperties: - type: string - type: object - honorLabels: - type: boolean - metricRelabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - relabelings: - items: - properties: - action: - type: string - modulus: - format: int64 - type: integer - regex: - type: string - replacement: - type: string - separator: - type: string - sourceLabels: - items: - type: string - type: array - targetLabel: - type: string - type: object - type: array - type: object - timeout: - type: string - type: object - metricsService: - properties: - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - spec: - properties: - clusterIP: - type: string - externalIPs: - items: - type: string - type: array - externalName: - type: string - externalTrafficPolicy: - type: string - healthCheckNodePort: - format: int32 - type: integer - ipFamily: - type: string - loadBalancerIP: - type: string - loadBalancerSourceRanges: - items: - type: string - type: array - ports: - items: - properties: - appProtocol: - type: string - name: - type: string - nodePort: - format: int32 - type: integer - port: - format: int32 - type: integer - protocol: - type: string - targetPort: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - required: - - port - type: object - type: array - publishNotReadyAddresses: - type: boolean - selector: - additionalProperties: - type: string - type: object - sessionAffinity: - type: string - sessionAffinityConfig: - properties: - clientIP: - properties: - timeoutSeconds: - format: int32 - type: integer - type: object - type: object - topologyKeys: - items: - type: string - type: array - type: - type: string - type: object - type: object - network: - properties: - connectTimeout: - format: int32 - type: integer - keepalive: - type: boolean - keepaliveIdleTimeout: - format: int32 - type: integer - keepaliveMaxRecycle: - format: int32 - type: integer - type: object - podPriorityClassName: - type: string - positiondb: - properties: - emptyDir: - properties: - medium: - type: string - sizeLimit: - type: string - type: object - host_path: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - hostPath: - properties: - path: - type: string - type: - type: string - required: - - path - type: object - pvc: - properties: - source: - properties: - claimName: - type: string - readOnly: - type: boolean - required: - - claimName - type: object - spec: - properties: - accessModes: - items: - type: string - type: array - dataSource: - properties: - apiGroup: - type: string - kind: - type: string - name: - type: string - required: - - kind - - name - type: object - resources: - properties: - limits: - additionalProperties: - type: string - type: object - requests: - additionalProperties: - type: string - type: object - type: object - selector: - properties: - matchExpressions: - items: - properties: - key: - type: string - operator: - type: string - values: - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchLabels: - additionalProperties: - type: string - type: object - type: object - storageClassName: - type: string - volumeMode: - type: string - volumeName: - type: string - type: object - type: object - type: object - security: - properties: - podSecurityContext: - properties: - fsGroup: - format: int64 - type: integer - fsGroupChangePolicy: - type: string - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - supplementalGroups: - items: - format: int64 - type: integer - type: array - sysctls: - items: - properties: - name: - type: string - value: - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - podSecurityPolicyCreate: - type: boolean - roleBasedAccessControlCreate: - type: boolean - securityContext: - properties: - allowPrivilegeEscalation: - type: boolean - capabilities: - properties: - add: - items: - type: string - type: array - drop: - items: - type: string - type: array - type: object - privileged: - type: boolean - procMount: - type: string - readOnlyRootFilesystem: - type: boolean - runAsGroup: - format: int64 - type: integer - runAsNonRoot: - type: boolean - runAsUser: - format: int64 - type: integer - seLinuxOptions: - properties: - level: - type: string - role: - type: string - type: - type: string - user: - type: string - type: object - seccompProfile: - properties: - localhostProfile: - type: string - type: - type: string - required: - - type - type: object - windowsOptions: - properties: - gmsaCredentialSpec: - type: string - gmsaCredentialSpecName: - type: string - runAsUserName: - type: string - type: object - type: object - serviceAccount: - type: string - type: object - serviceAccount: - properties: - automountServiceAccountToken: - type: boolean - imagePullSecrets: - items: - properties: - name: - type: string - type: object - type: array - metadata: - properties: - annotations: - additionalProperties: - type: string - type: object - labels: - additionalProperties: - type: string - type: object - type: object - secrets: - items: - properties: - apiVersion: - type: string - fieldPath: - type: string - kind: - type: string - name: - type: string - namespace: - type: string - resourceVersion: - type: string - uid: - type: string - type: object - type: array - type: object - targetHost: - type: string - targetPort: - format: int32 - type: integer - tls: - properties: - enabled: - type: boolean - secretName: - type: string - sharedKey: - type: string - required: - - enabled - type: object - varLogsPath: - type: string - type: object - profile: - type: string - type: object - type: array - watchNamespaces: - items: - type: string - type: array - required: - - controlNamespace - type: object - status: - properties: - configCheckResults: - additionalProperties: - type: boolean - type: object - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_outputs.yaml b/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_outputs.yaml deleted file mode 100644 index 85ee16497..000000000 --- a/charts/rancher-logging/rancher-logging-crd/3.9.401+up3.9.4/templates/logging.banzaicloud.io_outputs.yaml +++ /dev/null @@ -1,4715 +0,0 @@ - ---- -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: outputs.logging.banzaicloud.io -spec: - additionalPrinterColumns: - - JSONPath: .status.active - description: Is the output active? - name: Active - type: boolean - - JSONPath: .status.problemsCount - description: Number of problems - name: Problems - type: integer - group: logging.banzaicloud.io - names: - categories: - - logging-all - kind: Output - listKind: OutputList - plural: outputs - singular: output - preserveUnknownFields: false - scope: Namespaced - subresources: - status: {} - validation: - openAPIV3Schema: - properties: - apiVersion: - type: string - kind: - type: string - metadata: - type: object - spec: - properties: - awsElasticsearch: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_arn: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_session_name: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - assume_role_web_identity_token_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ecs_container_credentials_relative_uri: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - region: - type: string - secret_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - sts_credentials_region: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - flush_interval: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - include_tag_key: - type: boolean - logstash_format: - type: boolean - tag_key: - type: string - type: object - azurestorage: - properties: - auto_create_container: - type: boolean - azure_container: - type: string - azure_imds_api_version: - type: string - azure_object_key_format: - type: string - azure_storage_access_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_account: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - azure_storage_sas_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - type: string - path: - type: string - required: - - azure_container - - azure_storage_access_key - - azure_storage_account - - azure_storage_sas_token - type: object - cloudwatch: - properties: - auto_create_stream: - type: boolean - aws_instance_profile_credentials_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sts_role_arn: - type: string - aws_sts_session_name: - type: string - aws_use_sts: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - concurrency: - type: integer - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - http_proxy: - type: string - include_time_key: - type: boolean - json_handler: - type: string - localtime: - type: boolean - log_group_aws_tags: - type: string - log_group_aws_tags_key: - type: string - log_group_name: - type: string - log_group_name_key: - type: string - log_rejected_request: - type: string - log_stream_name: - type: string - log_stream_name_key: - type: string - max_events_per_batch: - type: integer - max_message_length: - type: integer - message_keys: - type: string - put_log_events_disable_retry_limit: - type: boolean - put_log_events_retry_limit: - type: integer - put_log_events_retry_wait: - type: string - region: - type: string - remove_log_group_aws_tags_key: - type: string - remove_log_group_name_key: - type: string - remove_log_stream_name_key: - type: string - remove_retention_in_days: - type: string - retention_in_days: - type: string - retention_in_days_key: - type: string - use_tag_as_group: - type: boolean - use_tag_as_stream: - type: boolean - required: - - region - type: object - datadog: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_level: - type: string - dd_hostname: - type: string - dd_source: - type: string - dd_sourcecategory: - type: string - dd_tags: - type: string - host: - type: string - include_tag_key: - type: boolean - max_backoff: - type: string - max_retries: - type: string - no_ssl_validation: - type: boolean - port: - type: string - service: - type: string - ssl_port: - type: string - tag_key: - type: string - timestamp_key: - type: string - use_compression: - type: boolean - use_http: - type: boolean - use_json: - type: boolean - use_ssl: - type: boolean - required: - - api_key - type: object - elasticsearch: - properties: - application_name: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - bulk_message_request_threshold: - type: string - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key_pass: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - content_type: - type: string - custom_headers: - type: string - customize_template: - type: string - default_elasticsearch_version: - type: string - deflector_alias: - type: string - enable_ilm: - type: boolean - exception_backup: - type: boolean - fail_on_putting_template_retry_exceed: - type: boolean - flatten_hashes: - type: boolean - flatten_hashes_separator: - type: string - host: - type: string - hosts: - type: string - http_backend: - type: string - id_key: - type: string - ignore_exceptions: - type: string - ilm_policy: - type: string - ilm_policy_id: - type: string - ilm_policy_overwrite: - type: boolean - include_index_in_url: - type: boolean - include_tag_key: - type: boolean - include_timestamp: - type: boolean - index_date_pattern: - type: string - index_name: - type: string - index_prefix: - type: string - log_es_400_reason: - type: boolean - logstash_dateformat: - type: string - logstash_format: - type: boolean - logstash_prefix: - type: string - logstash_prefix_separator: - type: string - max_retry_get_es_version: - type: string - max_retry_putting_template: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - path: - type: string - pipeline: - type: string - port: - type: integer - prefer_oj_serializer: - type: boolean - reconnect_on_error: - type: boolean - reload_after: - type: string - reload_connections: - type: boolean - reload_on_failure: - type: boolean - remove_keys_on_update: - type: string - remove_keys_on_update_key: - type: string - request_timeout: - type: string - resurrect_after: - type: string - retry_tag: - type: string - rollover_index: - type: boolean - routing_key: - type: string - scheme: - type: string - sniffer_class_name: - type: string - ssl_max_version: - type: string - ssl_min_version: - type: string - ssl_verify: - type: boolean - ssl_version: - type: string - suppress_doc_wrap: - type: boolean - suppress_type_name: - type: boolean - tag_key: - type: string - target_index_key: - type: string - target_type_key: - type: string - template_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - template_name: - type: string - template_overwrite: - type: boolean - templates: - type: string - time_key: - type: string - time_key_format: - type: string - time_parse_error_tag: - type: string - time_precision: - type: string - type_name: - type: string - unrecoverable_error_types: - type: string - user: - type: string - utc_index: - type: boolean - validate_client_version: - type: boolean - verify_es_version_at_startup: - type: boolean - with_transporter_log: - type: boolean - write_operation: - type: string - type: object - file: - properties: - add_path_suffix: - type: boolean - append: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - path: - type: string - path_suffix: - type: string - symlink_path: - type: boolean - required: - - path - type: object - forward: - properties: - ack_response_timeout: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - connect_timeout: - type: integer - dns_round_robin: - type: boolean - expire_dns_cache: - type: integer - hard_timeout: - type: integer - heartbeat_interval: - type: integer - heartbeat_type: - type: string - ignore_network_errors_at_startup: - type: boolean - keepalive: - type: boolean - keepalive_timeout: - type: integer - phi_failure_detector: - type: boolean - phi_threshold: - type: integer - recover_wait: - type: integer - require_ack_response: - type: boolean - security: - properties: - allow_anonymous_source: - type: boolean - self_hostname: - type: string - shared_key: - type: string - user_auth: - type: boolean - required: - - self_hostname - - shared_key - type: object - send_timeout: - type: integer - servers: - items: - properties: - host: - type: string - name: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - shared_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - standby: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - weight: - type: integer - required: - - host - type: object - type: array - tls_allow_self_signed_cert: - type: boolean - tls_cert_logical_store_name: - type: string - tls_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_cert_thumbprint: - type: string - tls_cert_use_enterprise_store: - type: boolean - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_client_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_insecure_mode: - type: boolean - tls_verify_hostname: - type: boolean - tls_version: - type: string - verify_connection_at_startup: - type: boolean - required: - - servers - type: object - gcs: - properties: - acl: - type: string - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - client_retries: - type: integer - client_timeout: - type: integer - credentials_json: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - encryption_key: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - keyfile: - type: string - object_key_format: - type: string - object_metadata: - items: - properties: - key: - type: string - value: - type: string - required: - - key - - value - type: object - type: array - overwrite: - type: boolean - path: - type: string - project: - type: string - storage_class: - type: string - store_as: - type: string - transcoding: - type: boolean - required: - - bucket - - project - type: object - gelf: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - host: - type: string - port: - type: integer - protocol: - type: string - tls: - type: boolean - tls_options: - additionalProperties: - type: string - type: object - required: - - host - - port - type: object - http: - properties: - auth: - properties: - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - password - - username - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - content_type: - type: string - endpoint: - type: string - error_response_as_unrecoverable: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - headers: - additionalProperties: - type: string - type: object - http_method: - type: string - json_array: - type: boolean - open_timeout: - type: integer - proxy: - type: string - read_timeout: - type: integer - retryable_response_codes: - items: - type: integer - type: array - ssl_timeout: - type: integer - tls_ca_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_ciphers: - type: string - tls_client_cert_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_passphrase: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_private_key_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - tls_verify_mode: - type: string - tls_version: - type: string - required: - - endpoint - type: object - kafka: - properties: - ack_timeout: - type: integer - brokers: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compression_codec: - type: string - default_message_key: - type: string - default_partition_key: - type: string - default_topic: - type: string - exclude_partion_key: - type: boolean - exclude_topic_key: - type: boolean - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - get_kafka_client_log: - type: boolean - headers: - additionalProperties: - type: string - type: object - headers_from_record: - additionalProperties: - type: string - type: object - idempotent: - type: boolean - max_send_retries: - type: integer - message_key_key: - type: string - partition_key: - type: string - partition_key_key: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required_acks: - type: integer - sasl_over_ssl: - type: boolean - scram_mechanism: - type: string - ssl_ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_ca_certs_from_system: - type: boolean - ssl_client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_chain: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_client_cert_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ssl_verify_hostname: - type: boolean - topic_key: - type: string - use_default_for_unknown_topic: - type: boolean - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - brokers - - format - type: object - kinesisStream: - properties: - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - aws_iam_retries: - type: integer - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_ses_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - batch_request_max_count: - type: integer - batch_request_max_size: - type: integer - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - partition_key: - type: string - process_credentials: - properties: - process: - type: string - required: - - process - type: object - region: - type: string - reset_backoff_if_success: - type: boolean - retries_on_batch_request: - type: integer - stream_name: - type: string - required: - - stream_name - type: object - logdna: - properties: - api_key: - type: string - app: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - hostname: - type: string - ingester_domain: - type: string - ingester_endpoint: - type: string - request_timeout: - type: string - tags: - type: string - required: - - api_key - - hostname - type: object - loggingRef: - type: string - logz: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - endpoint: - properties: - port: - type: integer - token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - url: - type: string - type: object - gzip: - type: boolean - http_idle_timeout: - type: integer - output_include_tags: - type: boolean - output_include_time: - type: boolean - retry_count: - type: integer - retry_sleep: - type: integer - required: - - endpoint - type: object - loki: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - configure_kubernetes_labels: - type: boolean - drop_single_key: - type: boolean - extra_labels: - additionalProperties: - type: string - type: object - extract_kubernetes_labels: - type: boolean - insecure_tls: - type: boolean - key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - labels: - additionalProperties: - type: string - type: object - line_format: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - remove_keys: - items: - type: string - type: array - tenant: - type: string - url: - type: string - username: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - newrelic: - properties: - api_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - base_uri: - type: string - license_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - type: object - nullout: - type: object - oss: - properties: - aaccess_key_secret: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - access_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - auto_create_bucket: - type: boolean - bucket: - type: string - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_bucket: - type: boolean - check_object: - type: boolean - download_crc_enable: - type: boolean - endpoint: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hex_random_length: - type: integer - index_format: - type: string - key_format: - type: string - open_timeout: - type: integer - oss_sdk_log_dir: - type: string - overwrite: - type: boolean - path: - type: string - read_timeout: - type: integer - store_as: - type: string - upload_crc_enable: - type: boolean - warn_for_delay: - type: string - required: - - aaccess_key_secret - - access_key_id - - bucket - - endpoint - type: object - redis: - properties: - allow_duplicate_key: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - db_number: - type: integer - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insert_key_prefix: - type: string - password: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - port: - type: integer - strftime_format: - type: string - ttl: - type: integer - type: object - s3: - properties: - acl: - type: string - assume_role_credentials: - properties: - duration_seconds: - type: string - external_id: - type: string - policy: - type: string - role_arn: - type: string - role_session_name: - type: string - required: - - role_arn - - role_session_name - type: object - auto_create_bucket: - type: string - aws_iam_retries: - type: string - aws_key_id: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - aws_sec_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - check_apikey_on_start: - type: string - check_bucket: - type: string - check_object: - type: string - clustername: - type: string - compute_checksums: - type: string - enable_transfer_acceleration: - type: string - force_path_style: - type: string - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - grant_full_control: - type: string - grant_read: - type: string - grant_read_acp: - type: string - grant_write_acp: - type: string - hex_random_length: - type: string - index_format: - type: string - instance_profile_credentials: - properties: - http_open_timeout: - type: string - http_read_timeout: - type: string - ip_address: - type: string - port: - type: string - retries: - type: string - type: object - oneeye_format: - type: boolean - overwrite: - type: string - path: - type: string - proxy_uri: - type: string - s3_bucket: - type: string - s3_endpoint: - type: string - s3_metadata: - type: string - s3_object_key_format: - type: string - s3_region: - type: string - shared_credentials: - properties: - path: - type: string - profile_name: - type: string - type: object - signature_version: - type: string - sse_customer_algorithm: - type: string - sse_customer_key: - type: string - sse_customer_key_md5: - type: string - ssekms_key_id: - type: string - ssl_verify_peer: - type: string - storage_class: - type: string - store_as: - type: string - use_bundled_cert: - type: string - use_server_side_encryption: - type: string - warn_for_delay: - type: string - required: - - s3_bucket - type: object - splunkHec: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - ca_file: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_cert: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - client_key: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - coerce_to_utf8: - type: boolean - data_type: - type: string - fields: - additionalProperties: - type: string - type: object - format: - properties: - add_newline: - type: boolean - message_key: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - hec_host: - type: string - hec_port: - type: integer - hec_token: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - host: - type: string - host_key: - type: string - idle_timeout: - type: integer - index: - type: string - index_key: - type: string - insecure_ssl: - type: boolean - keep_keys: - type: boolean - metric_name_key: - type: string - metric_value_key: - type: string - metrics_from_event: - type: boolean - non_utf8_replacement_string: - type: string - open_timeout: - type: integer - protocol: - type: string - read_timeout: - type: integer - source: - type: string - source_key: - type: string - sourcetype: - type: string - sourcetype_key: - type: string - ssl_ciphers: - type: string - required: - - hec_host - - hec_token - type: object - sumologic: - properties: - add_timestamp: - type: boolean - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - compress: - type: boolean - compress_encoding: - type: string - custom_dimensions: - type: string - custom_fields: - items: - type: string - type: array - data_type: - type: string - delimiter: - type: string - disable_cookies: - type: boolean - endpoint: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - log_format: - type: string - log_key: - type: string - metric_data_format: - type: string - open_timeout: - type: integer - proxy_uri: - type: string - source_category: - type: string - source_host: - type: string - source_name: - type: string - source_name_key: - type: string - sumo_client: - type: string - timestamp_key: - type: string - verify_ssl: - type: boolean - required: - - endpoint - - source_name - type: object - syslog: - properties: - buffer: - properties: - chunk_full_threshold: - type: string - chunk_limit_records: - type: integer - chunk_limit_size: - type: string - compress: - type: string - delayed_commit_timeout: - type: string - disable_chunk_backup: - type: boolean - flush_at_shutdown: - type: boolean - flush_interval: - type: string - flush_mode: - type: string - flush_thread_burst_interval: - type: string - flush_thread_count: - type: integer - flush_thread_interval: - type: string - overflow_action: - type: string - path: - type: string - queue_limit_length: - type: integer - queued_chunks_limit_size: - type: integer - retry_exponential_backoff_base: - type: string - retry_forever: - type: boolean - retry_max_interval: - type: string - retry_max_times: - type: integer - retry_randomize: - type: boolean - retry_secondary_threshold: - type: string - retry_timeout: - type: string - retry_type: - type: string - retry_wait: - type: string - tags: - type: string - timekey: - type: string - timekey_use_utc: - type: boolean - timekey_wait: - type: string - timekey_zone: - type: string - total_limit_size: - type: string - type: - type: string - type: object - format: - properties: - app_name_field: - type: string - hostname_field: - type: string - log_field: - type: string - message_id_field: - type: string - proc_id_field: - type: string - rfc6587_message_size: - type: boolean - structured_data_field: - type: string - type: - enum: - - out_file - - json - - ltsv - - csv - - msgpack - - hash - - single_value - type: string - type: object - host: - type: string - insecure: - type: boolean - port: - type: integer - transport: - type: string - trusted_ca_path: - properties: - mountFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - value: - type: string - valueFrom: - properties: - secretKeyRef: - properties: - key: - type: string - name: - type: string - optional: - type: boolean - required: - - key - type: object - type: object - type: object - required: - - host - type: object - type: object - status: - properties: - active: - type: boolean - problems: - items: - type: string - type: array - problemsCount: - type: integer - type: object - type: object - version: v1beta1 - versions: - - name: v1beta1 - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/.helmignore b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/.helmignore deleted file mode 100644 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/Chart.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/Chart.yaml deleted file mode 100644 index 11f84bdc2..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Logging - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging -apiVersion: v1 -appVersion: 3.10.0 -description: Collects and filter logs using highly configurable CRDs. Powered by Banzai - Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.10.1+up3.10.0 diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/README.md b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/README.md deleted file mode 100644 index 4c41244b7..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/README.md +++ /dev/null @@ -1,131 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `ghcr.io/banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.9.5` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `podLabels` | Define custom labels for logging-operator pods | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | -| `global.seLinux.enabled` | Add seLinuxOptions to Logging resources, requires the [rke2-selinux RPM](https://github.com/rancher/rke2-selinux/releases) | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.7.4` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.5-alpine-21` | -| `fluentd.image.repository` | Fluentd container image repository | `ghcr.io/banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/app-readme.md b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/app-readme.md deleted file mode 100644 index 2de4ab4c5..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/app-readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# Rancher Logging - -This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/). - -## Namespace-level logging - -To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. - -## Cluster-level logging - -To collect logs from an entire cluster, users create cluster flows and cluster outputs. - -## CRDs - -- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. -- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. -- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. -- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/NOTES.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/_helpers.tpl deleted file mode 100644 index a8b86d9bd..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/_helpers.tpl +++ /dev/null @@ -1,123 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{- define "windowsEnabled" }} -{{- if not (kindIs "invalid" .Values.global.cattle.windows) }} -{{- if not (kindIs "invalid" .Values.global.cattle.windows.enabled) }} -{{- if .Values.global.cattle.windows.enabled }} -true -{{- end }} -{{- end }} -{{- end }} -{{- end }} - -{{- define "windowsPathPrefix" -}} -{{- trimSuffix "/" (default "c:\\" .Values.global.cattle.rkeWindowsPathPrefix | replace "\\" "/" | replace "//" "/" | replace "c:" "C:") -}} -{{- end -}} - -{{- define "windowsKubernetesFilter" -}} -{{- printf "kubernetes.%s" ((include "windowsPathPrefix" .) | replace ":" "" | replace "/" ".") -}} -{{- end -}} - -{{- define "windowsInputTailMount" -}} -{{- (include "windowsPathPrefix" .) | replace "C:" "" -}} -{{- end -}} - -{{/* -Set the controlplane selector based on kubernetes distribution -*/}} -{{- define "controlplaneSelector" -}} -{{- $master := or .Values.additionalLoggingSources.rke2.enabled .Values.additionalLoggingSources.k3s.enabled -}} -{{- $defaultSelector := $master | ternary (dict "node-role.kubernetes.io/master" "true") (dict "node-role.kubernetes.io/controlplane" "true") -}} -{{ default $defaultSelector .Values.additionalLoggingSources.kubeAudit.nodeSelector | toYaml }} -{{- end -}} - -{{/* -Set kube-audit file path prefix based on distribution -*/}} -{{- define "kubeAuditPathPrefix" -}} -{{- if .Values.additionalLoggingSources.rke.enabled -}} -{{ default "/var/log/kube-audit" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- else if .Values.additionalLoggingSources.rke2.enabled -}} -{{ default "/var/lib/rancher/rke2/server/logs" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- else -}} -{{ required "Directory PathPrefix of the kube-audit location is required" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- end -}} -{{- end -}} - -{{/* -Set kube-audit file name based on distribution -*/}} -{{- define "kubeAuditFilename" -}} -{{- if .Values.additionalLoggingSources.rke.enabled -}} -{{ default "audit-log.json" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- else if .Values.additionalLoggingSources.rke2.enabled -}} -{{ default "audit.log" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- else -}} -{{ required "Filename of the kube-audit log is required" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrole.yaml deleted file mode 100644 index 7f90ca2c8..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrole.yaml +++ /dev/null @@ -1,173 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - endpoints - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - - events.k8s.io - resources: - - events - verbs: - - create - - get - - list - - watch -- apiGroups: - - apps - resources: - - daemonsets - - replicasets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - coordination.k8s.io - resources: - - leases - verbs: - - '*' -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - use - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows/status - - clusteroutputs/status - - flows/status - - loggings/status - - outputs/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrolebinding.yaml deleted file mode 100644 index 89d17d094..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/crds.yaml deleted file mode 100644 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/deployment.yaml deleted file mode 100644 index 26d14cca2..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/deployment.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.podLabels }} - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - args: {{ range .Values.extraArgs }} - - {{ . -}} - {{ end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/aks/logging.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/aks/logging.yaml deleted file mode 100644 index 658103e43..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/aks/logging.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- if .Values.additionalLoggingSources.aks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-aks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "aks" - Path: "/var/log/azure/kubelet-status.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/eks/logging.yaml deleted file mode 100644 index 5714aa092..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,90 +0,0 @@ -{{- if .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/gke/logging.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/gke/logging.yaml deleted file mode 100644 index 2266eb207..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/gke/logging.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- if .Values.additionalLoggingSources.gke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-gke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "gke" - Path: "/var/log/kube-proxy.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/configmap.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/configmap.yaml deleted file mode 100644 index c4b214aa2..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/configmap.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-k3s - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Flush 1 - Grace 5 - Daemon Off - Log_Level info - Coro_Stack_Size 24576 - - [INPUT] - Name systemd - Tag k3s - Path {{ .Values.systemdLogPath | default "/var/log/journal" }} - Systemd_Filter _SYSTEMD_UNIT=k3s.service - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/daemonset.yaml deleted file mode 100644 index 6597949c1..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/daemonset.yaml +++ /dev/null @@ -1,110 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-k3s-journald-aggregator - template: - metadata: - annotations: - checksum/config: {{ include (print $.Template.BasePath "/loggings/k3s/configmap.yaml") . | sha256sum }} - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-k3s-journald-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumeMounts: - - mountPath: /fluent-bit/etc/ - name: config - - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} - name: journal - readOnly: true - - mountPath: /etc/machine-id - name: machine-id - readOnly: true - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: "{{ .Release.Name }}-k3s-journald-aggregator" - volumes: - - name: config - configMap: - name: "{{ .Release.Name }}-k3s" - - name: journal - hostPath: - path: {{ .Values.systemdLogPath | default "/var/log/journal" }} - - name: machine-id - hostPath: - path: /etc/machine-id ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-k3s-journald-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-k3s-journald-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-k3s-journald-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100644 index cf7ec15fd..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/kube-audit/logging.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/kube-audit/logging.yaml deleted file mode 100644 index b5cb30091..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/kube-audit/logging.yaml +++ /dev/null @@ -1,98 +0,0 @@ -{{- if .Values.additionalLoggingSources.kubeAudit.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-kube-audit - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - {{- if .Values.additionalLoggingSources.kubeAudit.loggingRef }} - loggingRef: {{ .Values.additionalLoggingSources.kubeAudit.loggingRef }} - {{- end }} - fluentbit: - disableKubernetesFilter: true - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: {{ .Values.additionalLoggingSources.kubeAudit.fluentbit.logTag }} - Path: /kube-audit-logs/{{ template "kubeAuditFilename" . }} - Parser: json - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - extraVolumeMounts: - - source: {{ template "kubeAuditPathPrefix" . }} - destination: "/kube-audit-logs" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.additionalLoggingSources.kubeAudit.fluentbit.tolerations)) }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - nodeSelector: - {{- include "controlplaneSelector" . | nindent 6 }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/configmap.yaml deleted file mode 100644 index ab91d93e2..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/configmap.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} - Parsers_File parsers.conf - - [INPUT] - Tag rke - Name tail - Path_Key filename - Parser docker - DB /tail-db/tail-containers-state.db - Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} - Path /var/lib/rancher/rke/log/*.log - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/daemonset.yaml deleted file mode 100644 index e08ee8559..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke/daemonset.yaml +++ /dev/null @@ -1,122 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /var/lib/rancher/rke/log/ - name: indir - - mountPath: {{ $containers }} - name: containers - - mountPath: /tail-db - name: positiondb - - mountPath: /fluent-bit/etc/fluent-bit.conf - name: config - subPath: fluent-bit.conf - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumes: - - name: indir - hostPath: - path: /var/lib/rancher/rke/log/ - type: DirectoryOrCreate - - name: containers - hostPath: - path: {{ $containers }} - type: DirectoryOrCreate - - name: positiondb - emptyDir: {} - - name: config - configMap: - name: "{{ .Release.Name }}-rke" - serviceAccountName: "{{ .Release.Name }}-rke-aggregator" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - allowedHostPaths: - - pathPrefix: {{ $containers }} - readOnly: false - - pathPrefix: /var/lib/rancher/rke/log/ - readOnly: false - - pathPrefix: /var/lib/rancher/logging/ - readOnly: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/configmap.yaml deleted file mode 100644 index c2323af92..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Flush 1 - Grace 5 - Daemon Off - Log_Level info - Coro_Stack_Size 24576 - - [INPUT] - Name systemd - Tag rke2 - Path {{ .Values.systemdLogPath | default "/var/log/journal" }} - Systemd_Filter _SYSTEMD_UNIT=rke2-server.service - Systemd_Filter _SYSTEMD_UNIT=rke2-agent.service - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/daemonset.yaml deleted file mode 100644 index 6025e04b4..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,108 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumeMounts: - - mountPath: /fluent-bit/etc/ - name: config - - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} - name: journal - readOnly: true - - mountPath: /etc/machine-id - name: machine-id - readOnly: true - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: "{{ .Release.Name }}-rke2-journald-aggregator" - volumes: - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" - - name: journal - hostPath: - path: {{ .Values.systemdLogPath | default "/var/log/journal" }} - - name: machine-id - hostPath: - path: /etc/machine-id ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke2-journald-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke2-journald-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke2-journald-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/root/logging.yaml deleted file mode 100644 index 6ad50783d..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,154 +0,0 @@ -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - {{- if (include "windowsEnabled" .) }} - nodeAgents: - - name: win-agent - profile: windows - nodeAgentFluentbit: - daemonSet: - spec: - template: - spec: - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }}" - name: fluent-bit - tls: - enabled: {{ .Values.nodeAgents.tls.enabled | default false }} - {{- if .Values.additionalLoggingSources.rke.enabled }} - - name: win-agent-rke - profile: windows - nodeAgentFluentbit: - filterKubernetes: - Kube_Tag_Prefix: "{{ template "windowsKubernetesFilter" . }}.var.lib.rancher.rke.log." - inputTail: - Path: "{{ template "windowsPathPrefix" . }}/var/lib/rancher/rke/log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - extraVolumeMounts: - - source: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" - destination: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" - readOnly: true - daemonSet: - spec: - template: - spec: - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }}" - name: fluent-bit - tls: - enabled: {{ .Values.nodeAgents.tls.enabled | default false }} - {{- end }} - {{- end }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{- if or .Values.fluentbit.inputTail.Buffer_Chunk_Size .Values.fluentbit.inputTail.Buffer_Max_Size .Values.fluentbit.inputTail.Mem_Buf_Limit .Values.fluentbit.inputTail.Multiline_Flush .Values.fluentbit.inputTail.Skip_Long_Lines }} - inputTail: - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit | toString }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush | toString | quote }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines | toString | quote }} - {{- end }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if or .Values.global.psp.enabled .Values.global.seLinux.enabled }} - security: - {{- end }} - {{- if .Values.global.psp.enabled }} - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - {{- if .Values.global.dockerRootDirectory }} - mountPath: {{ $containers }} - extraVolumeMounts: - - source: {{ $containers }} - destination: {{ $containers }} - readOnly: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/psp.yaml deleted file mode 100644 index 46b2071ef..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/psp.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: -{{- if .Values.rbac.psp.annotations }} -{{ toYaml .Values.rbac.psp.annotations | indent 4 }} -{{- end }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/service.yaml deleted file mode 100644 index f419ae2c4..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceMonitor.yaml deleted file mode 100644 index 1bb762cde..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceMonitor.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- with .Values.monitoring.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} -{{- end }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - {{- with .Values.monitoring.serviceMonitor.metricsRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.monitoring.serviceMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 4 }} - {{- end }} - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceaccount.yaml deleted file mode 100644 index cbb2a94b4..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/userroles.yaml deleted file mode 100644 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install-crd.yaml deleted file mode 100644 index 66e8725e5..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install.yaml deleted file mode 100644 index bd624cc4b..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/templates/validate-install.yaml +++ /dev/null @@ -1,5 +0,0 @@ -#{{- if .Values.global.dockerRootDirectory }} -#{{- if or (hasSuffix "/containers" .Values.global.dockerRootDirectory) (hasSuffix "/" .Values.global.dockerRootDirectory) }} -#{{- required "global.dockerRootDirectory must not end with suffix: '/' or '/containers'" "" -}} -#{{- end }} -#{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/values.yaml b/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/values.yaml deleted file mode 100644 index 46cd77f7e..000000000 --- a/charts/rancher-logging/rancher-logging/3.10.1+up3.10.0/values.yaml +++ /dev/null @@ -1,209 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/mirrored-banzaicloud-logging-operator - tag: 3.10.0 - pullPolicy: IfNotPresent - -extraArgs: - - -enable-leader-election=true -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -## Pod custom labels -## -podLabels: {} - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -# These "rbac" settings match the upstream defaults. For only using psp in the overlay files, which -# include the default Logging CRs created, see the "global.psp" setting. To enable psp for the entire -# chart, enable both "rbac.psp" and "global.psp" (this may require further changes to the chart). -rbac: - enabled: true - psp: - enabled: true - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default' - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - - - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: false - additionalLabels: {} - metricRelabelings: [] - relabelings: [] - -disablePvc: true - -systemdLogPath: "/run/log/journal" - -additionalLoggingSources: - rke: - enabled: false - fluentbit: - log_level: "info" - mem_buffer_limit: "5MB" - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - aks: - enabled: false - eks: - enabled: false - gke: - enabled: false - kubeAudit: - auditFilename: "" - enabled: false - pathPrefix: "" - fluentbit: - logTag: kube-audit - tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -images: - config_reloader: - repository: rancher/mirrored-jimmidyson-configmap-reload - tag: v0.4.0 - fluentbit: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.7.4 - fluentbit_debug: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.7.4-debug - fluentd: - repository: rancher/mirrored-banzaicloud-fluentd - tag: v1.11.5-alpine-21 - nodeagent_fluentbit: - os: "windows,linux" - repository: rancher/fluent-bit - tag: 1.7.4 - -# These settings apply to every Logging CR, including vendor Logging CRs enabled in "additionalLoggingSources". -# Changing these affects every Logging CR installed. -nodeAgents: - tls: - enabled: false -fluentd: - bufferStorageVolume: {} - livenessProbe: - tcpSocket: - port: 24240 - initialDelaySeconds: 30 - periodSeconds: 15 - nodeSelector: {} - resources: {} - tolerations: {} -fluentbit: - inputTail: - Buffer_Chunk_Size: "" - Buffer_Max_Size: "" - Mem_Buf_Limit: "" - Multiline_Flush: "" - Skip_Long_Lines: "" - resources: {} - tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -global: - cattle: - systemDefaultRegistry: "" - # Uncomment the below two lines to either enable or disable Windows logging. If this chart is - # installed via the Rancher UI, it will set this value to "true" if the cluster is a Windows - # cluster. In that scenario, if you would like to disable Windows logging on Windows clusters, - # set the value below to "false". - # windows: - # enabled: true - # Change the "dockerRootDirectory" if the default Docker directory has changed. - dockerRootDirectory: "" - # This psp setting differs from the upstream "rbac.psp" by only enabling psp settings for the - # overlay files, which include the Logging CRs created, whereas the upstream "rbac.psp" affects the - # logging operator. - psp: - enabled: true - rkeWindowsPathPrefix: "c:\\" - seLinux: - enabled: false diff --git a/charts/rancher-logging/rancher-logging/3.6.000/.helmignore b/charts/rancher-logging/rancher-logging/3.6.000/.helmignore deleted file mode 100755 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.6.000/Chart.yaml b/charts/rancher-logging/rancher-logging/3.6.000/Chart.yaml deleted file mode 100755 index 5f76d4fba..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: 3.6.0 -description: Collects and filter logs using highly configurable CRDs. Powered by - Banzai Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.6.000 diff --git a/charts/rancher-logging/rancher-logging/3.6.000/README.md b/charts/rancher-logging/rancher-logging/3.6.000/README.md deleted file mode 100755 index b7cfcfc76..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/README.md +++ /dev/null @@ -1,129 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.6.0` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.5.4` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.2-alpine-3` | -| `fluentd.image.repository` | Fluentd container image repository | `banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.6.000/app-readme.md b/charts/rancher-logging/rancher-logging/3.6.000/app-readme.md deleted file mode 100755 index 7d5b9a50b..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/app-readme.md +++ /dev/null @@ -1,3 +0,0 @@ -Rancher Logging, powered by the [Bonzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/), allows users to configure complex logging pipelines with a few simple resources. -To collect logs from a single namespace, users can create an [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) to define where logs are stored and a corresponding [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) to describe what logs to include and what outputs to send to. -To collect logs from the entire cluster, users can similarly create a [ClusterOutput](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) and a corresponding [ClusterFlow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/). diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.6.000/templates/NOTES.txt deleted file mode 100755 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.6.000/templates/_helpers.tpl deleted file mode 100755 index b2b289443..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrole.yaml deleted file mode 100755 index ed2e1e975..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrole.yaml +++ /dev/null @@ -1,156 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create -- apiGroups: - - "" - resources: - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - daemonsets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - loggings/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrolebinding.yaml deleted file mode 100755 index 46bf11e8b..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/crds.yaml deleted file mode 100755 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/deployment.yaml deleted file mode 100755 index 3bd85416a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/deployment.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/eks/logging.yaml deleted file mode 100755 index d47607bff..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- if and .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100755 index 0418fad81..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-systemd.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-systemd.yaml deleted file mode 100755 index 977db0518..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/k3s/logging-k3s-systemd.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/syslog" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-containers-rke.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-containers-rke.yaml deleted file mode 100755 index 0866b22c3..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-containers-rke.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke" - Path: "/var/log/containers/*rke*.log" - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- end }} - diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-rke.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-rke.yaml deleted file mode 100755 index 8e4b5c26f..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke/logging-rke.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke" - Path: "/rke/*.log" - extraVolumeMounts: - - source: "/var/lib/rancher/rke/log" - destination: "/rke" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/configmap.yaml deleted file mode 100755 index d8910122a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [INPUT] - Name systemd - Tag rke2 - Systemd_Filter _SYSTEMD_UNIT=rke2.service - - [OUTPUT] - Name file - Path /etc/rancher/logging/rke2.log -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/daemonset.yaml deleted file mode 100755 index 20fc108bd..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /etc/rancher/logging/logs/ - name: logdir - - mountPath: /fluent-bit/etc/ - name: config - volumes: - - name: logdir - hostPath: - path: /etc/rancher/logging/logs/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-containers.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-containers.yaml deleted file mode 100755 index 721c0a981..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-containers.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/var/log/containers/*rke*.log" - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-journald.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-journald.yaml deleted file mode 100755 index f39651d0b..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/rke2/logging-rke2-journald.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-journald - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/etc/rancher/logging/logs/*.log" - extraVolumeMounts: - - source: "/etc/rancher/logging/logs/" - destination: "/etc/rancher/logging/logs/" - readOnly: true - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/root/logging.yaml deleted file mode 100755 index ee2a85038..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,25 +0,0 @@ -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{ with .Values.fluentbit_tolerations }} - tolerations: - {{ toYaml . | nindent 6 }} - {{ end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/psp.yaml deleted file mode 100755 index 91d1bb35e..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/psp.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - creationTimestamp: null - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/service.yaml deleted file mode 100755 index b4cb7d25a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceMonitor.yaml deleted file mode 100755 index 0687b1ef9..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceMonitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.Enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceaccount.yaml deleted file mode 100755 index 3e87e7891..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/userroles.yaml deleted file mode 100755 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.6.000/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.6.000/templates/validate-install-crd.yaml deleted file mode 100755 index 187b5a91e..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-logging-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.6.000/values.yaml b/charts/rancher-logging/rancher-logging/3.6.000/values.yaml deleted file mode 100755 index 8b1eaecd4..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.000/values.yaml +++ /dev/null @@ -1,118 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/banzaicloud-logging-operator - tag: 3.6.0 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: {} - -tolerations: [] - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -rbac: - enabled: true - psp: - enabled: false - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: true - -disablePvc: true - -additionalLoggingSources: - rke: - enabled: false - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - eks: - enabled: false - -images: - config_reloader: - repository: rancher/jimmidyson-configmap-reload - tag: v0.2.2 - fluentbit: - repository: rancher/fluent-fluent-bit - tag: 1.5.4 - fluentd: - repository: rancher/banzaicloud-fluentd - tag: v1.11.2-alpine-2 - syslog_forwarder: - repository: rancher/fluent-bit-out-syslog - tag: 0.1.0 - -global: - cattle: - systemDefaultRegistry: "" - -fluentbit_tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute diff --git a/charts/rancher-logging/rancher-logging/3.6.001/.helmignore b/charts/rancher-logging/rancher-logging/3.6.001/.helmignore deleted file mode 100755 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.6.001/Chart.yaml b/charts/rancher-logging/rancher-logging/3.6.001/Chart.yaml deleted file mode 100755 index 4282052dd..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Logging - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging - catalog.cattle.io/os: linux -apiVersion: v1 -appVersion: 3.6.0 -description: Collects and filter logs using highly configurable CRDs. Powered by - Banzai Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.6.001 diff --git a/charts/rancher-logging/rancher-logging/3.6.001/README.md b/charts/rancher-logging/rancher-logging/3.6.001/README.md deleted file mode 100755 index b7cfcfc76..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/README.md +++ /dev/null @@ -1,129 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.6.0` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.5.4` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.2-alpine-3` | -| `fluentd.image.repository` | Fluentd container image repository | `banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.6.001/app-readme.md b/charts/rancher-logging/rancher-logging/3.6.001/app-readme.md deleted file mode 100755 index 8ecb81ec6..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/app-readme.md +++ /dev/null @@ -1,21 +0,0 @@ -# Rancher Logging - -This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/). - -## Namespace-level logging - -To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. - -## Cluster-level logging - -To collect logs from an entire cluster, users create cluster flows and cluster outputs. - -## CRDs -- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. -- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. -- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. -- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.6.001/templates/NOTES.txt deleted file mode 100755 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.6.001/templates/_helpers.tpl deleted file mode 100755 index b2b289443..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrole.yaml deleted file mode 100755 index ed2e1e975..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrole.yaml +++ /dev/null @@ -1,156 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create -- apiGroups: - - "" - resources: - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - daemonsets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - loggings/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrolebinding.yaml deleted file mode 100755 index 46bf11e8b..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/crds.yaml deleted file mode 100755 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/deployment.yaml deleted file mode 100755 index da93d4c29..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/deployment.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/eks/logging.yaml deleted file mode 100755 index 6e3018ce1..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100755 index 3d3b0a27b..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-systemd.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-systemd.yaml deleted file mode 100755 index 7df78e388..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/k3s/logging-k3s-systemd.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/syslog" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/configmap.yaml deleted file mode 100755 index 2af01ac0c..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/configmap.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} - Parsers_File parsers.conf - - [INPUT] - Tag rke - Name tail - Path_Key filename - Parser json - DB /tail-db/tail-containers-state.db - Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} - Path /var/lib/rancher/rke/log/*.log - - [OUTPUT] - Name file - Path /var/lib/rancher/logging/ -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/daemonset.yaml deleted file mode 100755 index 5ed36a3b8..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/daemonset.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /var/lib/rancher/rke/log/ - name: indir - - mountPath: /var/lib/rancher/logging/ - name: outdir - - mountPath: /var/lib/docker/containers/ - name: containers - - mountPath: /fluent-bit/etc/ - name: config - volumes: - - name: indir - hostPath: - path: /var/lib/rancher/rke/log/ - - name: outdir - hostPath: - path: /var/lib/rancher/logging/ - - name: containers - hostPath: - path: /var/lib/docker/containers/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/logging-rke.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/logging-rke.yaml deleted file mode 100755 index 368544ed8..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke/logging-rke.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke" - Path: "/var/lib/rancher/logging/rke" - Parser: json - extraVolumeMounts: - - source: "/var/lib/rancher/logging/" - destination: "/var/lib/rancher/logging/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/configmap.yaml deleted file mode 100755 index d8910122a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [INPUT] - Name systemd - Tag rke2 - Systemd_Filter _SYSTEMD_UNIT=rke2.service - - [OUTPUT] - Name file - Path /etc/rancher/logging/rke2.log -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/daemonset.yaml deleted file mode 100755 index a2f763d63..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /etc/rancher/logging/logs/ - name: logdir - - mountPath: /fluent-bit/etc/ - name: config - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - volumes: - - name: logdir - hostPath: - path: /etc/rancher/logging/logs/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-containers.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-containers.yaml deleted file mode 100755 index 8768f8479..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-containers.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/var/log/containers/*rke*.log" - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-journald.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-journald.yaml deleted file mode 100755 index 5a993f086..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/rke2/logging-rke2-journald.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-journald - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/etc/rancher/logging/logs/*.log" - extraVolumeMounts: - - source: "/etc/rancher/logging/logs/" - destination: "/etc/rancher/logging/logs/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/root/logging.yaml deleted file mode 100755 index b67c23d6c..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/psp.yaml deleted file mode 100755 index 91d1bb35e..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/psp.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - creationTimestamp: null - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/service.yaml deleted file mode 100755 index b4cb7d25a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceMonitor.yaml deleted file mode 100755 index 0687b1ef9..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceMonitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.Enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceaccount.yaml deleted file mode 100755 index 3e87e7891..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/userroles.yaml deleted file mode 100755 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.6.001/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.6.001/templates/validate-install-crd.yaml deleted file mode 100755 index 187b5a91e..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-logging-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.6.001/values.yaml b/charts/rancher-logging/rancher-logging/3.6.001/values.yaml deleted file mode 100755 index 83bf9c254..000000000 --- a/charts/rancher-logging/rancher-logging/3.6.001/values.yaml +++ /dev/null @@ -1,129 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/banzaicloud-logging-operator - tag: 3.6.0 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -rbac: - enabled: true - psp: - enabled: false - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: true - -disablePvc: true - -additionalLoggingSources: - rke: - enabled: false - fluentbit: - log_level: "info" - mem_buffer_limit: "5MB" - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - eks: - enabled: false - -images: - config_reloader: - repository: rancher/jimmidyson-configmap-reload - tag: v0.2.2 - fluentbit: - repository: rancher/fluent-fluent-bit - tag: 1.5.4 - fluentbit_debug: - repository: rancher/fluent-fluent-bit - tag: 1.5.4-debug - fluentd: - repository: rancher/banzaicloud-fluentd - tag: v1.11.2-alpine-2 - syslog_forwarder: - repository: rancher/fluent-bit-out-syslog - tag: 0.1.0 - -fluentbit_tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -global: - cattle: - systemDefaultRegistry: "" diff --git a/charts/rancher-logging/rancher-logging/3.8.201/.helmignore b/charts/rancher-logging/rancher-logging/3.8.201/.helmignore deleted file mode 100755 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.8.201/Chart.yaml b/charts/rancher-logging/rancher-logging/3.8.201/Chart.yaml deleted file mode 100755 index 9bda54202..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Logging - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging -apiVersion: v1 -appVersion: 3.8.2 -description: Collects and filter logs using highly configurable CRDs. Powered by Banzai - Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.8.201 diff --git a/charts/rancher-logging/rancher-logging/3.8.201/README.md b/charts/rancher-logging/rancher-logging/3.8.201/README.md deleted file mode 100755 index 01027a254..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/README.md +++ /dev/null @@ -1,129 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `ghcr.io/banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.8.2` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.6.4` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.5-alpine-1` | -| `fluentd.image.repository` | Fluentd container image repository | `ghcr.io/banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.8.201/app-readme.md b/charts/rancher-logging/rancher-logging/3.8.201/app-readme.md deleted file mode 100755 index 2de4ab4c5..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/app-readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# Rancher Logging - -This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/). - -## Namespace-level logging - -To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. - -## Cluster-level logging - -To collect logs from an entire cluster, users create cluster flows and cluster outputs. - -## CRDs - -- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. -- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. -- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. -- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.8.201/templates/NOTES.txt deleted file mode 100755 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.8.201/templates/_helpers.tpl deleted file mode 100755 index b2b289443..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrole.yaml deleted file mode 100755 index b86030a00..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrole.yaml +++ /dev/null @@ -1,161 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - events - verbs: - - create -- apiGroups: - - "" - resources: - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - resources: - - daemonsets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - use - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows/status - - clusteroutputs/status - - flows/status - - loggings/status - - outputs/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrolebinding.yaml deleted file mode 100755 index 46bf11e8b..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1beta1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/crds.yaml deleted file mode 100755 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/deployment.yaml deleted file mode 100755 index da93d4c29..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/deployment.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/aks/logging.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/aks/logging.yaml deleted file mode 100755 index 83f2500db..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/aks/logging.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if .Values.additionalLoggingSources.aks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-aks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "aks" - Path: "/var/log/azure/kubelet-status.log" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/eks/logging.yaml deleted file mode 100755 index 5cc886c6a..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/gke/logging.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/gke/logging.yaml deleted file mode 100755 index af618a44f..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/gke/logging.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- if .Values.additionalLoggingSources.gke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-gke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "gke" - Path: "/var/log/kube-proxy.log" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100755 index 3d3b0a27b..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-systemd.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-systemd.yaml deleted file mode 100755 index 7df78e388..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/k3s/logging-k3s-systemd.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/syslog" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/configmap.yaml deleted file mode 100755 index 2af01ac0c..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/configmap.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} - Parsers_File parsers.conf - - [INPUT] - Tag rke - Name tail - Path_Key filename - Parser json - DB /tail-db/tail-containers-state.db - Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} - Path /var/lib/rancher/rke/log/*.log - - [OUTPUT] - Name file - Path /var/lib/rancher/logging/ -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/daemonset.yaml deleted file mode 100755 index 5ed36a3b8..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/daemonset.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /var/lib/rancher/rke/log/ - name: indir - - mountPath: /var/lib/rancher/logging/ - name: outdir - - mountPath: /var/lib/docker/containers/ - name: containers - - mountPath: /fluent-bit/etc/ - name: config - volumes: - - name: indir - hostPath: - path: /var/lib/rancher/rke/log/ - - name: outdir - hostPath: - path: /var/lib/rancher/logging/ - - name: containers - hostPath: - path: /var/lib/docker/containers/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/logging-rke.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/logging-rke.yaml deleted file mode 100755 index 368544ed8..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke/logging-rke.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke" - Path: "/var/lib/rancher/logging/rke" - Parser: json - extraVolumeMounts: - - source: "/var/lib/rancher/logging/" - destination: "/var/lib/rancher/logging/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/configmap.yaml deleted file mode 100755 index d8910122a..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [INPUT] - Name systemd - Tag rke2 - Systemd_Filter _SYSTEMD_UNIT=rke2.service - - [OUTPUT] - Name file - Path /etc/rancher/logging/rke2.log -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/daemonset.yaml deleted file mode 100755 index a2f763d63..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /etc/rancher/logging/logs/ - name: logdir - - mountPath: /fluent-bit/etc/ - name: config - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - volumes: - - name: logdir - hostPath: - path: /etc/rancher/logging/logs/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-containers.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-containers.yaml deleted file mode 100755 index 8768f8479..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-containers.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/var/log/containers/*rke*.log" - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-journald.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-journald.yaml deleted file mode 100755 index 5a993f086..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/rke2/logging-rke2-journald.yaml +++ /dev/null @@ -1,45 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-journald - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/etc/rancher/logging/logs/*.log" - extraVolumeMounts: - - source: "/etc/rancher/logging/logs/" - destination: "/etc/rancher/logging/logs/" - readOnly: true - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/root/logging.yaml deleted file mode 100755 index b67c23d6c..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,38 +0,0 @@ -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit_tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/psp.yaml deleted file mode 100755 index 91d1bb35e..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/psp.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - creationTimestamp: null - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default' -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/service.yaml deleted file mode 100755 index f419ae2c4..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceMonitor.yaml deleted file mode 100755 index 529d0f051..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceMonitor.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceaccount.yaml deleted file mode 100755 index 3e87e7891..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - helm.sh/chart: {{ include "logging-operator.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/userroles.yaml deleted file mode 100755 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.8.201/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.8.201/templates/validate-install-crd.yaml deleted file mode 100755 index 187b5a91e..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the rancher-logging-crd chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.8.201/values.yaml b/charts/rancher-logging/rancher-logging/3.8.201/values.yaml deleted file mode 100755 index b36cf10a6..000000000 --- a/charts/rancher-logging/rancher-logging/3.8.201/values.yaml +++ /dev/null @@ -1,130 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/banzaicloud-logging-operator - tag: 3.8.2 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -rbac: - enabled: true - psp: - enabled: false - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: false - -disablePvc: true - -additionalLoggingSources: - rke: - enabled: false - fluentbit: - log_level: "info" - mem_buffer_limit: "5MB" - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - aks: - enabled: false - eks: - enabled: false - gke: - enabled: false - -images: - config_reloader: - repository: rancher/jimmidyson-configmap-reload - tag: v0.2.2 - fluentbit: - repository: rancher/fluent-fluent-bit - tag: 1.6.4 - fluentbit_debug: - repository: rancher/fluent-fluent-bit - tag: 1.6.4-debug - fluentd: - repository: rancher/banzaicloud-fluentd - tag: v1.11.5-alpine-1 - -fluentbit_tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -global: - cattle: - systemDefaultRegistry: "" diff --git a/charts/rancher-logging/rancher-logging/3.9.000/.helmignore b/charts/rancher-logging/rancher-logging/3.9.000/.helmignore deleted file mode 100755 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.9.000/Chart.yaml b/charts/rancher-logging/rancher-logging/3.9.000/Chart.yaml deleted file mode 100755 index 3ce4441f5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/Chart.yaml +++ /dev/null @@ -1,20 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Logging - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/os: linux - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging -apiVersion: v1 -appVersion: 3.9.0 -description: Collects and filter logs using highly configurable CRDs. Powered by Banzai - Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.9.000 diff --git a/charts/rancher-logging/rancher-logging/3.9.000/README.md b/charts/rancher-logging/rancher-logging/3.9.000/README.md deleted file mode 100755 index 783816749..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/README.md +++ /dev/null @@ -1,129 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `ghcr.io/banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.9.0` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.6.10` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.5-alpine-9` | -| `fluentd.image.repository` | Fluentd container image repository | `ghcr.io/banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.9.000/app-readme.md b/charts/rancher-logging/rancher-logging/3.9.000/app-readme.md deleted file mode 100755 index 2de4ab4c5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/app-readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# Rancher Logging - -This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/). - -## Namespace-level logging - -To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. - -## Cluster-level logging - -To collect logs from an entire cluster, users create cluster flows and cluster outputs. - -## CRDs - -- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. -- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. -- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. -- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.9.000/templates/NOTES.txt deleted file mode 100755 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.9.000/templates/_helpers.tpl deleted file mode 100755 index b2b289443..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/_helpers.tpl +++ /dev/null @@ -1,66 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrole.yaml deleted file mode 100755 index 709eedb91..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrole.yaml +++ /dev/null @@ -1,167 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - endpoints - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - - events.k8s.io - resources: - - events - verbs: - - create - - get - - list - - watch -- apiGroups: - - apps - resources: - - daemonsets - - replicasets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - use - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows/status - - clusteroutputs/status - - flows/status - - loggings/status - - outputs/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrolebinding.yaml deleted file mode 100755 index 89d17d094..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/crds.yaml deleted file mode 100755 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/deployment.yaml deleted file mode 100755 index da93d4c29..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/deployment.yaml +++ /dev/null @@ -1,62 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/aks/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/aks/logging.yaml deleted file mode 100755 index c7f6ce7e5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/aks/logging.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if .Values.additionalLoggingSources.aks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-aks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "aks" - Path: "/var/log/azure/kubelet-status.log" - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/eks/logging.yaml deleted file mode 100755 index 30c22d82e..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- if .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/gke/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/gke/logging.yaml deleted file mode 100755 index a1f36c670..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/gke/logging.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if .Values.additionalLoggingSources.gke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-gke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "gke" - Path: "/var/log/kube-proxy.log" - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100755 index 0143b6a89..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-systemd.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-systemd.yaml deleted file mode 100755 index 56aedb2d6..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/k3s/logging-k3s-systemd.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/syslog" - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/configmap.yaml deleted file mode 100755 index 2af01ac0c..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/configmap.yaml +++ /dev/null @@ -1,26 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} - Parsers_File parsers.conf - - [INPUT] - Tag rke - Name tail - Path_Key filename - Parser json - DB /tail-db/tail-containers-state.db - Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} - Path /var/lib/rancher/rke/log/*.log - - [OUTPUT] - Name file - Path /var/lib/rancher/logging/ -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/daemonset.yaml deleted file mode 100755 index 3f41f7b0a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/daemonset.yaml +++ /dev/null @@ -1,127 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /var/lib/rancher/rke/log/ - name: indir - - mountPath: /var/lib/rancher/logging/ - name: outdir - - mountPath: {{ $containers }} - name: containers - - mountPath: /tail-db - name: tail-db - - mountPath: /fluent-bit/etc/fluent-bit.conf - name: config - subPath: fluent-bit.conf - volumes: - - name: indir - hostPath: - path: /var/lib/rancher/rke/log/ - type: DirectoryOrCreate - - name: outdir - hostPath: - path: /var/lib/rancher/logging/ - type: DirectoryOrCreate - - name: containers - hostPath: - path: {{ $containers }} - type: DirectoryOrCreate - - name: tail-db - hostPath: - path: /var/lib/rancher/logging/tail-db/ - type: DirectoryOrCreate - - name: config - configMap: - name: "{{ .Release.Name }}-rke" - serviceAccountName: "{{ .Release.Name }}-rke-aggregator" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - allowedHostPaths: - - pathPrefix: {{ $containers }} - readOnly: false - - pathPrefix: /var/lib/rancher/rke/log/ - readOnly: false - - pathPrefix: /var/lib/rancher/logging/ - readOnly: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/logging-rke.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/logging-rke.yaml deleted file mode 100755 index d25c0047f..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke/logging-rke.yaml +++ /dev/null @@ -1,70 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke" - Path: "/var/lib/rancher/logging/rke" - Parser: json - extraVolumeMounts: - - source: "/var/lib/rancher/logging/" - destination: "/var/lib/rancher/logging/" - readOnly: true - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- if .Values.global.dockerRootDirectory }} - mountPath: {{ $containers }} - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/configmap.yaml deleted file mode 100755 index d8910122a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [INPUT] - Name systemd - Tag rke2 - Systemd_Filter _SYSTEMD_UNIT=rke2.service - - [OUTPUT] - Name file - Path /etc/rancher/logging/rke2.log -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/daemonset.yaml deleted file mode 100755 index 2b4672811..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,101 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /etc/rancher/logging/logs/ - name: logdir - - mountPath: /fluent-bit/etc/ - name: config - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: "{{ .Release.Name }}-rke2-journald-aggregator" - volumes: - - name: logdir - hostPath: - path: /etc/rancher/logging/logs/ - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke2-journald-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke2-journald-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke2-journald-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - allowedHostPaths: - - pathPrefix: /etc/rancher/logging/logs - readOnly: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-containers.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-containers.yaml deleted file mode 100755 index 2bc1900ce..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-containers.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/var/log/containers/*rke*.log" - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-journald.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-journald.yaml deleted file mode 100755 index 72ac37bab..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/rke2/logging-rke2-journald.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-journald - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/etc/rancher/logging/logs/*.log" - extraVolumeMounts: - - source: "/etc/rancher/logging/logs/" - destination: "/etc/rancher/logging/logs/" - readOnly: true - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/root/logging.yaml deleted file mode 100755 index 09071405d..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- if .Values.global.dockerRootDirectory }} - mountPath: {{ $containers }} - extraVolumeMounts: - - source: {{ $containers }} - destination: {{ $containers }} - readOnly: true - {{- end }} - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: - {{- toYaml . | nindent 6 }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/psp.yaml deleted file mode 100755 index d0eab300c..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/psp.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default,runtime/default' - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/service.yaml deleted file mode 100755 index f419ae2c4..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceMonitor.yaml deleted file mode 100755 index 1bb762cde..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceMonitor.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- with .Values.monitoring.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} -{{- end }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - {{- with .Values.monitoring.serviceMonitor.metricsRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.monitoring.serviceMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 4 }} - {{- end }} - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceaccount.yaml deleted file mode 100755 index cbb2a94b4..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/userroles.yaml deleted file mode 100755 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install-crd.yaml deleted file mode 100755 index 66e8725e5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install.yaml b/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install.yaml deleted file mode 100755 index bd624cc4b..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/templates/validate-install.yaml +++ /dev/null @@ -1,5 +0,0 @@ -#{{- if .Values.global.dockerRootDirectory }} -#{{- if or (hasSuffix "/containers" .Values.global.dockerRootDirectory) (hasSuffix "/" .Values.global.dockerRootDirectory) }} -#{{- required "global.dockerRootDirectory must not end with suffix: '/' or '/containers'" "" -}} -#{{- end }} -#{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.000/values.yaml b/charts/rancher-logging/rancher-logging/3.9.000/values.yaml deleted file mode 100755 index e07558390..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.000/values.yaml +++ /dev/null @@ -1,149 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/mirrored-banzaicloud-logging-operator - tag: 3.9.0 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -# These "rbac" settings match the upstream defaults. For only using psp in the overlay files, which -# include the default Logging CRs created, see the "global.psp" setting. To enable psp for the entire -# chart, enable both "rbac.psp" and "global.psp" (this may require further changes to the chart). -rbac: - enabled: true - psp: - enabled: false - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: false - additionalLabels: {} - metricRelabelings: [] - relabelings: [] - -disablePvc: true - -additionalLoggingSources: - rke: - enabled: false - fluentbit: - log_level: "info" - mem_buffer_limit: "5MB" - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - aks: - enabled: false - eks: - enabled: false - gke: - enabled: false - -images: - config_reloader: - repository: rancher/mirrored-jimmidyson-configmap-reload - tag: v0.4.0 - fluentbit: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.6.10 - fluentbit_debug: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.6.10-debug - fluentd: - repository: rancher/mirrored-banzaicloud-fluentd - tag: v1.11.5-alpine-9 - -# These "fluentd" and "fluentbit" settings apply to every Logging CR, including vendor Logging CRs -# enabled in "additionalLoggingSources". Changing these affects every Logging CR installed. -fluentd: - resources: {} -fluentbit: - resources: {} - tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -global: - cattle: - systemDefaultRegistry: "" - # Change the "dockerRootDirectory" if the default Docker directory has changed. - dockerRootDirectory: "" - # This psp setting differs from the upstream "rbac.psp" by only enabling psp settings for the - # overlay files, which include the Logging CRs created, whereas the upstream "rbac.psp" affects the - # logging operator. - psp: - enabled: true diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/.helmignore b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/.helmignore deleted file mode 100644 index 50af03172..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/.helmignore +++ /dev/null @@ -1,22 +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/ diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/Chart.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/Chart.yaml deleted file mode 100644 index 5aa5a44e3..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/Chart.yaml +++ /dev/null @@ -1,19 +0,0 @@ -annotations: - catalog.cattle.io/auto-install: rancher-logging-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Logging - catalog.cattle.io/namespace: cattle-logging-system - catalog.cattle.io/provides-gvr: logging.banzaicloud.io.clusterflow/v1beta1 - catalog.cattle.io/release-name: rancher-logging - catalog.cattle.io/ui-component: logging -apiVersion: v1 -appVersion: 3.9.4 -description: Collects and filter logs using highly configurable CRDs. Powered by Banzai - Cloud Logging Operator. -icon: https://charts.rancher.io/assets/logos/logging.svg -keywords: -- logging -- monitoring -- security -name: rancher-logging -version: 3.9.401+up3.9.4 diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/README.md b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/README.md deleted file mode 100644 index e2080b743..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/README.md +++ /dev/null @@ -1,131 +0,0 @@ - -# Logging operator Chart - -[Logging operator](https://github.com/banzaicloud/logging-operator) Managed centralized logging component fluentd and fluent-bit instance on cluster. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator -``` - -## Introduction - -This chart bootstraps a [Logging Operator](https://github.com/banzaicloud/logging-operator) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Prerequisites - -- Kubernetes 1.8+ with Beta APIs enabled - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```bash -$ helm install --name my-release banzaicloud-stable/logging-operator -``` - -### CRDs -Use `createCustomResource=false` with Helm v3 to avoid trying to create CRDs from the `crds` folder and from templates at the same time. - -The command deploys **Logging operator** on the Kubernetes cluster with the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - -## Uninstalling the Chart - -To uninstall/delete the `my-release` deployment: - -```bash -$ helm delete my-release -``` - -The command removes all Kubernetes components associated with the chart and deletes the release. - -## Configuration - -The following tables lists the configurable parameters of the logging-operator chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `image.repository` | Container image repository | `ghcr.io/banzaicloud/logging-operator` | -| `image.tag` | Container image tag | `3.9.4` | -| `image.pullPolicy` | Container pull policy | `IfNotPresent` | -| `nameOverride` | Override name of app | `` | -| `fullnameOverride` | Override full name of app | `` | -| `namespaceOverride` | Override namespace of app | `` | -| `watchNamespace` | Namespace to watch for LoggingOperator CRD | `` | -| `rbac.enabled` | Create rbac service account and roles | `true` | -| `rbac.psp.enabled` | Must be used with `rbac.enabled` true. If true, creates & uses RBAC resources required in the cluster with [Pod Security Policies](https://kubernetes.io/docs/concepts/policy/pod-security-policy/) enabled. | `false` | -| `priorityClassName` | Operator priorityClassName | `{}` | -| `affinity` | Node Affinity | `{}` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `tolerations` | Node Tolerations | `[]` | -| `nodeSelector` | Define which Nodes the Pods are scheduled on. | `{}` | -| `podLabels` | Define custom labels for logging-operator pods | `{}` | -| `annotations` | Define annotations for logging-operator pods | `{}` | -| `podSecurityContext` | Pod SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"runAsNonRoot": true, "runAsUser": 1000, "fsGroup": 2000}` | -| `securityContext` | Container SecurityContext for Logging operator. [More info](https://kubernetes.io/docs/concepts/policy/security-context/) | `{"allowPrivilegeEscalation": false, "readOnlyRootFilesystem": true}` | -| `createCustomResource` | Create CRDs. | `true` | -| `monitoring.serviceMonitor.enabled` | Create Prometheus Operator servicemonitor. | `false` | -| `global.seLinux.enabled` | Add seLinuxOptions to Logging resources, requires the [rke2-selinux RPM](https://github.com/rancher/rke2-selinux/releases) | `false` | - -Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example: - -```bash -$ helm install --name my-release -f values.yaml banzaicloud-stable/logging-operator -``` - -> **Tip**: You can use the default [values.yaml](values.yaml) - -## Installing Fluentd and Fluent-bit via logging - -The previous chart does **not** install `logging` resource to deploy Fluentd and Fluent-bit on cluster. To install them please use the [Logging Operator Logging](https://github.com/banzaicloud/logging-operator/tree/master/charts/logging-operator-logging) chart. - -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. -## tl;dr: - -```bash -$ helm repo add banzaicloud-stable https://kubernetes-charts.banzaicloud.com -$ helm repo update -$ helm install banzaicloud-stable/logging-operator-logging -``` - -## Configuration - -The following tables lists the configurable parameters of the logging-operator-logging chart and their default values. - -| Parameter | Description | Default | -| --------------------------------------------------- | ------------------------------------------------------ | ------------------------------ | -| `tls.enabled` | Enabled TLS communication between components | true | -| `tls.fluentdSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.fluentbitSecretName` | Specified secret name, which contain tls certs | This will overwrite automatic Helm certificate generation. | -| `tls.sharedKey` | Shared key between nodes (fluentd-fluentbit) | [autogenerated] | -| `fluentbit.enabled` | Install fluent-bit | true | -| `fluentbit.namespace` | Specified fluentbit installation namespace | same as operator namespace | -| `fluentbit.image.tag` | Fluentbit container image tag | `1.6.10` | -| `fluentbit.image.repository` | Fluentbit container image repository | `fluent/fluent-bit` | -| `fluentbit.image.pullPolicy` | Fluentbit container pull policy | `IfNotPresent` | -| `fluentd.enabled` | Install fluentd | true | -| `fluentd.image.tag` | Fluentd container image tag | `v1.11.5-alpine-12` | -| `fluentd.image.repository` | Fluentd container image repository | `ghcr.io/banzaicloud/fluentd` | -| `fluentd.image.pullPolicy` | Fluentd container pull policy | `IfNotPresent` | -| `fluentd.volumeModImage.tag` | Fluentd volumeModImage container image tag | `latest` | -| `fluentd.volumeModImage.repository` | Fluentd volumeModImage container image repository | `busybox` | -| `fluentd.volumeModImage.pullPolicy` | Fluentd volumeModImage container pull policy | `IfNotPresent` | -| `fluentd.configReloaderImage.tag` | Fluentd configReloaderImage container image tag | `v0.2.2` | -| `fluentd.configReloaderImage.repository` | Fluentd configReloaderImage container image repository | `jimmidyson/configmap-reload` | -| `fluentd.configReloaderImage.pullPolicy` | Fluentd configReloaderImage container pull policy | `IfNotPresent` | -| `fluentd.fluentdPvcSpec.accessModes` | Fluentd persistence volume access modes | `[ReadWriteOnce]` | -| `fluentd.fluentdPvcSpec.resources.requests.storage` | Fluentd persistence volume size | `21Gi` | -| `fluentd.fluentdPvcSpec.storageClassName` | Fluentd persistence volume storageclass | `"""` | diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/app-readme.md b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/app-readme.md deleted file mode 100644 index 2de4ab4c5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/app-readme.md +++ /dev/null @@ -1,22 +0,0 @@ -# Rancher Logging - -This chart is based off of the upstream [Banzai Logging Operator](https://banzaicloud.com/docs/one-eye/logging-operator/) chart. The chart deploys a logging operator and CRDs, which allows users to configure complex logging pipelines with a few simple custom resources. There are two levels of logging, which allow you to collect all logs in a cluster or from a single namespace. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/logging/v2.5/). - -## Namespace-level logging - -To collect logs from a single namespace, users create flows and these flows are connected to outputs or cluster outputs. - -## Cluster-level logging - -To collect logs from an entire cluster, users create cluster flows and cluster outputs. - -## CRDs - -- [Cluster Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusterflow_types/) - A cluster flow is a CRD (`ClusterFlow`) that defines what logs to collect from the entire cluster. The cluster flow must be deployed in the same namespace as the logging operator. -- [Cluster Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/clusteroutput_types/) - A cluster output is a CRD (`ClusterOutput`) that defines how to connect to logging providers so they can start collecting logs. The cluster output must be deployed in the same namespace as the logging operator. The convenience of using a cluster output is that either a cluster flow or flow can send logs to those providers without needing to define specific outputs in each namespace for each flow. -- [Flow](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/flow_types/) - A flow is a CRD (`Flow`) that defines what logs to collect from the namespace that it is deployed in. -- [Output](https://banzaicloud.com/docs/one-eye/logging-operator/crds/v1beta1/output_types/) - An output is a CRD (`Output`) that defines how to connect to logging providers so logs can be sent to the provider. - -For more information on how to configure the Helm chart, refer to the Helm README. diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/NOTES.txt b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/NOTES.txt deleted file mode 100644 index e69de29bb..000000000 diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/_helpers.tpl b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/_helpers.tpl deleted file mode 100644 index a8b86d9bd..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/_helpers.tpl +++ /dev/null @@ -1,123 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "logging-operator.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "logging-operator.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Provides the namespace the chart will be installed in using the builtin .Release.Namespace, -or, if provided, a manually overwritten namespace value. -*/}} -{{- define "logging-operator.namespace" -}} -{{- if .Values.namespaceOverride -}} -{{ .Values.namespaceOverride -}} -{{- else -}} -{{ .Release.Namespace }} -{{- end -}} -{{- end -}} - - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "logging-operator.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "logging-operator.labels" -}} -app.kubernetes.io/name: {{ include "logging-operator.name" . }} -helm.sh/chart: {{ include "logging-operator.chart" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- else -}} -{{- "" -}} -{{- end -}} -{{- end -}} - -{{- define "windowsEnabled" }} -{{- if not (kindIs "invalid" .Values.global.cattle.windows) }} -{{- if not (kindIs "invalid" .Values.global.cattle.windows.enabled) }} -{{- if .Values.global.cattle.windows.enabled }} -true -{{- end }} -{{- end }} -{{- end }} -{{- end }} - -{{- define "windowsPathPrefix" -}} -{{- trimSuffix "/" (default "c:\\" .Values.global.cattle.rkeWindowsPathPrefix | replace "\\" "/" | replace "//" "/" | replace "c:" "C:") -}} -{{- end -}} - -{{- define "windowsKubernetesFilter" -}} -{{- printf "kubernetes.%s" ((include "windowsPathPrefix" .) | replace ":" "" | replace "/" ".") -}} -{{- end -}} - -{{- define "windowsInputTailMount" -}} -{{- (include "windowsPathPrefix" .) | replace "C:" "" -}} -{{- end -}} - -{{/* -Set the controlplane selector based on kubernetes distribution -*/}} -{{- define "controlplaneSelector" -}} -{{- $master := or .Values.additionalLoggingSources.rke2.enabled .Values.additionalLoggingSources.k3s.enabled -}} -{{- $defaultSelector := $master | ternary (dict "node-role.kubernetes.io/master" "true") (dict "node-role.kubernetes.io/controlplane" "true") -}} -{{ default $defaultSelector .Values.additionalLoggingSources.kubeAudit.nodeSelector | toYaml }} -{{- end -}} - -{{/* -Set kube-audit file path prefix based on distribution -*/}} -{{- define "kubeAuditPathPrefix" -}} -{{- if .Values.additionalLoggingSources.rke.enabled -}} -{{ default "/var/log/kube-audit" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- else if .Values.additionalLoggingSources.rke2.enabled -}} -{{ default "/var/lib/rancher/rke2/server/logs" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- else -}} -{{ required "Directory PathPrefix of the kube-audit location is required" .Values.additionalLoggingSources.kubeAudit.pathPrefix }} -{{- end -}} -{{- end -}} - -{{/* -Set kube-audit file name based on distribution -*/}} -{{- define "kubeAuditFilename" -}} -{{- if .Values.additionalLoggingSources.rke.enabled -}} -{{ default "audit-log.json" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- else if .Values.additionalLoggingSources.rke2.enabled -}} -{{ default "audit.log" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- else -}} -{{ required "Filename of the kube-audit log is required" .Values.additionalLoggingSources.kubeAudit.auditFilename }} -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrole.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrole.yaml deleted file mode 100644 index 709eedb91..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrole.yaml +++ /dev/null @@ -1,167 +0,0 @@ -{{- if .Values.rbac.enabled }} - ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - creationTimestamp: null - name: {{ template "logging-operator.fullname" . }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - resources: - - endpoints - - namespaces - - nodes - verbs: - - get - - list - - watch -- apiGroups: - - "" - resources: - - persistentvolumeclaims - - pods - - serviceaccounts - - services - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - "" - - events.k8s.io - resources: - - events - verbs: - - create - - get - - list - - watch -- apiGroups: - - apps - resources: - - daemonsets - - replicasets - - statefulsets - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - apps - - extensions - resources: - - deployments - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - networking.k8s.io - resources: - - ingresses - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - extensions - - policy - resources: - - podsecuritypolicies - verbs: - - create - - delete - - get - - list - - patch - - update - - use - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows - - clusteroutputs - - flows - - loggings - - outputs - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - logging.banzaicloud.io - resources: - - clusterflows/status - - clusteroutputs/status - - flows/status - - loggings/status - - outputs/status - verbs: - - get - - patch - - update -- apiGroups: - - monitoring.coreos.com - resources: - - servicemonitors - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -- apiGroups: - - rbac.authorization.k8s.io - resources: - - clusterrolebindings - - clusterroles - - rolebindings - - roles - verbs: - - create - - delete - - get - - list - - patch - - update - - watch -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrolebinding.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrolebinding.yaml deleted file mode 100644 index 89d17d094..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "logging-operator.fullname" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -subjects: - - kind: ServiceAccount - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "logging-operator.fullname" . }} - - {{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/crds.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/crds.yaml deleted file mode 100644 index f573652d0..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/crds.yaml +++ /dev/null @@ -1,6 +0,0 @@ -{{- if .Values.createCustomResource -}} -{{- range $path, $bytes := .Files.Glob "crds/*.yaml" }} -{{ $.Files.Get $path }} ---- -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/deployment.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/deployment.yaml deleted file mode 100644 index 26d14cca2..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/deployment.yaml +++ /dev/null @@ -1,68 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - replicas: {{ .Values.replicaCount }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - {{- with .Values.podLabels }} - {{ toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.annotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - {{- with .Values.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - args: {{ range .Values.extraArgs }} - - {{ . -}} - {{ end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - resources: - {{- toYaml .Values.resources | nindent 12 }} - ports: - - name: http - containerPort: {{ .Values.http.port }} - - {{- if .Values.securityContext }} - securityContext: {{ toYaml .Values.securityContext | nindent 12 }} - {{- end }} - {{- if .Values.podSecurityContext }} - securityContext: {{ toYaml .Values.podSecurityContext | nindent 8 }} - {{- end }} - - {{- with .Values.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- if .Values.rbac.enabled }} - serviceAccountName: {{ include "logging-operator.fullname" . }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/aks/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/aks/logging.yaml deleted file mode 100644 index 346a665f7..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/aks/logging.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- if .Values.additionalLoggingSources.aks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-aks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "aks" - Path: "/var/log/azure/kubelet-status.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/eks/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/eks/logging.yaml deleted file mode 100644 index 900d181e5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/eks/logging.yaml +++ /dev/null @@ -1,90 +0,0 @@ -{{- if .Values.additionalLoggingSources.eks.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-eks - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "eks" - Path: "/var/log/messages" - Parser: "syslog" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/gke/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/gke/logging.yaml deleted file mode 100644 index 5731fb8a5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/gke/logging.yaml +++ /dev/null @@ -1,89 +0,0 @@ -{{- if .Values.additionalLoggingSources.gke.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-gke - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "gke" - Path: "/var/log/kube-proxy.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/configmap.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/configmap.yaml deleted file mode 100644 index c4b214aa2..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/configmap.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-k3s - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Flush 1 - Grace 5 - Daemon Off - Log_Level info - Coro_Stack_Size 24576 - - [INPUT] - Name systemd - Tag k3s - Path {{ .Values.systemdLogPath | default "/var/log/journal" }} - Systemd_Filter _SYSTEMD_UNIT=k3s.service - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/daemonset.yaml deleted file mode 100644 index 6597949c1..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/daemonset.yaml +++ /dev/null @@ -1,110 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd") }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-k3s-journald-aggregator - template: - metadata: - annotations: - checksum/config: {{ include (print $.Template.BasePath "/loggings/k3s/configmap.yaml") . | sha256sum }} - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-k3s-journald-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumeMounts: - - mountPath: /fluent-bit/etc/ - name: config - - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} - name: journal - readOnly: true - - mountPath: /etc/machine-id - name: machine-id - readOnly: true - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: "{{ .Release.Name }}-k3s-journald-aggregator" - volumes: - - name: config - configMap: - name: "{{ .Release.Name }}-k3s" - - name: journal - hostPath: - path: {{ .Values.systemdLogPath | default "/var/log/journal" }} - - name: machine-id - hostPath: - path: /etc/machine-id ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-k3s-journald-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-k3s-journald-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-k3s-journald-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-k3s-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-openrc.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-openrc.yaml deleted file mode 100644 index 8e826c73b..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-openrc.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "openrc")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/k3s.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-systemd.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-systemd.yaml deleted file mode 100644 index 6f297ce67..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/k3s/logging-k3s-systemd.yaml +++ /dev/null @@ -1,93 +0,0 @@ -{{- if and .Values.additionalLoggingSources.k3s.enabled (eq .Values.additionalLoggingSources.k3s.container_engine "systemd")}} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-k3s - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "k3s" - Path: "/var/log/syslog" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - extraVolumeMounts: - - source: "/var/log/" - destination: "/var/log" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/kube-audit/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/kube-audit/logging.yaml deleted file mode 100644 index 5095526f0..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/kube-audit/logging.yaml +++ /dev/null @@ -1,98 +0,0 @@ -{{- if .Values.additionalLoggingSources.kubeAudit.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-kube-audit - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - {{- if .Values.additionalLoggingSources.kubeAudit.loggingRef }} - loggingRef: {{ .Values.additionalLoggingSources.kubeAudit.loggingRef }} - {{- end }} - fluentbit: - disableKubernetesFilter: true - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: {{ .Values.additionalLoggingSources.kubeAudit.fluentbit.logTag }} - Path: /kube-audit-logs/{{ template "kubeAuditFilename" . }} - Parser: json - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - extraVolumeMounts: - - source: {{ template "kubeAuditPathPrefix" . }} - destination: "/kube-audit-logs" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.additionalLoggingSources.kubeAudit.fluentbit.tolerations)) }} - tolerations: - {{- toYaml . | nindent 6 }} - {{- end }} - nodeSelector: - {{- include "controlplaneSelector" . | nindent 6 }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/configmap.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/configmap.yaml deleted file mode 100644 index ab91d93e2..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/configmap.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Log_Level {{ .Values.additionalLoggingSources.rke.fluentbit.log_level }} - Parsers_File parsers.conf - - [INPUT] - Tag rke - Name tail - Path_Key filename - Parser docker - DB /tail-db/tail-containers-state.db - Mem_Buf_Limit {{ .Values.additionalLoggingSources.rke.fluentbit.mem_buffer_limit }} - Path /var/lib/rancher/rke/log/*.log - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/daemonset.yaml deleted file mode 100644 index e08ee8559..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke/daemonset.yaml +++ /dev/null @@ -1,122 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke.enabled }} -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke-aggregator - spec: - containers: - - name: fluentbit - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - volumeMounts: - - mountPath: /var/lib/rancher/rke/log/ - name: indir - - mountPath: {{ $containers }} - name: containers - - mountPath: /tail-db - name: positiondb - - mountPath: /fluent-bit/etc/fluent-bit.conf - name: config - subPath: fluent-bit.conf - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumes: - - name: indir - hostPath: - path: /var/lib/rancher/rke/log/ - type: DirectoryOrCreate - - name: containers - hostPath: - path: {{ $containers }} - type: DirectoryOrCreate - - name: positiondb - emptyDir: {} - - name: config - configMap: - name: "{{ .Release.Name }}-rke" - serviceAccountName: "{{ .Release.Name }}-rke-aggregator" - {{- $total_tolerations := concat (.Values.tolerations) (.Values.fluentbit.tolerations) }} - {{- with $total_tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - allowedHostPaths: - - pathPrefix: {{ $containers }} - readOnly: false - - pathPrefix: /var/lib/rancher/rke/log/ - readOnly: false - - pathPrefix: /var/lib/rancher/logging/ - readOnly: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/configmap.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/configmap.yaml deleted file mode 100644 index c2323af92..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/configmap.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Release.Name }}-rke2 - labels: -{{ include "logging-operator.labels" . | indent 4 }} -data: - fluent-bit.conf: | - [SERVICE] - Flush 1 - Grace 5 - Daemon Off - Log_Level info - Coro_Stack_Size 24576 - - [INPUT] - Name systemd - Tag rke2 - Path {{ .Values.systemdLogPath | default "/var/log/journal" }} - Systemd_Filter _SYSTEMD_UNIT=rke2-server.service - Systemd_Filter _SYSTEMD_UNIT=rke2-agent.service - - [OUTPUT] - Name forward - Match * - Host {{ .Release.Name }}-fluentd.{{ .Release.Namespace }}.svc - Port 24240 - Retry_Limit False -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/daemonset.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/daemonset.yaml deleted file mode 100644 index 6025e04b4..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/daemonset.yaml +++ /dev/null @@ -1,108 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - selector: - matchLabels: - name: {{ .Release.Name }}-rke2-journald-aggregator - template: - metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" - labels: - name: {{ .Release.Name }}-rke2-journald-aggregator - spec: - containers: - - name: fluentd - image: "{{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }}:{{ .Values.images.fluentbit.tag }}" - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - volumeMounts: - - mountPath: /fluent-bit/etc/ - name: config - - mountPath: {{ .Values.systemdLogPath | default "/var/log/journal" }} - name: journal - readOnly: true - - mountPath: /etc/machine-id - name: machine-id - readOnly: true - {{- with .Values.tolerations }} - tolerations: {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: "{{ .Release.Name }}-rke2-journald-aggregator" - volumes: - - name: config - configMap: - name: "{{ .Release.Name }}-rke2" - - name: journal - hostPath: - path: {{ .Values.systemdLogPath | default "/var/log/journal" }} - - name: machine-id - hostPath: - path: /etc/machine-id ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -{{- if .Values.global.psp.enabled }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -rules: - - apiGroups: - - policy - resourceNames: - - "{{ .Release.Name }}-rke2-journald-aggregator" - resources: - - podsecuritypolicies - verbs: - - use ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: "{{ .Release.Name }}-rke2-journald-aggregator" -subjects: - - kind: ServiceAccount - name: "{{ .Release.Name }}-rke2-journald-aggregator" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: "{{ .Release.Name }}-rke2-journald-aggregator" - namespace: "{{ .Release.Namespace }}" -spec: - allowPrivilegeEscalation: false - fsGroup: - rule: RunAsAny - readOnlyRootFilesystem: true - runAsUser: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - configMap - - emptyDir - - secret - - hostPath -{{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/logging-rke2-containers.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/logging-rke2-containers.yaml deleted file mode 100644 index d8c83513a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/rke2/logging-rke2-containers.yaml +++ /dev/null @@ -1,98 +0,0 @@ -{{- if .Values.additionalLoggingSources.rke2.enabled }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }}-rke2-containers - namespace: {{ .Release.Namespace }} -spec: - controlNamespace: {{ .Release.Namespace }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - inputTail: - Tag: "rke2" - Path: "/var/log/containers/*rke*.log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - extraVolumeMounts: - - source: "/var/log/containers/" - destination: "/var/log/containers/" - readOnly: true - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if or .Values.global.psp.enabled .Values.global.seLinux.enabled }} - security: - {{- end }} - {{- if or .Values.global.psp.enabled }} - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/root/logging.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/root/logging.yaml deleted file mode 100644 index 9a2b3bb7a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/loggings/root/logging.yaml +++ /dev/null @@ -1,154 +0,0 @@ -{{- $containers := printf "%s/containers/" (default "/var/lib/docker" .Values.global.dockerRootDirectory) }} -apiVersion: logging.banzaicloud.io/v1beta1 -kind: Logging -metadata: - name: {{ .Release.Name }} - namespace: {{ .Release.Namespace }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - controlNamespace: {{ .Release.Namespace }} - {{- if (include "windowsEnabled" .) }} - nodeAgents: - - name: win-agent - profile: windows - nodeAgentFluentbit: - daemonSet: - spec: - template: - spec: - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }}" - name: fluent-bit - tls: - enabled: {{ .Values.nodeAgents.tls.enabled | default false }} - {{- if .Values.additionalLoggingSources.rke.enabled }} - - name: win-agent-rke - profile: windows - nodeAgentFluentbit: - filterKubernetes: - Kube_Tag_Prefix: "{{ template "windowsKubernetesFilter" . }}.var.lib.rancher.rke.log." - inputTail: - Path: "{{ template "windowsPathPrefix" . }}/var/lib/rancher/rke/log" - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - extraVolumeMounts: - - source: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" - destination: "{{ template "windowsInputTailMount" . }}/var/lib/rancher/rke/log" - readOnly: true - daemonSet: - spec: - template: - spec: - containers: - - image: "{{ template "system_default_registry" . }}{{ .Values.images.nodeagent_fluentbit.repository }}:{{ .Values.images.nodeagent_fluentbit.tag }}" - name: fluent-bit - tls: - enabled: {{ .Values.nodeAgents.tls.enabled | default false }} - {{- end }} - {{- end }} - fluentbit: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentbit.repository }} - tag: {{ .Values.images.fluentbit.tag }} - {{- if or .Values.fluentbit.inputTail.Buffer_Chunk_Size .Values.fluentbit.inputTail.Buffer_Max_Size .Values.fluentbit.inputTail.Mem_Buf_Limit .Values.fluentbit.inputTail.Multiline_Flush .Values.fluentbit.inputTail.Skip_Long_Lines }} - inputTail: - {{- if .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - Buffer_Chunk_Size: {{ .Values.fluentbit.inputTail.Buffer_Chunk_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Buffer_Max_Size }} - Buffer_Max_Size: {{ .Values.fluentbit.inputTail.Buffer_Max_Size }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Mem_Buf_Limit }} - Mem_Buf_Limit: {{ .Values.fluentbit.inputTail.Mem_Buf_Limit }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Multiline_Flush }} - Multiline_Flush: {{ .Values.fluentbit.inputTail.Multiline_Flush }} - {{- end }} - {{- if .Values.fluentbit.inputTail.Skip_Long_Lines }} - Skip_Long_Lines: {{ .Values.fluentbit.inputTail.Skip_Long_Lines }} - {{- end }} - {{- end }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentbit.bufferStorage }} - bufferStorage: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - {{- if or .Values.global.psp.enabled .Values.global.seLinux.enabled }} - security: - {{- end }} - {{- if .Values.global.psp.enabled }} - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- if .Values.global.seLinux.enabled }} - securityContext: - seLinuxOptions: - type: rke_logreader_t - {{- end }} - {{- if .Values.global.dockerRootDirectory }} - mountPath: {{ $containers }} - extraVolumeMounts: - - source: {{ $containers }} - destination: {{ $containers }} - readOnly: true - {{- end }} - {{- with (concat (.Values.tolerations) (.Values.fluentbit.tolerations)) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentbit.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - fluentd: - image: - repository: {{ template "system_default_registry" . }}{{ .Values.images.fluentd.repository }} - tag: {{ .Values.images.fluentd.tag }} - configReloaderImage: - repository: {{ template "system_default_registry" . }}{{ .Values.images.config_reloader.repository }} - tag: {{ .Values.images.config_reloader.tag }} - {{- if not .Values.disablePvc }} - {{- with .Values.fluentd.bufferStorageVolume }} - bufferStorageVolume: {{- toYaml . | nindent 6 }} - {{- end }} - {{- end }} - disablePvc: {{ .Values.disablePvc }} - {{- if .Values.fluentd.replicas }} - scaling: - replicas: {{ .Values.fluentd.replicas }} - {{- end }} - {{- if .Values.global.psp.enabled }} - security: - podSecurityPolicyCreate: true - roleBasedAccessControlCreate: true - {{- end }} - {{- with (default .Values.tolerations .Values.fluentd.tolerations) }} - tolerations: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with (default .Values.nodeSelector .Values.fluentd.nodeSelector) }} - nodeSelector: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.resources }} - resources: {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.fluentd.livenessProbe }} - livenessProbe: {{- toYaml . | nindent 6 }} - {{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/psp.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/psp.yaml deleted file mode 100644 index 420067f59..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/psp.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{ if and .Values.rbac.enabled .Values.rbac.psp.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: psp.logging-operator - namespace: {{ include "logging-operator.namespace" . }} - annotations: - seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - seccomp.security.alpha.kubernetes.io/defaultProfileName: 'runtime/default' - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - readOnlyRootFilesystem: true - privileged: false - allowPrivilegeEscalation: false - runAsUser: - rule: MustRunAsNonRoot - fsGroup: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - supplementalGroups: - rule: MustRunAs - ranges: - - min: 1 - max: 65535 - seLinux: - rule: RunAsAny - volumes: - - secret - - configMap -{{ end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/service.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/service.yaml deleted file mode 100644 index f419ae2c4..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -spec: - type: ClusterIP - {{- with .Values.http.service.clusterIP }} - clusterIP: {{ . }} - {{- end }} - ports: - - port: {{ .Values.http.port }} - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: {{ include "logging-operator.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceMonitor.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceMonitor.yaml deleted file mode 100644 index 1bb762cde..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceMonitor.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{ if .Values.monitoring.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ include "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- with .Values.monitoring.serviceMonitor.additionalLabels }} - {{- toYaml . | nindent 4 }} -{{- end }} -spec: - selector: - matchLabels: -{{ include "logging-operator.labels" . | indent 6 }} - endpoints: - - port: http - path: /metrics - {{- with .Values.monitoring.serviceMonitor.metricsRelabelings }} - metricRelabelings: - {{- toYaml . | nindent 6 }} - {{- end }} - {{- with .Values.monitoring.serviceMonitor.relabelings }} - relabelings: - {{- toYaml . | nindent 4 }} - {{- end }} - namespaceSelector: - matchNames: - - {{ include "logging-operator.namespace" . }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceaccount.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceaccount.yaml deleted file mode 100644 index cbb2a94b4..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/serviceaccount.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.rbac.enabled }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "logging-operator.fullname" . }} - namespace: {{ include "logging-operator.namespace" . }} - labels: -{{ include "logging-operator.labels" . | indent 4 }} -{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/userroles.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/userroles.yaml deleted file mode 100644 index f4136b09a..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/userroles.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-admin" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - verbs: - - "*" ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: "logging-view" - labels: - rbac.authorization.k8s.io/aggregate-to-admin: "true" - rbac.authorization.k8s.io/aggregate-to-view: "true" - rbac.authorization.k8s.io/aggregate-to-edit: "true" -rules: - - apiGroups: - - "logging.banzaicloud.io" - resources: - - flows - - outputs - - clusterflows - - clusteroutputs - verbs: - - get - - list - - watch diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install-crd.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install-crd.yaml deleted file mode 100644 index 66e8725e5..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install-crd.yaml +++ /dev/null @@ -1,18 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterFlow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/ClusterOutput" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Flow" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Logging" false -}} -# {{- set $found "logging.banzaicloud.io/v1beta1/Output" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install.yaml deleted file mode 100644 index bd624cc4b..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/templates/validate-install.yaml +++ /dev/null @@ -1,5 +0,0 @@ -#{{- if .Values.global.dockerRootDirectory }} -#{{- if or (hasSuffix "/containers" .Values.global.dockerRootDirectory) (hasSuffix "/" .Values.global.dockerRootDirectory) }} -#{{- required "global.dockerRootDirectory must not end with suffix: '/' or '/containers'" "" -}} -#{{- end }} -#{{- end }} diff --git a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/values.yaml b/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/values.yaml deleted file mode 100644 index 86118ab06..000000000 --- a/charts/rancher-logging/rancher-logging/3.9.401+up3.9.4/values.yaml +++ /dev/null @@ -1,199 +0,0 @@ -# Default values for logging-operator. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -replicaCount: 1 - -image: - repository: rancher/mirrored-banzaicloud-logging-operator - tag: 3.9.4 - pullPolicy: IfNotPresent - -extraArgs: [] -imagePullSecrets: [] -nameOverride: "" -fullnameOverride: "" -namespaceOverride: "" - -## Pod custom labels -## -podLabels: {} - -annotations: {} - -## Deploy CRDs used by Logging Operator. -## -createCustomResource: false - -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:'. - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - -nodeSelector: - kubernetes.io/os: linux - -tolerations: - - key: cattle.io/os - operator: "Equal" - value: "linux" - effect: NoSchedule - -affinity: {} - -http: - # http listen port number - port: 8080 - # Service definition for query http service - service: - type: ClusterIP - clusterIP: None - # Annotations to query http service - annotations: {} - # Labels to query http service - labels: {} - -# These "rbac" settings match the upstream defaults. For only using psp in the overlay files, which -# include the default Logging CRs created, see the "global.psp" setting. To enable psp for the entire -# chart, enable both "rbac.psp" and "global.psp" (this may require further changes to the chart). -rbac: - enabled: true - psp: - enabled: false - -## SecurityContext holds pod-level security attributes and common container settings. -## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false -## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ -## -podSecurityContext: {} -# runAsNonRoot: true -# runAsUser: 1000 -# fsGroup: 2000 -securityContext: {} -# allowPrivilegeEscalation: false -# readOnlyRootFilesystem: true - # capabilities: - # drop: ["ALL"] - -## Operator priorityClassName -## -priorityClassName: {} - -monitoring: - # Create a Prometheus Operator ServiceMonitor object - serviceMonitor: - enabled: false - additionalLabels: {} - metricRelabelings: [] - relabelings: [] - -disablePvc: true - -systemdLogPath: "/run/log/journal" - -additionalLoggingSources: - rke: - enabled: false - fluentbit: - log_level: "info" - mem_buffer_limit: "5MB" - rke2: - enabled: false - k3s: - enabled: false - container_engine: "systemd" - aks: - enabled: false - eks: - enabled: false - gke: - enabled: false - kubeAudit: - auditFilename: "" - enabled: false - pathPrefix: "" - fluentbit: - logTag: kube-audit - tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -images: - config_reloader: - repository: rancher/mirrored-jimmidyson-configmap-reload - tag: v0.4.0 - fluentbit: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.6.10 - fluentbit_debug: - repository: rancher/mirrored-fluent-fluent-bit - tag: 1.6.10-debug - fluentd: - repository: rancher/mirrored-banzaicloud-fluentd - tag: v1.11.5-alpine-12 - nodeagent_fluentbit: - os: "windows,linux" - repository: rancher/fluent-bit - tag: 1.6.10 - -# These settings apply to every Logging CR, including vendor Logging CRs enabled in "additionalLoggingSources". -# Changing these affects every Logging CR installed. -nodeAgents: - tls: - enabled: false -fluentd: - bufferStorageVolume: {} - livenessProbe: - tcpSocket: - port: 24240 - initialDelaySeconds: 30 - periodSeconds: 15 - nodeSelector: {} - resources: {} - tolerations: {} -fluentbit: - inputTail: - Buffer_Chunk_Size: "" - Buffer_Max_Size: "" - Mem_Buf_Limit: "" - Multiline_Flush: "" - Skip_Long_Lines: "" - resources: {} - tolerations: - - key: node-role.kubernetes.io/controlplane - value: "true" - effect: NoSchedule - - key: node-role.kubernetes.io/etcd - value: "true" - effect: NoExecute - -global: - cattle: - systemDefaultRegistry: "" - # Uncomment the below two lines to either enable or disable Windows logging. If this chart is - # installed via the Rancher UI, it will set this value to "true" if the cluster is a Windows - # cluster. In that scenario, if you would like to disable Windows logging on Windows clusters, - # set the value below to "false". - # windows: - # enabled: true - # Change the "dockerRootDirectory" if the default Docker directory has changed. - dockerRootDirectory: "" - # This psp setting differs from the upstream "rbac.psp" by only enabling psp settings for the - # overlay files, which include the Logging CRs created, whereas the upstream "rbac.psp" affects the - # logging operator. - psp: - enabled: true - rkeWindowsPathPrefix: "c:\\" - seLinux: - enabled: false diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/Chart.yaml deleted file mode 100644 index 2f1bd9e29..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/release-name: rancher-monitoring-crd -apiVersion: v1 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 14.5.101+up14.5.0 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/README.md b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/README.md deleted file mode 100644 index e0b63e026..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/README.md +++ /dev/null @@ -1,24 +0,0 @@ -# rancher-monitoring-crd -A Rancher chart that installs the CRDs used by rancher-monitoring. - -## How does this chart work? - -This chart marshalls all of the CRD files placed in the `crd-manifest` directory into a ConfigMap that is installed onto a cluster alongside relevant RBAC (ServiceAccount, ClusterRoleBinding, ClusterRole, and PodSecurityPolicy). - -Once the relevant dependent resourcees are installed / upgraded / rolled back, this chart executes a post-install / post-upgrade / post-rollback Job that: -- Patches any existing versions of the CRDs contained within the `crd-manifest` on the cluster to set `spec.preserveUnknownFields=false`; this step is required since, based on [Kubernetes docs](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning) and a [known workaround](https://github.com/kubernetes-sigs/controller-tools/issues/476#issuecomment-691519936), such CRDs cannot be upgraded normally from `apiextensions.k8s.io/v1beta1` to `apiextensions.k8s.io/v1`. -- Runs a `kubectl apply` on the CRDs that are contained within the crd-manifest ConfigMap to upgrade CRDs in the cluster - -On an uninstall, this chart executes a separate post-delete Job that: -- Patches any existing versions of the CRDs contained within `crd-manifest` on the cluster to set `metadata.finalizers=[]` -- Runs a `kubectl delete` on the CRDs that are contained within the crd-manifest ConfigMap to clean up the CRDs from the cluster - -Note: If the relevant CRDs already existed in the cluster at the time of install, this chart will absorb ownership of the lifecycle of those CRDs; therefore, on a `helm uninstall`, those CRDs will also be removed from the cluster alongside this chart. - -## Why can't we just place the CRDs in the templates/ directory of the main chart? - -In Helm today, you cannot declare a CRD and declare a resource of that CRD's kind in templates/ without encountering a failure on render. - -## [Helm 3] Why can't we just place the CRDs in the crds/ directory of the main chart? - -The Helm 3 `crds/` directory only supports the installation of CRDs, but does not support the upgrade and removal of CRDs, unlike what this chart facilitiates. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagerconfigs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagerconfigs.yaml deleted file mode 100644 index b2ed16186..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagerconfigs.yaml +++ /dev/null @@ -1,1869 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: alertmanagerconfigs.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: AlertmanagerConfig - listKind: AlertmanagerConfigList - plural: alertmanagerconfigs - singular: alertmanagerconfig - scope: Namespaced - versions: - - name: v1alpha1 - schema: - openAPIV3Schema: - description: AlertmanagerConfig defines a namespaced AlertmanagerConfig to be aggregated across multiple namespaces configuring one Alertmanager cluster. - 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: AlertmanagerConfigSpec is a specification of the desired behavior of the Alertmanager configuration. By definition, the Alertmanager configuration only applies to alerts for which the `namespace` label is equal to the namespace of the AlertmanagerConfig resource. - properties: - inhibitRules: - description: List of inhibition rules. The rules will only apply to alerts matching the resource’s namespace. - items: - description: InhibitRule defines an inhibition rule that allows to mute alerts when other alerts are already firing. See https://prometheus.io/docs/alerting/latest/configuration/#inhibit_rule - properties: - equal: - description: Labels that must have an equal value in the source and target alert for the inhibition to take effect. - items: - type: string - type: array - sourceMatch: - description: Matchers for which one or more alerts have to exist for the inhibition to take effect. The operator enforces that the alert matches the resource’s namespace. - items: - description: Matcher defines how to match on alert's labels. - properties: - name: - description: Label to match. - minLength: 1 - type: string - regex: - description: Whether to match on equality (false) or regular-expression (true). - type: boolean - value: - description: Label value to match. - type: string - required: - - name - type: object - type: array - targetMatch: - description: Matchers that have to be fulfilled in the alerts to be muted. The operator enforces that the alert matches the resource’s namespace. - items: - description: Matcher defines how to match on alert's labels. - properties: - name: - description: Label to match. - minLength: 1 - type: string - regex: - description: Whether to match on equality (false) or regular-expression (true). - type: boolean - value: - description: Label value to match. - type: string - required: - - name - type: object - type: array - type: object - type: array - receivers: - description: List of receivers. - items: - description: Receiver defines one or more notification integrations. - properties: - emailConfigs: - description: List of Email configurations. - items: - description: EmailConfig configures notifications via Email. - properties: - authIdentity: - description: The identity to use for authentication. - type: string - authPassword: - description: The secret's key that contains the password to use for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - authSecret: - description: The secret's key that contains the CRAM-MD5 secret. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - authUsername: - description: The username to use for authentication. - type: string - from: - description: The sender address. - type: string - headers: - description: Further headers email header key/value pairs. Overrides any headers previously set by the notification implementation. - items: - description: KeyValue defines a (key, value) tuple. - properties: - key: - description: Key of the tuple. - minLength: 1 - type: string - value: - description: Value of the tuple. - type: string - required: - - key - - value - type: object - type: array - hello: - description: The hostname to identify to the SMTP server. - type: string - html: - description: The HTML body of the email notification. - type: string - requireTLS: - description: The SMTP TLS requirement. Note that Go does not support unencrypted connections to remote SMTP endpoints. - type: boolean - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - smarthost: - description: The SMTP host through which emails are sent. - type: string - text: - description: The text body of the email notification. - type: string - tlsConfig: - description: TLS configuration - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - to: - description: The email address to send notifications to. - type: string - type: object - type: array - name: - description: Name of the receiver. Must be unique across all items from the list. - minLength: 1 - type: string - opsgenieConfigs: - description: List of OpsGenie configurations. - items: - description: OpsGenieConfig configures notifications via OpsGenie. See https://prometheus.io/docs/alerting/latest/configuration/#opsgenie_config - properties: - apiKey: - description: The secret's key that contains the OpsGenie API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - apiURL: - description: The URL to send OpsGenie API requests to. - type: string - description: - description: Description of the incident. - type: string - details: - description: A set of arbitrary key/value pairs that provide further detail about the incident. - items: - description: KeyValue defines a (key, value) tuple. - properties: - key: - description: Key of the tuple. - minLength: 1 - type: string - value: - description: Value of the tuple. - type: string - required: - - key - - value - type: object - type: array - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - message: - description: Alert text limited to 130 characters. - type: string - note: - description: Additional alert note. - type: string - priority: - description: Priority level of alert. Possible values are P1, P2, P3, P4, and P5. - type: string - responders: - description: List of responders responsible for notifications. - items: - description: OpsGenieConfigResponder defines a responder to an incident. One of `id`, `name` or `username` has to be defined. - properties: - id: - description: ID of the responder. - type: string - name: - description: Name of the responder. - type: string - type: - description: Type of responder. - minLength: 1 - type: string - username: - description: Username of the responder. - type: string - required: - - type - type: object - type: array - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - source: - description: Backlink to the sender of the notification. - type: string - tags: - description: Comma separated list of tags attached to the notifications. - type: string - type: object - type: array - pagerdutyConfigs: - description: List of PagerDuty configurations. - items: - description: PagerDutyConfig configures notifications via PagerDuty. See https://prometheus.io/docs/alerting/latest/configuration/#pagerduty_config - properties: - class: - description: The class/type of the event. - type: string - client: - description: Client identification. - type: string - clientURL: - description: Backlink to the sender of notification. - type: string - component: - description: The part or component of the affected system that is broken. - type: string - description: - description: Description of the incident. - type: string - details: - description: Arbitrary key/value pairs that provide further detail about the incident. - items: - description: KeyValue defines a (key, value) tuple. - properties: - key: - description: Key of the tuple. - minLength: 1 - type: string - value: - description: Value of the tuple. - type: string - required: - - key - - value - type: object - type: array - group: - description: A cluster or grouping of sources. - type: string - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - routingKey: - description: The secret's key that contains the PagerDuty integration key (when using Events API v2). Either this field or `serviceKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - serviceKey: - description: The secret's key that contains the PagerDuty service key (when using integration type "Prometheus"). Either this field or `routingKey` needs to be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - severity: - description: Severity of the incident. - type: string - url: - description: The URL to send requests to. - type: string - type: object - type: array - pushoverConfigs: - description: List of Pushover configurations. - items: - description: PushoverConfig configures notifications via Pushover. See https://prometheus.io/docs/alerting/latest/configuration/#pushover_config - properties: - expire: - description: How long your notification will continue to be retried for, unless the user acknowledges the notification. - type: string - html: - description: Whether notification message is HTML or plain text. - type: boolean - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - message: - description: Notification message. - type: string - priority: - description: Priority, see https://pushover.net/api#priority - type: string - retry: - description: How often the Pushover servers will send the same notification to the user. Must be at least 30 seconds. - type: string - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - sound: - description: The name of one of the sounds supported by device clients to override the user's default sound choice - type: string - title: - description: Notification title. - type: string - token: - description: The secret's key that contains the registered application’s API token, see https://pushover.net/apps. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - url: - description: A supplementary URL shown alongside the message. - type: string - urlTitle: - description: A title for supplementary URL, otherwise just the URL is shown - type: string - userKey: - description: The secret's key that contains the recipient user’s user key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - type: array - slackConfigs: - description: List of Slack configurations. - items: - description: SlackConfig configures notifications via Slack. See https://prometheus.io/docs/alerting/latest/configuration/#slack_config - properties: - actions: - description: A list of Slack actions that are sent with each notification. - items: - description: SlackAction configures a single Slack action that is sent with each notification. See https://api.slack.com/docs/message-attachments#action_fields and https://api.slack.com/docs/message-buttons for more information. - properties: - confirm: - description: SlackConfirmationField protect users from destructive actions or particularly distinguished decisions by asking them to confirm their button click one more time. See https://api.slack.com/docs/interactive-message-field-guide#confirmation_fields for more information. - properties: - dismissText: - type: string - okText: - type: string - text: - minLength: 1 - type: string - title: - type: string - required: - - text - type: object - name: - type: string - style: - type: string - text: - minLength: 1 - type: string - type: - minLength: 1 - type: string - url: - type: string - value: - type: string - required: - - text - - type - type: object - type: array - apiURL: - description: The secret's key that contains the Slack webhook URL. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - callbackId: - type: string - channel: - description: The channel or user to send notifications to. - type: string - color: - type: string - fallback: - type: string - fields: - description: A list of Slack fields that are sent with each notification. - items: - description: SlackField configures a single Slack field that is sent with each notification. Each field must contain a title, value, and optionally, a boolean value to indicate if the field is short enough to be displayed next to other fields designated as short. See https://api.slack.com/docs/message-attachments#fields for more information. - properties: - short: - type: boolean - title: - minLength: 1 - type: string - value: - minLength: 1 - type: string - required: - - title - - value - type: object - type: array - footer: - type: string - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - iconEmoji: - type: string - iconURL: - type: string - imageURL: - type: string - linkNames: - type: boolean - mrkdwnIn: - items: - type: string - type: array - pretext: - type: string - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - shortFields: - type: boolean - text: - type: string - thumbURL: - type: string - title: - type: string - titleLink: - type: string - username: - type: string - type: object - type: array - victoropsConfigs: - description: List of VictorOps configurations. - items: - description: VictorOpsConfig configures notifications via VictorOps. See https://prometheus.io/docs/alerting/latest/configuration/#victorops_config - properties: - apiKey: - description: The secret's key that contains the API key to use when talking to the VictorOps API. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - apiUrl: - description: The VictorOps API URL. - type: string - customFields: - description: Additional custom fields for notification. - items: - description: KeyValue defines a (key, value) tuple. - properties: - key: - description: Key of the tuple. - minLength: 1 - type: string - value: - description: Value of the tuple. - type: string - required: - - key - - value - type: object - type: array - entityDisplayName: - description: Contains summary of the alerted problem. - type: string - httpConfig: - description: The HTTP client's configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - messageType: - description: Describes the behavior of the alert (CRITICAL, WARNING, INFO). - type: string - monitoringTool: - description: The monitoring tool the state message is from. - type: string - routingKey: - description: A key used to map the alert to a team. - type: string - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - stateMessage: - description: Contains long explanation of the alerted problem. - type: string - type: object - type: array - webhookConfigs: - description: List of webhook configurations. - items: - description: WebhookConfig configures notifications via a generic receiver supporting the webhook payload. See https://prometheus.io/docs/alerting/latest/configuration/#webhook_config - properties: - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - maxAlerts: - description: Maximum number of alerts to be sent per webhook message. When 0, all alerts are included. - format: int32 - minimum: 0 - type: integer - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - url: - description: The URL to send HTTP POST requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. - type: string - urlSecret: - description: The secret's key that contains the webhook URL to send HTTP requests to. `urlSecret` takes precedence over `url`. One of `urlSecret` and `url` should be defined. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - type: array - wechatConfigs: - description: List of WeChat configurations. - items: - description: WeChatConfig configures notifications via WeChat. See https://prometheus.io/docs/alerting/latest/configuration/#wechat_config - properties: - agentID: - type: string - apiSecret: - description: The secret's key that contains the WeChat API key. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - apiURL: - description: The WeChat API URL. - type: string - corpID: - description: The corp id for authentication. - type: string - httpConfig: - description: HTTP client configuration. - properties: - basicAuth: - description: BasicAuth for the client. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: The secret's key that contains the bearer token to be used by the client for authentication. The secret needs to be in the same namespace as the AlertmanagerConfig object and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - proxyURL: - description: Optional proxy URL. - type: string - tlsConfig: - description: TLS configuration for the client. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - message: - description: API request data as defined by the WeChat API. - type: string - messageType: - type: string - sendResolved: - description: Whether or not to notify about resolved alerts. - type: boolean - toParty: - type: string - toTag: - type: string - toUser: - type: string - type: object - type: array - required: - - name - type: object - type: array - route: - description: The Alertmanager route definition for alerts matching the resource’s namespace. If present, it will be added to the generated Alertmanager configuration as a first-level route. - properties: - continue: - description: Boolean indicating whether an alert should continue matching subsequent sibling nodes. It will always be overridden to true for the first-level route by the Prometheus operator. - type: boolean - groupBy: - description: List of labels to group by. - items: - type: string - type: array - groupInterval: - description: How long to wait before sending an updated notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). - type: string - groupWait: - description: How long to wait before sending the initial notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). - type: string - matchers: - description: 'List of matchers that the alert’s labels should match. For the first level route, the operator removes any existing equality and regexp matcher on the `namespace` label and adds a `namespace: ` matcher.' - items: - description: Matcher defines how to match on alert's labels. - properties: - name: - description: Label to match. - minLength: 1 - type: string - regex: - description: Whether to match on equality (false) or regular-expression (true). - type: boolean - value: - description: Label value to match. - type: string - required: - - name - type: object - type: array - receiver: - description: Name of the receiver for this route. If not empty, it should be listed in the `receivers` field. - type: string - repeatInterval: - description: How long to wait before repeating the last notification. Must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). - type: string - routes: - description: Child routes. - items: - x-kubernetes-preserve-unknown-fields: true - type: array - type: object - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagers.yaml deleted file mode 100644 index 724d488b0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-alertmanagers.yaml +++ /dev/null @@ -1,3218 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: alertmanagers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: Alertmanager - listKind: AlertmanagerList - plural: alertmanagers - singular: alertmanager - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: The version of Alertmanager - jsonPath: .spec.version - name: Version - type: string - - description: The desired replicas number of Alertmanagers - jsonPath: .spec.replicas - name: Replicas - type: integer - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Alertmanager describes an Alertmanager cluster. - 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: 'Specification of the desired behavior of the Alertmanager cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalPeers: - description: AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster. - items: - type: string - type: array - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertmanagerConfigNamespaceSelector: - description: Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. - 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 - alertmanagerConfigSelector: - description: AlertmanagerConfigs to be selected for to merge and configure Alertmanager with. - 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 - baseImage: - description: 'Base image that is used to deploy pods, without tag. Deprecated: use ''image'' instead' - type: string - clusterAdvertiseAddress: - description: 'ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918' - type: string - clusterGossipInterval: - description: Interval between gossip attempts. - type: string - clusterPeerTimeout: - description: Timeout for cluster peering. - type: string - clusterPushpullInterval: - description: Interval between pushpull attempts. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - items: - type: string - type: array - configSecret: - description: ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config. - type: string - containers: - description: 'Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `alertmanager` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - externalUrl: - description: The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. - type: string - forceEnableClusterMode: - description: ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Alertmanager is being configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Alertmanager configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. Note this is only for the Alertmanager UI, not the gossip communication. - type: boolean - logFormat: - description: Log format for Alertmanager to be configured with. - type: string - logLevel: - description: Log level for Alertmanager to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - paused: - description: If set to true all actions on the underlying managed objects are not goint to be performed, except for delete actions. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are propagated to the alertmanager pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - portName: - description: Port name used for the pods and governing service. This defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - replicas: - description: Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the running cluster equal to the expected size. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` (milliseconds seconds minutes hours). - type: string - routePrefix: - description: The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods. - type: string - sha: - description: 'SHA of Alertmanager container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' - type: string - storage: - description: Storage is the definition of how storage will be used by the Alertmanager instances. - properties: - disableMountSubPath: - description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' - type: boolean - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - spec: - description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: VolumeName is the binding reference to the PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: Represents the actual resources of the underlying volume. - type: object - conditions: - description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details about last transition. - type: string - reason: - description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: 'Tag of Alertmanager container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' - type: string - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - description: If specified, the pod's topology spread constraints. - items: - description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. - properties: - labelSelector: - description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. - 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 - maxSkew: - description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' - format: int32 - type: integer - topologyKey: - description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. - type: string - whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - version: - description: Version the cluster should be on. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the alertmanager container, that are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - fc: - description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with other supported volume types - properties: - configMap: - description: information about the configMap data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken data to project - properties: - audience: - description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount user - type: string - volume: - description: Volume is a string that references an already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the protection domain. - type: string - system: - description: The name of the storage system as configured in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the Alertmanager cluster. Read-only. Not included when requesting from the apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) targeted by this Alertmanager cluster. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Alertmanager cluster (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Alertmanager cluster. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Alertmanager cluster that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - served: true - storage: true - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-podmonitors.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-podmonitors.yaml deleted file mode 100644 index d474a0c0d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-podmonitors.yaml +++ /dev/null @@ -1,358 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: podmonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: PodMonitor - listKind: PodMonitorList - plural: podmonitors - singular: podmonitor - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: PodMonitor defines monitoring for a set of pods. - 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: Specification of desired Pod selection for target discovery by Prometheus. - properties: - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podMetricsEndpoints: - description: A list of endpoints allowed as part of this PodMonitor. - items: - description: PodMetricsEndpoint defines a scrapeable endpoint of a Kubernetes Pod serving Prometheus metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over basic authentication. More info: https://prometheus.io/docs/operating/configuration/#endpoint' - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the pod monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the pod port this endpoint refers to. Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Deprecated: Use ''port'' instead.' - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Pod objects. - 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 - targetLimit: - description: TargetLimit defines a limit on the number of scraped targets that will be accepted. - format: int64 - type: integer - required: - - podMetricsEndpoints - - selector - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-probes.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-probes.yaml deleted file mode 100644 index 7fd658e14..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-probes.yaml +++ /dev/null @@ -1,202 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: probes.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: Probe - listKind: ProbeList - plural: probes - singular: probe - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: Probe defines monitoring for a set of static targets or ingresses. - 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: Specification of desired Ingress selection for target discovery by Prometheus. - properties: - interval: - description: Interval at which targets are probed using the configured prober. If not specified Prometheus' global scrape interval is used. - type: string - jobName: - description: The job name assigned to scraped metrics by default. - type: string - module: - description: 'The module to use for probing specifying how to probe the target. Example module configuring in the blackbox exporter: https://github.com/prometheus/blackbox_exporter/blob/master/example.yml' - type: string - prober: - description: Specification for the prober to use for probing targets. The prober.URL parameter is required. Targets cannot be probed if left empty. - properties: - path: - description: Path to collect metrics from. Defaults to `/probe`. - type: string - scheme: - description: HTTP scheme to use for scraping. Defaults to `http`. - type: string - url: - description: Mandatory URL of the prober. - type: string - required: - - url - type: object - scrapeTimeout: - description: Timeout for scraping metrics from the Prometheus exporter. - type: string - targets: - description: Targets defines a set of static and/or dynamically discovered targets to be probed using the prober. - properties: - ingress: - description: Ingress defines the set of dynamically discovered ingress objects which hosts are considered for probing. - properties: - namespaceSelector: - description: Select Ingress objects by namespace. - properties: - any: - description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - relabelingConfigs: - description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - selector: - description: Select Ingress objects by labels. - 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 - type: object - staticConfig: - description: 'StaticConfig defines static targets which are considers for probing. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#static_config.' - properties: - labels: - additionalProperties: - type: string - description: Labels assigned to all metrics scraped from the targets. - type: object - relabelingConfigs: - description: 'RelabelConfigs to apply to samples before ingestion. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - static: - description: Targets is a list of URLs to probe using the configured prober. - items: - type: string - type: array - type: object - type: object - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheuses.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheuses.yaml deleted file mode 100644 index c3f13d981..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheuses.yaml +++ /dev/null @@ -1,4432 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: prometheuses.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: Prometheus - listKind: PrometheusList - plural: prometheuses - singular: prometheus - scope: Namespaced - versions: - - additionalPrinterColumns: - - description: The version of Prometheus - jsonPath: .spec.version - name: Version - type: string - - description: The desired replicas number of Prometheuses - jsonPath: .spec.replicas - name: Replicas - type: integer - - jsonPath: .metadata.creationTimestamp - name: Age - type: date - name: v1 - schema: - openAPIV3Schema: - description: Prometheus defines a Prometheus deployment. - 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: 'Specification of the desired behavior of the Prometheus cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalAlertManagerConfigs: - description: 'AdditionalAlertManagerConfigs allows specifying a key of a Secret containing additional Prometheus AlertManager configurations. AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalAlertRelabelConfigs: - description: 'AdditionalAlertRelabelConfigs allows specifying a key of a Secret containing additional Prometheus alert relabel configurations. Alert relabel configurations specified are appended to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalScrapeConfigs: - description: 'AdditionalScrapeConfigs allows specifying a key of a Secret containing additional Prometheus scrape configurations. Scrape configurations specified are appended to the configurations generated by the Prometheus Operator. Job configurations specified must have the form as specified in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible scrape configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alerting: - description: Define details regarding alerting. - properties: - alertmanagers: - description: AlertmanagerEndpoints Prometheus should fire alerts against. - items: - description: AlertmanagerEndpoints defines a selection of a single Endpoints object containing alertmanager IPs to fire alerts against. - properties: - apiVersion: - description: Version of the Alertmanager API that Prometheus uses to send alerts. It can be "v1" or "v2". - type: string - bearerTokenFile: - description: BearerTokenFile to read from filesystem to use when authenticating to Alertmanager. - type: string - name: - description: Name of Endpoints object in Namespace. - type: string - namespace: - description: Namespace of Endpoints object. - type: string - pathPrefix: - description: Prefix for the HTTP path alerts are pushed to. - type: string - port: - anyOf: - - type: integer - - type: string - description: Port the Alertmanager API is exposed on. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use when firing alerts. - type: string - timeout: - description: Timeout is a per-target Alertmanager timeout when pushing alerts. - type: string - tlsConfig: - description: TLS Config to use for alertmanager connection. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - name - - namespace - - port - type: object - type: array - required: - - alertmanagers - type: object - allowOverlappingBlocks: - description: AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental in Prometheus so it may change in any upcoming release. - type: boolean - apiserverConfig: - description: APIServerConfig allows specifying a host and auth methods to access apiserver. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically and use the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. - properties: - basicAuth: - description: BasicAuth allow an endpoint to authenticate over basic authentication - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: Bearer token for accessing apiserver. - type: string - bearerTokenFile: - description: File to read bearer token for accessing apiserver. - type: string - host: - description: Host of apiserver. A valid string consisting of a hostname or IP followed by an optional port number - type: string - tlsConfig: - description: TLS Config to use for accessing apiserver. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - host - type: object - arbitraryFSAccessThroughSMs: - description: ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files on the file system of the Prometheus container e.g. bearer token files. - properties: - deny: - type: boolean - type: object - baseImage: - description: 'Base image to use for a Prometheus deployment. Deprecated: use ''image'' instead' - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a Prometheus pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `prometheus`, `config-reloader`, and `thanos-sidecar`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - disableCompaction: - description: Disable prometheus compaction. - type: boolean - enableAdminAPI: - description: 'Enable access to prometheus web admin API. Defaults to the value of `false`. WARNING: Enabling the admin APIs enables mutating endpoints, to delete data, shutdown Prometheus, and more. Enabling this should be done with care and the user is advised to add additional authentication authorization via a proxy to ensure only clients authorized to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' - type: boolean - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created. - type: string - enforcedSampleLimit: - description: EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead. - format: int64 - type: integer - enforcedTargetLimit: - description: EnforcedTargetLimit defines a global limit on the number of scraped targets. This overrides any TargetLimit set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the TargetLimit to keep overall number of targets under the desired limit. Note that if TargetLimit is higher that value will be taken instead. - format: int64 - type: integer - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalLabels: - additionalProperties: - type: string - description: The labels to add to any time series or alerts when communicating with external systems (federation, remote storage, Alertmanager). - type: object - externalUrl: - description: The external URL the Prometheus instances will be available under. This is necessary to generate correct URLs. This is necessary if Prometheus is not served from root of a DNS name. - type: string - ignoreNamespaceSelectors: - description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from the podmonitor and servicemonitor configs, and they will only discover endpoints within their current namespace. Defaults to false. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Prometheus is being configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace to use for pulling prometheus and alertmanager images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the Prometheus configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for Prometheus to be configured with. - type: string - logLevel: - description: Log level for Prometheus to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - overrideHonorLabels: - description: OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor to true, this overrides honor_labels to false. - type: boolean - overrideHonorTimestamps: - description: OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. - type: boolean - paused: - description: When a Prometheus deployment is paused, no actions except for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are propagated to the prometheus pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - podMonitorNamespaceSelector: - description: Namespace's labels to match for PodMonitor discovery. If nil, only check own namespace. - 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 - podMonitorSelector: - description: '*Experimental* PodMonitors to be selected for target discovery. *Deprecated:* if neither this nor serviceMonitorSelector are specified, configuration is unmanaged.' - 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 - portName: - description: Port name used for the pods and governing service. This defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - probeNamespaceSelector: - description: '*Experimental* Namespaces to be selected for Probe discovery. If nil, only check own namespace.' - 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 - probeSelector: - description: '*Experimental* Probes to be selected for target discovery.' - 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 - prometheusExternalLabelName: - description: Name of Prometheus external label used to denote Prometheus instance name. Defaults to the value of `prometheus`. External label will _not_ be added when value is set to empty string (`""`). - type: string - prometheusRulesExcludedFromEnforce: - description: PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair - items: - description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics. - properties: - ruleName: - description: RuleNamespace - name of excluded rule - type: string - ruleNamespace: - description: RuleNamespace - namespace of excluded rule - type: string - required: - - ruleName - - ruleNamespace - type: object - type: array - query: - description: QuerySpec defines the query command line flags when starting Prometheus. - properties: - lookbackDelta: - description: The delta difference allowed for retrieving metrics during expression evaluations. - type: string - maxConcurrency: - description: Number of concurrent queries that can be run at once. - format: int32 - type: integer - maxSamples: - description: Maximum number of samples a single query can load into memory. Note that queries will fail if they would load more samples than this into memory, so this also limits the number of samples a query can return. - format: int32 - type: integer - timeout: - description: Maximum time a query may take before being aborted. - type: string - type: object - queryLogFile: - description: QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable, and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such as `/dev/stdout` to log querie information to the default Prometheus log stream. This is only available in versions of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/) - type: string - remoteRead: - description: If specified, the remote_read spec. This is an experimental feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteReadSpec defines the remote_read configuration for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: bearer token for remote read. - type: string - bearerTokenFile: - description: File to read bearer token for remote read. - type: string - name: - description: The name of the remote read queue, must be unique if specified. The name is used in metrics and logging in order to differentiate read configurations. Only valid in Prometheus versions 2.15.0 and newer. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - readRecent: - description: Whether reads should be made for queries for time ranges that the local storage should have complete data for. - type: boolean - remoteTimeout: - description: Timeout for requests to the remote read endpoint. - type: string - requiredMatchers: - additionalProperties: - type: string - description: An optional list of equality matchers which have to be present in a selector to query the remote read endpoint. - type: object - tlsConfig: - description: TLS Config to use for remote read. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - required: - - url - type: object - type: array - remoteWrite: - description: If specified, the remote_write spec. This is an experimental feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteWriteSpec defines the remote_write configuration for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: File to read bearer token for remote write. - type: string - bearerTokenFile: - description: File to read bearer token for remote write. - type: string - headers: - additionalProperties: - type: string - description: Custom HTTP headers to be sent along with each remote write request. Be aware that headers that are set by Prometheus itself can't be overwritten. Only valid in Prometheus versions 2.25.0 and newer. - type: object - name: - description: The name of the remote write queue, must be unique if specified. The name is used in metrics and logging in order to differentiate queues. Only valid in Prometheus versions 2.15.0 and newer. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - queueConfig: - description: QueueConfig allows tuning of the remote write queue parameters. - properties: - batchSendDeadline: - description: BatchSendDeadline is the maximum time a sample will wait in buffer. - type: string - capacity: - description: Capacity is the number of samples to buffer per shard before we start dropping them. - type: integer - maxBackoff: - description: MaxBackoff is the maximum retry delay. - type: string - maxRetries: - description: MaxRetries is the maximum number of times to retry a batch on recoverable errors. - type: integer - maxSamplesPerSend: - description: MaxSamplesPerSend is the maximum number of samples per send. - type: integer - maxShards: - description: MaxShards is the maximum number of shards, i.e. amount of concurrency. - type: integer - minBackoff: - description: MinBackoff is the initial retry delay. Gets doubled for every retry. - type: string - minShards: - description: MinShards is the minimum number of shards, i.e. amount of concurrency. - type: integer - type: object - remoteTimeout: - description: Timeout for requests to the remote write endpoint. - type: string - tlsConfig: - description: TLS Config to use for remote write. - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - writeRelabelConfigs: - description: The list of remote write relabel configurations. - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - required: - - url - type: object - type: array - replicaExternalLabelName: - description: Name of Prometheus external label used to denote replica name. Defaults to the value of `prometheus_replica`. External label will _not_ be added when value is set to empty string (`""`). - type: string - replicas: - description: Number of replicas of each shard to deploy for a Prometheus deployment. Number of replicas multiplied by shards is the total number of Pods created. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Prometheus shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). - type: string - retentionSize: - description: 'Maximum amount of disk space used by blocks. Supported units: B, KB, MB, GB, TB, PB, EB. Ex: `512MB`.' - type: string - routePrefix: - description: The route prefix Prometheus registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, but the server serves requests under a different route prefix. For example for use with `kubectl proxy`. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for PrometheusRules discovery. If unspecified, only the same namespace as the Prometheus object is in is used. - 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 - ruleSelector: - description: A selector to select which PrometheusRules to mount for loading alerting/recording rules from. Until (excluding) Prometheus Operator v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps to PrometheusRule custom resources selected by RuleSelector. Make sure it does not match any config maps that you do not want to be migrated. - 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 - rules: - description: /--rules.*/ command-line arguments. - properties: - alert: - description: /--rules.alert.*/ command-line arguments - properties: - forGracePeriod: - description: Minimum duration between alert and restored 'for' state. This is maintained only for alerts with configured 'for' time greater than grace period. - type: string - forOutageTolerance: - description: Max time to tolerate prometheus outage for restoring 'for' state of alert. - type: string - resendDelay: - description: Minimum amount of time to wait before resending an alert to Alertmanager. - type: string - type: object - type: object - scrapeInterval: - description: Interval between consecutive scrapes. - type: string - scrapeTimeout: - description: Number of seconds to wait for target to respond before erroring. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. The Secrets are mounted into /etc/prometheus/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to use to run the Prometheus Pods. - type: string - serviceMonitorNamespaceSelector: - description: Namespace's labels to match for ServiceMonitor discovery. If nil, only check own namespace. - 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 - serviceMonitorSelector: - description: ServiceMonitors to be selected for target discovery. *Deprecated:* if neither this nor podMonitorSelector are specified, configuration is unmanaged. - 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 - sha: - description: 'SHA of Prometheus container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' - type: string - shards: - description: 'EXPERIMENTAL: Number of shards to distribute targets onto. Number of replicas multiplied by shards is the total number of Pods created. Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. Increasing shards will not reshard data either but it will continue to be available from the same instances. To query globally use Thanos sidecar and Thanos querier or remote write data to a central location. Sharding is done on the content of the `__address__` target meta-label.' - format: int32 - type: integer - storage: - description: Storage spec to specify how storage shall be used. - properties: - disableMountSubPath: - description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' - type: boolean - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - spec: - description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: VolumeName is the binding reference to the PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: Represents the actual resources of the underlying volume. - type: object - conditions: - description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details about last transition. - type: string - reason: - description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: 'Tag of Prometheus container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' - type: string - thanos: - description: "Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment. \n This section is experimental, it may change significantly without deprecation notice in any release. \n This is experimental and may change significantly without backward compatibility in any release." - properties: - baseImage: - description: 'Thanos base image if other than default. Deprecated: use ''image'' instead' - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Image if specified has precedence over baseImage, tag and sha combinations. Specifying the version is still necessary to ensure the Prometheus Operator knows what version of Thanos is being configured. - type: string - listenLocal: - description: ListenLocal makes the Thanos sidecar listen on loopback, so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: LogFormat for Thanos sidecar to be configured with. - type: string - logLevel: - description: LogLevel for Thanos sidecar to be configured with. - type: string - minTime: - description: MinTime for Thanos sidecar to be configured with. Option can be a constant time in RFC3339 format or time duration relative to current time, such as -1d or 2h45m. Valid duration units are ms, s, m, h, d, w, y. - type: string - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - objectStorageConfigFile: - description: ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence. - type: string - resources: - description: Resources defines the resource requirements for the Thanos sidecar. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - sha: - description: 'SHA of Thanos container image to be deployed. Defaults to the value of `version`. Similar to a tag, but the SHA explicitly deploys an immutable container image. Version and Tag are ignored if SHA is set. Deprecated: use ''image'' instead. The image digest can be specified as part of the image URL.' - type: string - tag: - description: 'Tag of Thanos sidecar container image to be deployed. Defaults to the value of `version`. Version is ignored if Tag is set. Deprecated: use ''image'' instead. The image tag can be specified as part of the image URL.' - type: string - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - tracingConfigFile: - description: TracingConfig specifies the path of the tracing configuration file. When used alongside with TracingConfig, TracingConfigFile takes precedence. - type: string - version: - description: Version describes the version of Thanos to use. - type: string - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - description: If specified, the pod's topology spread constraints. - items: - description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. - properties: - labelSelector: - description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. - 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 - maxSkew: - description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' - format: int32 - type: integer - topologyKey: - description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. - type: string - whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - version: - description: Version of Prometheus to be deployed. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts on the output StatefulSet definition. VolumeMounts specified will be appended to other VolumeMounts in the prometheus container, that are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - fc: - description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with other supported volume types - properties: - configMap: - description: information about the configMap data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken data to project - properties: - audience: - description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount user - type: string - volume: - description: Volume is a string that references an already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the protection domain. - type: string - system: - description: The name of the storage system as configured in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - walCompression: - description: Enable compression of the write-ahead log using Snappy. This flag is only available in versions of Prometheus >= 2.11.0. - type: boolean - web: - description: WebSpec defines the web command line flags when starting Prometheus. - properties: - pageTitle: - description: The prometheus web page title - type: string - type: object - type: object - status: - description: 'Most recent observed status of the Prometheus cluster. Read-only. Not included when requesting from the apiserver, only from the Prometheus Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) targeted by this Prometheus deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Prometheus deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Prometheus deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Prometheus deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - served: true - storage: true - subresources: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheusrules.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheusrules.yaml deleted file mode 100644 index 07a24df45..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-prometheusrules.yaml +++ /dev/null @@ -1,90 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: prometheusrules.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PrometheusRule - listKind: PrometheusRuleList - plural: prometheusrules - singular: prometheusrule - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: PrometheusRule defines recording and alerting rules for a Prometheus instance - 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: Specification of desired alerting rule definitions for Prometheus. - properties: - groups: - description: Content of Prometheus rule file - items: - description: 'RuleGroup is a list of sequentially evaluated recording and alerting rules. Note: PartialResponseStrategy is only used by ThanosRuler and will be ignored by Prometheus instances. Valid values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' - properties: - interval: - type: string - name: - type: string - partial_response_strategy: - type: string - rules: - items: - description: Rule describes an alerting or recording rule. - properties: - alert: - type: string - annotations: - additionalProperties: - type: string - type: object - expr: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - for: - type: string - labels: - additionalProperties: - type: string - type: object - record: - type: string - required: - - expr - type: object - type: array - required: - - name - - rules - type: object - type: array - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-servicemonitors.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-servicemonitors.yaml deleted file mode 100644 index 9dee64ff9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-servicemonitors.yaml +++ /dev/null @@ -1,375 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: servicemonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: ServiceMonitor - listKind: ServiceMonitorList - plural: servicemonitors - singular: servicemonitor - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: ServiceMonitor defines monitoring for a set of services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Specification of desired Service selection for target discovery by Prometheus. - properties: - endpoints: - description: A list of endpoints allowed as part of this ServiceMonitor. - items: - description: Endpoint defines a scrapeable endpoint serving Prometheus metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' - properties: - password: - description: The secret in the service monitor namespace that contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenFile: - description: File to read bearer token for scraping targets. - type: string - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping targets. The secret needs to be in the same namespace as the service monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the service port this endpoint refers to. Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before scraping. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the label set, being applied to samples before ingestion. It defines ``-section of Prometheus configuration. More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace is performed if the regular expression matches. Regex capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing labels. Their content is concatenated using the configured separator and matched against the configured regular expression for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written in a replace action. It is mandatory for replace actions. Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: Name or number of the target port of the Pod behind the Service, the port must be specified with container port property. Mutually exclusive with port. - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Endpoints objects. - 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 - targetLabels: - description: TargetLabels transfers labels on the Kubernetes Service onto the target. - items: - type: string - type: array - targetLimit: - description: TargetLimit defines a limit on the number of scraped targets that will be accepted. - format: int64 - type: integer - required: - - endpoints - - selector - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-thanosrulers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-thanosrulers.yaml deleted file mode 100644 index a470d4b9f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/crd-manifest/crd-thanosrulers.yaml +++ /dev/null @@ -1,3342 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml - ---- -apiVersion: apiextensions.k8s.io/v1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.4.1 - creationTimestamp: null - name: thanosrulers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - categories: - - prometheus-operator - kind: ThanosRuler - listKind: ThanosRulerList - plural: thanosrulers - singular: thanosruler - scope: Namespaced - versions: - - name: v1 - schema: - openAPIV3Schema: - description: ThanosRuler defines a ThanosRuler deployment. - 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: 'Specification of the desired behavior of the ThanosRuler cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). - properties: - preference: - description: A node selector term, associated with the corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The terms are ORed. - items: - description: A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements by node's labels. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements by node's fields. - items: - description: A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. - properties: - key: - description: The label key that the selector applies to. - type: string - operator: - description: Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. - items: - description: Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running - properties: - labelSelector: - description: A label query over a set of resources, in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the labelSelector applies to (matches against); null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertDropLabels: - description: AlertDropLabels configure the label names which should be dropped in ThanosRuler alerts. If `labels` field is not provided, `thanos_ruler_replica` will be dropped in alerts by default. - items: - type: string - type: array - alertQueryUrl: - description: The external Query URL the Thanos Ruler will set in the 'Source' field of all alerts. Maps to the '--alert.query-url' CLI arg. - type: string - alertmanagersConfig: - description: Define configuration for connecting to alertmanager. Only available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` arg. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - alertmanagersUrl: - description: 'Define URLs to send alerts to Alertmanager. For Thanos v0.10.0 and higher, AlertManagersConfig should be used instead. Note: this field will be ignored if AlertManagersConfig is specified. Maps to the `alertmanagers.url` arg.' - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying operator generated containers. This can be used to allow adding an authentication proxy to a ThanosRuler pod or to change the behavior of an operator generated container. Containers described here modify an operator generated container if they share the same name and modifications are done via a strategic merge patch. The current container names are: `thanos-ruler` and `config-reloader`. Overriding containers is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. The label value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalPrefix: - description: The external URL the Thanos Ruler instances will be available under. This is necessary to generate correct URLs. This is necessary if Thanos Ruler is not served from root of a DNS name. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which Thanos Querier reads recorded rule data. Note: Currently only the CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Struct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Thanos container image URL. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod definition. Those can be used to e.g. fetch secrets for injection into the ThanosRuler configuration from external sources. Any errors during the execution of an initContainer will lead to a restart of the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ Using initContainers for any use case other then secret fetching is entirely outside the scope of what the maintainers will support and by doing so, you accept that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The docker image''s ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container''s environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. Cannot be updated. - items: - description: EnvVar represents an environment variable present in a Container. - properties: - name: - description: Name of the environment variable. Must be a C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, metadata.namespace, metadata.labels, metadata.annotations, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's namespace - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The reason for termination is passed to the handler. The Pod''s termination grace period countdown begins before the PreStop hooked is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod''s termination grace period. Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Cannot be updated. - items: - description: ContainerPort represents a network port in a single container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. - type: string - protocol: - default: TCP - description: Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - x-kubernetes-list-map-keys: - - containerPort - - protocol - x-kubernetes-list-type: map - readinessProbe: - description: 'Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod''s lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. This is a beta feature enabled by the StartupProbe feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported TODO: implement a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s termination message will be written is mounted into the container''s filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be used by the container. - items: - description: volumeDevice describes a mapping of a raw block device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within a container. - properties: - mountPath: - description: Path within the container at which the volume should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels configure the external label pairs to ThanosRuler. If not provided, default replica label `thanos_ruler_replica` will be added as a label and be dropped in alerts. - type: object - listenLocal: - description: ListenLocal makes the Thanos ruler listen on loopback, so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for ThanosRuler to be configured with. - type: string - logLevel: - description: Log level for ThanosRuler to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. Alternative to ObjectStorageConfigFile, and lower order priority. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - objectStorageConfigFile: - description: ObjectStorageConfigFile specifies the path of the object storage configuration file. When used alongside with ObjectStorageConfig, ObjectStorageConfigFile takes precedence. - type: string - paused: - description: When a ThanosRuler deployment is paused, no actions except for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata contains Labels and Annotations gets propagated to the thanos ruler pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - portName: - description: Port name used for the pods and governing service. This defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - prometheusRulesExcludedFromEnforce: - description: PrometheusRulesExcludedFromEnforce - list of Prometheus rules to be excluded from enforcing of adding namespace labels. Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair - items: - description: PrometheusRuleExcludeConfig enables users to configure excluded PrometheusRule names and their namespaces to be ignored while enforcing namespace label for alerts and metrics. - properties: - ruleName: - description: RuleNamespace - name of excluded rule - type: string - ruleNamespace: - description: RuleNamespace - namespace of excluded rule - type: string - required: - - ruleName - - ruleNamespace - type: object - type: array - queryConfig: - description: Define configuration for connecting to thanos query instances. If this is defined, the QueryEndpoints field will be ignored. Maps to the `query.config` CLI argument. Only available with thanos v0.11.0 and higher. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - queryEndpoints: - description: QueryEndpoints defines Thanos querier endpoints from which to query metrics. Maps to the --query flag of thanos ruler. - items: - type: string - type: array - replicas: - description: Number of thanos ruler instances to deploy. - format: int32 - type: integer - resources: - description: Resources defines the resource requirements for single Pods. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration ThanosRuler shall retain data for. Default is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` (milliseconds seconds minutes hours days weeks years). - type: string - routePrefix: - description: The route prefix ThanosRuler registers HTTP handlers for. This allows thanos UI to be served on a sub-path. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for Rules discovery. If unspecified, only the same namespace as the ThanosRuler object is in is used. - 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 - ruleSelector: - description: A label selector to select which PrometheusRules to mount for alerting and recording. - 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 - securityContext: - description: SecurityContext holds pod-level security attributes and common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume." - format: int64 - type: integer - fsGroupChangePolicy: - description: 'fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified defaults to "Always".' - type: string - runAsGroup: - description: The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the container. - type: string - role: - description: Role is a SELinux role label that applies to the container. - type: string - type: - description: Type is a SELinux type label that applies to the container. - type: string - user: - description: User is a SELinux user label that applies to the container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in each container, in addition to the container's primary GID. If unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA credential spec to use. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to use to run the Thanos Ruler Pods. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - disableMountSubPath: - description: 'Deprecated: subPath usage will be disabled by default in a future release, this option will become unnecessary. DisableMountSubPath allows to remove any subPath usage in volume mounts.' - type: boolean - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus StatefulSets. If specified, used in place of any volumeClaimTemplate. More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: EmbeddedMetadata contains metadata relevant to an EmbeddedResource. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels' - type: object - name: - description: 'Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names' - type: string - type: object - spec: - description: 'Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: 'This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot - Beta) * An existing PVC (PersistentVolumeClaim) * An existing custom resource/object that implements data population (Alpha) In order to use VolumeSnapshot object types, the appropriate feature gate must be enabled (VolumeSnapshotDataSource or AnyVolumeDataSource) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the specified data source is not supported, the volume will not be created and the failure will be reported as an event. In the future, we plan to support more data source types and the behavior of the provisioner may change.' - properties: - apiGroup: - description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: 'Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. - type: string - volumeName: - description: VolumeName is the binding reference to the PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - anyOf: - - type: integer - - type: string - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - description: Represents the actual resources of the underlying volume. - type: object - conditions: - description: Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details about last transition. - type: string - reason: - description: Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports "ResizeStarted" that means the underlying persistent volume is being resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. - type: string - type: object - type: array - topologySpreadConstraints: - description: If specified, the pod's topology spread constraints. - items: - description: TopologySpreadConstraint specifies how to spread matching pods among the given topology. - properties: - labelSelector: - description: LabelSelector is used to find matching pods. Pods that match this label selector are counted to determine the number of pods in their corresponding topology domain. - 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 - maxSkew: - description: 'MaxSkew describes the degree to which pods may be unevenly distributed. It''s the maximum permitted difference between the number of matching pods in any two topology domains of a given topology type. For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 1/1/0: | zone1 | zone2 | zone3 | | P | P | | - if MaxSkew is 1, incoming pod can only be scheduled to zone3 to become 1/1/1; scheduling it onto zone1(zone2) would make the ActualSkew(2-0) on zone1(zone2) violate MaxSkew(1). - if MaxSkew is 2, incoming pod can be scheduled onto any zone. It''s a required field. Default value is 1 and 0 is not allowed.' - format: int32 - type: integer - topologyKey: - description: TopologyKey is the key of node labels. Nodes that have a label with this key and identical values are considered to be in the same topology. We consider each as a "bucket", and try to put balanced number of pods into each bucket. It's a required field. - type: string - whenUnsatisfiable: - description: 'WhenUnsatisfiable indicates how to deal with a pod if it doesn''t satisfy the spread constraint. - DoNotSchedule (default) tells the scheduler not to schedule it - ScheduleAnyway tells the scheduler to still schedule it It''s considered as "Unsatisfiable" if and only if placing incoming pod on any topology violates "MaxSkew". For example, in a 3-zone cluster, MaxSkew is set to 1, and pods with the same labelSelector spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P | P | P | If WhenUnsatisfiable is set to DoNotSchedule, incoming pod can only be scheduled to zone2(zone3) to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3) satisfies MaxSkew(1). In other words, the cluster can still be imbalanced, but scheduler won''t make it *more* imbalanced. It''s a required field.' - type: string - required: - - maxSkew - - topologyKey - - whenUnsatisfiable - type: object - type: array - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an experimental feature, it may change in any upcoming release in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - volumes: - description: Volumes allows configuration of additional volumes on the output StatefulSet definition. Volumes specified will be appended to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly property in VolumeMounts to "true". If omitted, the default is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. The default is "" which means to use the node''s default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - anyOf: - - type: integer - - type: string - description: 'Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - type: object - fc: - description: FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - partition: - description: 'The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is attached to a kubelet''s host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. Must be a value between 0 and 0777. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with other supported volume types - properties: - configMap: - description: information about the configMap data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data to project - properties: - items: - description: Items is a list of DownwardAPIVolume file - items: - description: DownwardAPIVolumeFile represents information to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name of the file to be created. Must not be absolute or contain the ''..'' path. Must be utf-8 encoded. The first item of the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, optional for env vars' - type: string - divisor: - anyOf: - - type: integer - - type: string - description: Specifies the output format of the exposed resources, defaults to "1" - pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ - x-kubernetes-int-or-string: true - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken data to project - properties: - audience: - description: Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount user - type: string - volume: - description: Volume is a string that references an already created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the protection domain. - type: string - system: - description: The name of the storage system as configured in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files by default. Must be a value between 0 and 0777. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, must be a value between 0 and 0777. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the ThanosRuler cluster. Read-only. Not included when requesting from the apiserver, only from the ThanosRuler Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) targeted by this ThanosRuler deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this ThanosRuler deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this ThanosRuler deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this ThanosRuler deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - served: true - storage: true -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/_helpers.tpl deleted file mode 100644 index edac2b315..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/_helpers.tpl +++ /dev/null @@ -1,50 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# CRD Installation - -{{- define "crd.established" -}} -{{- if not (regexMatch "^([a-zA-Z]+[.][a-zA-Z]*)+$" .) -}} -{{ required (printf "%s is not a valid CRD" .) "" }} -{{- else -}} -echo "beginning wait for {{ . }} to be established..."; -num_tries=1; -until kubectl get crd {{ . }} -o=jsonpath='{range .status.conditions[*]}{.type}={.status} {end}' | grep -qE 'Established=True'; do - if (( num_tries == 30 )); then - echo "timed out waiting for {{ . }}"; - exit 1; - fi; - num_tries=$(( num_tries + 1 )); - echo "{{ . }} is not established. Sleeping for 2 seconds and trying again..."; - sleep 2; -done; -echo "successfully established {{ . }}"; -{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/jobs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/jobs.yaml deleted file mode 100644 index a668d2989..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/jobs.yaml +++ /dev/null @@ -1,134 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: set-preserve-unknown-fields-false - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - {{- range $path, $_ := (.Files.Glob "crd-manifest/**.yaml") }} - {{- $crd := get (get ($.Files.Get $path | fromYaml) "metadata") "name" }} - if [[ -n "$(kubectl get crd {{ $crd }} -o jsonpath='{.spec.preserveUnknownFields}')" ]]; then - patch="{\"spec\": {\"preserveUnknownFields\": false}}"; - if [[ -z "$(kubectl get crd {{ $crd }} -o jsonpath='{.spec.versions[0].schema}' 2>&1)" ]]; then - patch="{\"spec\": {\"preserveUnknownFields\": false, \"versions\": [{\"name\": \"v1\", \"served\": false, \"storage\": true}]}}"; - fi - if kubectl patch crd {{ $crd }} -p "${patch}" --type="merge"; then - {{- include "crd.established" $crd | nindent 18 }} - fi; - fi; - {{- end }} - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - echo "Applying CRDs..."; - kubectl apply -f /etc/config/crd-manifest.yaml; - - echo "Waiting for CRDs to be recognized before finishing installation..."; - - {{- range $path, $_ := (.Files.Glob "crd-manifest/**.yaml") }} - {{- $apiGroup := get (get ($.Files.Get $path | fromYaml) "spec") "group" }} - rm -rf $HOME/.kube/cache/discovery/*/{{ $apiGroup }}; - {{- end }} - - {{- range $path, $_ := (.Files.Glob "crd-manifest/**.yaml") }} - {{- $crd := get (get ($.Files.Get $path | fromYaml) "metadata") "name" }} - {{- include "crd.established" $crd | nindent 12 }} - {{- end }} - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": before-hook-creation, hook-succeeded, hook-failed -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - {{- range $path, $_ := (.Files.Glob "crd-manifest/**.yaml") }} - {{- $crd := get (get ($.Files.Get $path | fromYaml) "metadata") "name" }} - if kubectl patch crd {{ $crd }} -p '{"metadata": {"finalizers": []}}'; then - {{- include "crd.established" $crd | nindent 14 }} - fi; - {{- end }} - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/sh - - -c - - > - kubectl delete -f /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/manifest.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/manifest.yaml deleted file mode 100644 index 31016b6ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/rbac.yaml deleted file mode 100644 index bdda1ddad..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/values.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/values.yaml deleted file mode 100644 index 8f3ebe37a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/14.5.101+up14.5.0/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/rancher-agent - tag: v2.5.7 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/Chart.yaml deleted file mode 100755 index c358c7e34..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/release-name: rancher-monitoring-crd -apiVersion: v1 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 9.4.200 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/README.md b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/README.md deleted file mode 100755 index 9bd9adadd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-monitoring-crd -A Rancher chart that installs the CRDs used by [rancher-monitoring](https://github.com/rancher/dev-charts/tree/master/packages/rancher-monitoring). diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-alertmanager.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-alertmanager.yaml deleted file mode 100755 index 98030b4f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-alertmanager.yaml +++ /dev/null @@ -1,4500 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: alertmanagers.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Alertmanager - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Alertmanagers - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Alertmanager - listKind: AlertmanagerList - plural: alertmanagers - singular: alertmanager - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Alertmanager describes an Alertmanager cluster. - 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: 'Specification of the desired behavior of the Alertmanager - cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalPeers: - description: AdditionalPeers allows injecting a set of additional Alertmanagers - to peer with to form a highly available cluster. - items: - type: string - type: array - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - baseImage: - description: Base image that is used to deploy pods, without tag. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Alertmanager object, which shall be mounted into the Alertmanager - Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - items: - type: string - type: array - configSecret: - description: ConfigSecret is the name of a Kubernetes Secret in the - same namespace as the Alertmanager object, which contains configuration - for this Alertmanager instance. Defaults to 'alertmanager-' - The secret is mounted into /etc/alertmanager/config. - type: string - containers: - description: Containers allows injecting additional containers. This - is meant to allow adding an authentication proxy to an Alertmanager - pod. - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - externalUrl: - description: The external URL the Alertmanager instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Alertmanager is not served from root of a DNS name. - type: string - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Alertmanager is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Alertmanager configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Alertmanager server listen on loopback, - so that it does not bind against the Pod IP. Note this is only for - the Alertmanager UI, not the gossip communication. - type: boolean - logFormat: - description: Log format for Alertmanager to be configured with. - type: string - logLevel: - description: Log level for Alertmanager to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - paused: - description: If set to true all actions on the underlaying managed objects - are not goint to be performed, except for delete actions. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the alertmanager pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - replicas: - description: Size is the expected size of the alertmanager cluster. - The controller will eventually make the size of the running cluster - equal to the expected size. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Alertmanager shall retain data for. Default - is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` - (milliseconds seconds minutes hours). - type: string - routePrefix: - description: The route prefix Alertmanager registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Alertmanager object, which shall be mounted into the Alertmanager - Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - sha: - description: SHA of Alertmanager container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage is the definition of how storage will be used by - the Alertmanager instances. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Alertmanager container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version the cluster should be on. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the alertmanager container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the Alertmanager cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Alertmanager cluster. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Alertmanager - cluster. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-podmonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-podmonitor.yaml deleted file mode 100755 index 9cf3c42e4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-podmonitor.yaml +++ /dev/null @@ -1,260 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: podmonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PodMonitor - listKind: PodMonitorList - plural: podmonitors - singular: podmonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PodMonitor defines monitoring for a set of pods. - 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: Specification of desired Pod selection for target discovery - by Prometheus. - properties: - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podMetricsEndpoints: - description: A list of endpoints allowed as part of this PodMonitor. - items: - description: PodMetricsEndpoint defines a scrapeable endpoint of a - Kubernetes Pod serving Prometheus metrics. - properties: - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the pod port this endpoint refers to. Mutually - exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before ingestion. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Deprecated: Use ''port'' instead.' - x-kubernetes-int-or-string: true - type: object - type: array - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Pod objects. - 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 - required: - - podMetricsEndpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheus.yaml deleted file mode 100755 index 704379fb2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheus.yaml +++ /dev/null @@ -1,6002 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheuses.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Prometheus - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Prometheuses - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Prometheus - listKind: PrometheusList - plural: prometheuses - singular: prometheus - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Prometheus defines a Prometheus deployment. - 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: 'Specification of the desired behavior of the Prometheus cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalAlertManagerConfigs: - description: 'AdditionalAlertManagerConfigs allows specifying a key - of a Secret containing additional Prometheus AlertManager configurations. - AlertManager configurations specified are appended to the configurations - generated by the Prometheus Operator. Job configurations specified - must have the form as specified in the official Prometheus documentation: - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. - As AlertManager configs are appended, the user is responsible to make - sure it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible AlertManager configs - are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalAlertRelabelConfigs: - description: 'AdditionalAlertRelabelConfigs allows specifying a key - of a Secret containing additional Prometheus alert relabel configurations. - Alert relabel configurations specified are appended to the configurations - generated by the Prometheus Operator. Alert relabel configurations - specified must have the form as specified in the official Prometheus - documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. - As alert relabel configs are appended, the user is responsible to - make sure it is valid. Note that using this feature may expose the - possibility to break upgrades of Prometheus. It is advised to review - Prometheus release notes to ensure that no incompatible alert relabel - configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalScrapeConfigs: - description: 'AdditionalScrapeConfigs allows specifying a key of a Secret - containing additional Prometheus scrape configurations. Scrape configurations - specified are appended to the configurations generated by the Prometheus - Operator. Job configurations specified must have the form as specified - in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. - As scrape configs are appended, the user is responsible to make sure - it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible scrape configs are going - to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alerting: - description: Define details regarding alerting. - properties: - alertmanagers: - description: AlertmanagerEndpoints Prometheus should fire alerts - against. - items: - description: AlertmanagerEndpoints defines a selection of a single - Endpoints object containing alertmanager IPs to fire alerts - against. - properties: - apiVersion: - description: Version of the Alertmanager API that Prometheus - uses to send alerts. It can be "v1" or "v2". - type: string - bearerTokenFile: - description: BearerTokenFile to read from filesystem to use - when authenticating to Alertmanager. - type: string - name: - description: Name of Endpoints object in Namespace. - type: string - namespace: - description: Namespace of Endpoints object. - type: string - pathPrefix: - description: Prefix for the HTTP path alerts are pushed to. - type: string - port: - anyOf: - - type: integer - - type: string - description: Port the Alertmanager API is exposed on. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use when firing alerts. - type: string - tlsConfig: - description: TLS Config to use for alertmanager connection. - properties: - ca: - description: Stuct containing the CA cert to use for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for - the targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for - the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - name - - namespace - - port - type: object - type: array - required: - - alertmanagers - type: object - apiserverConfig: - description: APIServerConfig allows specifying a host and auth methods - to access apiserver. If left empty, Prometheus is assumed to run inside - of the cluster and will discover API servers automatically and use - the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. - properties: - basicAuth: - description: BasicAuth allow an endpoint to authenticate over basic - authentication - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: Bearer token for accessing apiserver. - type: string - bearerTokenFile: - description: File to read bearer token for accessing apiserver. - type: string - host: - description: Host of apiserver. A valid string consisting of a hostname - or IP followed by an optional port number - type: string - tlsConfig: - description: TLS Config to use for accessing apiserver. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - host - type: object - arbitraryFSAccessThroughSMs: - description: ArbitraryFSAccessThroughSMs configures whether configuration - based on a service monitor can access arbitrary files on the file - system of the Prometheus container e.g. bearer token files. - properties: - deny: - type: boolean - type: object - baseImage: - description: Base image to use for a Prometheus deployment. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Prometheus object, which shall be mounted into the Prometheus - Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a Prometheus pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `prometheus`, `prometheus-config-reloader`, `rules-configmap-reloader`, - and `thanos-sidecar`. Overriding containers is entirely outside the - scope of what the maintainers will support and by doing so, you accept - that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - disableCompaction: - description: Disable prometheus compaction. - type: boolean - enableAdminAPI: - description: 'Enable access to prometheus web admin API. Defaults to - the value of `false`. WARNING: Enabling the admin APIs enables mutating - endpoints, to delete data, shutdown Prometheus, and more. Enabling - this should be done with care and the user is advised to add additional - authentication authorization via a proxy to ensure only clients authorized - to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' - type: boolean - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalLabels: - additionalProperties: - type: string - description: The labels to add to any time series or alerts when communicating - with external systems (federation, remote storage, Alertmanager). - type: object - externalUrl: - description: The external URL the Prometheus instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Prometheus is not served from root of a DNS name. - type: string - ignoreNamespaceSelectors: - description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector - settings from the podmonitor and servicemonitor configs, and they - will only discover endpoints within their current namespace. Defaults - to false. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Prometheus is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Prometheus configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Prometheus server listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for Prometheus to be configured with. - type: string - logLevel: - description: Log level for Prometheus to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - overrideHonorLabels: - description: OverrideHonorLabels if set to true overrides all user configured - honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor - to true, this overrides honor_labels to false. - type: boolean - overrideHonorTimestamps: - description: OverrideHonorTimestamps allows to globally enforce honoring - timestamps in all scrape configs. - type: boolean - paused: - description: When a Prometheus deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the prometheus pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - podMonitorNamespaceSelector: - description: Namespaces to be selected for PodMonitor discovery. If - nil, only check own namespace. - 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 - podMonitorSelector: - description: '*Experimental* PodMonitors to be selected for target discovery.' - 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 - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - prometheusExternalLabelName: - description: Name of Prometheus external label used to denote Prometheus - instance name. Defaults to the value of `prometheus`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - query: - description: QuerySpec defines the query command line flags when starting - Prometheus. - properties: - lookbackDelta: - description: The delta difference allowed for retrieving metrics - during expression evaluations. - type: string - maxConcurrency: - description: Number of concurrent queries that can be run at once. - format: int32 - type: integer - maxSamples: - description: Maximum number of samples a single query can load into - memory. Note that queries will fail if they would load more samples - than this into memory, so this also limits the number of samples - a query can return. - format: int32 - type: integer - timeout: - description: Maximum time a query may take before being aborted. - type: string - type: object - remoteRead: - description: If specified, the remote_read spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteReadSpec defines the remote_read configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: bearer token for remote read. - type: string - bearerTokenFile: - description: File to read bearer token for remote read. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - readRecent: - description: Whether reads should be made for queries for time - ranges that the local storage should have complete data for. - type: boolean - remoteTimeout: - description: Timeout for requests to the remote read endpoint. - type: string - requiredMatchers: - additionalProperties: - type: string - description: An optional list of equality matchers which have - to be present in a selector to query the remote read endpoint. - type: object - tlsConfig: - description: TLS Config to use for remote read. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - required: - - url - type: object - type: array - remoteWrite: - description: If specified, the remote_write spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteWriteSpec defines the remote_write configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: File to read bearer token for remote write. - type: string - bearerTokenFile: - description: File to read bearer token for remote write. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - queueConfig: - description: QueueConfig allows tuning of the remote write queue - parameters. - properties: - batchSendDeadline: - description: BatchSendDeadline is the maximum time a sample - will wait in buffer. - type: string - capacity: - description: Capacity is the number of samples to buffer per - shard before we start dropping them. - type: integer - maxBackoff: - description: MaxBackoff is the maximum retry delay. - type: string - maxRetries: - description: MaxRetries is the maximum number of times to - retry a batch on recoverable errors. - type: integer - maxSamplesPerSend: - description: MaxSamplesPerSend is the maximum number of samples - per send. - type: integer - maxShards: - description: MaxShards is the maximum number of shards, i.e. - amount of concurrency. - type: integer - minBackoff: - description: MinBackoff is the initial retry delay. Gets doubled - for every retry. - type: string - minShards: - description: MinShards is the minimum number of shards, i.e. - amount of concurrency. - type: integer - type: object - remoteTimeout: - description: Timeout for requests to the remote write endpoint. - type: string - tlsConfig: - description: TLS Config to use for remote write. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - writeRelabelConfigs: - description: The list of remote write relabel configurations. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - required: - - url - type: object - type: array - replicaExternalLabelName: - description: Name of Prometheus external label used to denote replica - name. Defaults to the value of `prometheus_replica`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - replicas: - description: Number of instances to deploy for a Prometheus deployment. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Prometheus shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - retentionSize: - description: Maximum amount of disk space used by blocks. - type: string - routePrefix: - description: The route prefix Prometheus registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for PrometheusRules discovery. - If unspecified, only the same namespace as the Prometheus object is - in is used. - 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 - ruleSelector: - description: A selector to select which PrometheusRules to mount for - loading alerting rules from. Until (excluding) Prometheus Operator - v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps - to PrometheusRule custom resources selected by RuleSelector. Make - sure it does not match any config maps that you do not want to be - migrated. - 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 - rules: - description: /--rules.*/ command-line arguments. - properties: - alert: - description: /--rules.alert.*/ command-line arguments - properties: - forGracePeriod: - description: Minimum duration between alert and restored 'for' - state. This is maintained only for alerts with configured - 'for' time greater than grace period. - type: string - forOutageTolerance: - description: Max time to tolerate prometheus outage for restoring - 'for' state of alert. - type: string - resendDelay: - description: Minimum amount of time to wait before resending - an alert to Alertmanager. - type: string - type: object - type: object - scrapeInterval: - description: Interval between consecutive scrapes. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Prometheus object, which shall be mounted into the Prometheus Pods. - The Secrets are mounted into /etc/prometheus/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - serviceMonitorNamespaceSelector: - description: Namespaces to be selected for ServiceMonitor discovery. - If nil, only check own namespace. - 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 - serviceMonitorSelector: - description: ServiceMonitors to be selected for target discovery. - 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 - sha: - description: SHA of Prometheus container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Prometheus container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - thanos: - description: "Thanos configuration allows configuring various aspects - of a Prometheus server in a Thanos environment. \n This section is - experimental, it may change significantly without deprecation notice - in any release. \n This is experimental and may change significantly - without backward compatibility in any release." - properties: - baseImage: - description: Thanos base image if other than default. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from - which Thanos Querier reads recorded rule data. Note: Currently - only the CAFile, CertFile, and KeyFile fields are supported. Maps - to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Image if specified has precedence over baseImage, tag - and sha combinations. Specifying the version is still necessary - to ensure the Prometheus Operator knows what version of Thanos - is being configured. - type: string - listenLocal: - description: ListenLocal makes the Thanos sidecar listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - resources: - description: Resources defines the resource requirements for the - Thanos sidecar. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - sha: - description: SHA of Thanos container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - tag: - description: Tag of Thanos sidecar container image to be deployed. - Defaults to the value of `version`. Version is ignored if Tag - is set. - type: string - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is - an experimental feature, it may change in any upcoming release - in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - version: - description: Version describes the version of Thanos to use. - type: string - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version of Prometheus to be deployed. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the prometheus container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - walCompression: - description: Enable compression of the write-ahead log using Snappy. - This flag is only available in versions of Prometheus >= 2.11.0. - type: boolean - type: object - status: - description: 'Most recent observed status of the Prometheus cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Prometheus deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Prometheus - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheusrules.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheusrules.yaml deleted file mode 100755 index 5546de38e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-prometheusrules.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheusrules.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PrometheusRule - listKind: PrometheusRuleList - plural: prometheusrules - singular: prometheusrule - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PrometheusRule defines alerting rules for a Prometheus instance - 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: Specification of desired alerting rule definitions for Prometheus. - properties: - groups: - description: Content of Prometheus rule file - items: - description: 'RuleGroup is a list of sequentially evaluated recording - and alerting rules. Note: PartialResponseStrategy is only used by - ThanosRuler and will be ignored by Prometheus instances. Valid - values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' - properties: - interval: - type: string - name: - type: string - partial_response_strategy: - type: string - rules: - items: - description: Rule describes an alerting or recording rule. - properties: - alert: - type: string - annotations: - additionalProperties: - type: string - type: object - expr: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - for: - type: string - labels: - additionalProperties: - type: string - type: object - record: - type: string - required: - - expr - type: object - type: array - required: - - name - - rules - type: object - type: array - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-servicemonitor.yaml deleted file mode 100755 index 8f7a67c14..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-servicemonitor.yaml +++ /dev/null @@ -1,459 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: servicemonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ServiceMonitor - listKind: ServiceMonitorList - plural: servicemonitors - singular: servicemonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ServiceMonitor defines monitoring for a set of services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Specification of desired Service selection for target discovery - by Prometheus. - properties: - endpoints: - description: A list of endpoints allowed as part of this ServiceMonitor. - items: - description: Endpoint defines a scrapeable endpoint serving Prometheus - metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over - basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenFile: - description: File to read bearer token for scraping targets. - type: string - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping - targets. The secret needs to be in the same namespace as the - service monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be - defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the service port this endpoint refers to. - Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before scraping. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: Name or number of the pod port this endpoint refers - to. Mutually exclusive with port. - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Endpoints objects. - 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 - targetLabels: - description: TargetLabels transfers labels on the Kubernetes Service - onto the target. - items: - type: string - type: array - required: - - endpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-thanosrulers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-thanosrulers.yaml deleted file mode 100755 index 82136d73e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/crd-manifest/crd-thanosrulers.yaml +++ /dev/null @@ -1,4725 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: thanosrulers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ThanosRuler - listKind: ThanosRulerList - plural: thanosrulers - singular: thanosruler - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ThanosRuler defines a ThanosRuler deployment. - 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: 'Specification of the desired behavior of the ThanosRuler cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertDropLabels: - description: AlertDropLabels configure the label names which should - be dropped in ThanosRuler alerts. If `labels` field is not provided, - `thanos_ruler_replica` will be dropped in alerts by default. - items: - type: string - type: array - alertQueryUrl: - description: The external Query URL the Thanos Ruler will set in the - 'Source' field of all alerts. Maps to the '--alert.query-url' CLI - arg. - type: string - alertmanagersConfig: - description: Define configuration for connecting to alertmanager. Only - available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` - arg. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - alertmanagersUrl: - description: 'Define URLs to send alerts to Alertmanager. For Thanos - v0.10.0 and higher, AlertManagersConfig should be used instead. Note: - this field will be ignored if AlertManagersConfig is specified. Maps - to the `alertmanagers.url` arg.' - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a ThanosRuler pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `thanos-ruler` and `rules-configmap-reloader`. Overriding containers - is entirely outside the scope of what the maintainers will support - and by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalPrefix: - description: The external URL the Thanos Ruler instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Thanos Ruler is not served from root of a DNS name. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which - Thanos Querier reads recorded rule data. Note: Currently only the - CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' - CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to - use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container - for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Thanos container image URL. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the ThanosRuler configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels configure the external label pairs to ThanosRuler. - If not provided, default replica label `thanos_ruler_replica` will - be added as a label and be dropped in alerts. - type: object - listenLocal: - description: ListenLocal makes the Thanos ruler listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for ThanosRuler to be configured with. - type: string - logLevel: - description: Log level for ThanosRuler to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - paused: - description: When a ThanosRuler deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata contains Labels and Annotations gets propagated - to the thanos ruler pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - queryConfig: - description: Define configuration for connecting to thanos query instances. - If this is defined, the QueryEndpoints field will be ignored. Maps - to the `query.config` CLI argument. Only available with thanos v0.11.0 - and higher. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - queryEndpoints: - description: QueryEndpoints defines Thanos querier endpoints from which - to query metrics. Maps to the --query flag of thanos ruler. - items: - type: string - type: array - replicas: - description: Number of thanos ruler instances to deploy. - format: int32 - type: integer - resources: - description: Resources defines the resource requirements for single - Pods. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration ThanosRuler shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - routePrefix: - description: The route prefix ThanosRuler registers HTTP handlers for. - This allows thanos UI to be served on a sub-path. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for Rules discovery. If unspecified, - only the same namespace as the ThanosRuler object is in is used. - 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 - ruleSelector: - description: A label selector to select which PrometheusRules to mount - for alerting and recording. - 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 - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Thanos Ruler Pods. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an - experimental feature, it may change in any upcoming release in a breaking - way. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the ThanosRuler cluster. Read-only. - Not included when requesting from the apiserver, only from the ThanosRuler - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this ThanosRuler deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this ThanosRuler - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/jobs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/manifest.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/rbac.yaml deleted file mode 100755 index 658304418..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/templates/rbac.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/values.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/values.yaml deleted file mode 100755 index 3aac0a046..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.200/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/Chart.yaml deleted file mode 100755 index 25940b84a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/release-name: rancher-monitoring-crd -apiVersion: v1 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 9.4.201 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/README.md b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/README.md deleted file mode 100755 index 48d2a8621..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-monitoring-crd -A Rancher chart that installs the CRDs used by rancher-monitoring. diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-alertmanager.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-alertmanager.yaml deleted file mode 100755 index 98030b4f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-alertmanager.yaml +++ /dev/null @@ -1,4500 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: alertmanagers.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Alertmanager - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Alertmanagers - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Alertmanager - listKind: AlertmanagerList - plural: alertmanagers - singular: alertmanager - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Alertmanager describes an Alertmanager cluster. - 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: 'Specification of the desired behavior of the Alertmanager - cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalPeers: - description: AdditionalPeers allows injecting a set of additional Alertmanagers - to peer with to form a highly available cluster. - items: - type: string - type: array - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - baseImage: - description: Base image that is used to deploy pods, without tag. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Alertmanager object, which shall be mounted into the Alertmanager - Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - items: - type: string - type: array - configSecret: - description: ConfigSecret is the name of a Kubernetes Secret in the - same namespace as the Alertmanager object, which contains configuration - for this Alertmanager instance. Defaults to 'alertmanager-' - The secret is mounted into /etc/alertmanager/config. - type: string - containers: - description: Containers allows injecting additional containers. This - is meant to allow adding an authentication proxy to an Alertmanager - pod. - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - externalUrl: - description: The external URL the Alertmanager instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Alertmanager is not served from root of a DNS name. - type: string - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Alertmanager is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Alertmanager configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Alertmanager server listen on loopback, - so that it does not bind against the Pod IP. Note this is only for - the Alertmanager UI, not the gossip communication. - type: boolean - logFormat: - description: Log format for Alertmanager to be configured with. - type: string - logLevel: - description: Log level for Alertmanager to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - paused: - description: If set to true all actions on the underlaying managed objects - are not goint to be performed, except for delete actions. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the alertmanager pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - replicas: - description: Size is the expected size of the alertmanager cluster. - The controller will eventually make the size of the running cluster - equal to the expected size. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Alertmanager shall retain data for. Default - is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` - (milliseconds seconds minutes hours). - type: string - routePrefix: - description: The route prefix Alertmanager registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Alertmanager object, which shall be mounted into the Alertmanager - Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - sha: - description: SHA of Alertmanager container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage is the definition of how storage will be used by - the Alertmanager instances. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Alertmanager container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version the cluster should be on. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the alertmanager container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the Alertmanager cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Alertmanager cluster. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Alertmanager - cluster. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-podmonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-podmonitor.yaml deleted file mode 100755 index 9cf3c42e4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-podmonitor.yaml +++ /dev/null @@ -1,260 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: podmonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PodMonitor - listKind: PodMonitorList - plural: podmonitors - singular: podmonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PodMonitor defines monitoring for a set of pods. - 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: Specification of desired Pod selection for target discovery - by Prometheus. - properties: - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podMetricsEndpoints: - description: A list of endpoints allowed as part of this PodMonitor. - items: - description: PodMetricsEndpoint defines a scrapeable endpoint of a - Kubernetes Pod serving Prometheus metrics. - properties: - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the pod port this endpoint refers to. Mutually - exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before ingestion. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Deprecated: Use ''port'' instead.' - x-kubernetes-int-or-string: true - type: object - type: array - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Pod objects. - 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 - required: - - podMetricsEndpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheus.yaml deleted file mode 100755 index 704379fb2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheus.yaml +++ /dev/null @@ -1,6002 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheuses.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Prometheus - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Prometheuses - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Prometheus - listKind: PrometheusList - plural: prometheuses - singular: prometheus - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Prometheus defines a Prometheus deployment. - 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: 'Specification of the desired behavior of the Prometheus cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalAlertManagerConfigs: - description: 'AdditionalAlertManagerConfigs allows specifying a key - of a Secret containing additional Prometheus AlertManager configurations. - AlertManager configurations specified are appended to the configurations - generated by the Prometheus Operator. Job configurations specified - must have the form as specified in the official Prometheus documentation: - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. - As AlertManager configs are appended, the user is responsible to make - sure it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible AlertManager configs - are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalAlertRelabelConfigs: - description: 'AdditionalAlertRelabelConfigs allows specifying a key - of a Secret containing additional Prometheus alert relabel configurations. - Alert relabel configurations specified are appended to the configurations - generated by the Prometheus Operator. Alert relabel configurations - specified must have the form as specified in the official Prometheus - documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. - As alert relabel configs are appended, the user is responsible to - make sure it is valid. Note that using this feature may expose the - possibility to break upgrades of Prometheus. It is advised to review - Prometheus release notes to ensure that no incompatible alert relabel - configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalScrapeConfigs: - description: 'AdditionalScrapeConfigs allows specifying a key of a Secret - containing additional Prometheus scrape configurations. Scrape configurations - specified are appended to the configurations generated by the Prometheus - Operator. Job configurations specified must have the form as specified - in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. - As scrape configs are appended, the user is responsible to make sure - it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible scrape configs are going - to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alerting: - description: Define details regarding alerting. - properties: - alertmanagers: - description: AlertmanagerEndpoints Prometheus should fire alerts - against. - items: - description: AlertmanagerEndpoints defines a selection of a single - Endpoints object containing alertmanager IPs to fire alerts - against. - properties: - apiVersion: - description: Version of the Alertmanager API that Prometheus - uses to send alerts. It can be "v1" or "v2". - type: string - bearerTokenFile: - description: BearerTokenFile to read from filesystem to use - when authenticating to Alertmanager. - type: string - name: - description: Name of Endpoints object in Namespace. - type: string - namespace: - description: Namespace of Endpoints object. - type: string - pathPrefix: - description: Prefix for the HTTP path alerts are pushed to. - type: string - port: - anyOf: - - type: integer - - type: string - description: Port the Alertmanager API is exposed on. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use when firing alerts. - type: string - tlsConfig: - description: TLS Config to use for alertmanager connection. - properties: - ca: - description: Stuct containing the CA cert to use for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for - the targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for - the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - name - - namespace - - port - type: object - type: array - required: - - alertmanagers - type: object - apiserverConfig: - description: APIServerConfig allows specifying a host and auth methods - to access apiserver. If left empty, Prometheus is assumed to run inside - of the cluster and will discover API servers automatically and use - the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. - properties: - basicAuth: - description: BasicAuth allow an endpoint to authenticate over basic - authentication - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: Bearer token for accessing apiserver. - type: string - bearerTokenFile: - description: File to read bearer token for accessing apiserver. - type: string - host: - description: Host of apiserver. A valid string consisting of a hostname - or IP followed by an optional port number - type: string - tlsConfig: - description: TLS Config to use for accessing apiserver. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - host - type: object - arbitraryFSAccessThroughSMs: - description: ArbitraryFSAccessThroughSMs configures whether configuration - based on a service monitor can access arbitrary files on the file - system of the Prometheus container e.g. bearer token files. - properties: - deny: - type: boolean - type: object - baseImage: - description: Base image to use for a Prometheus deployment. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Prometheus object, which shall be mounted into the Prometheus - Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a Prometheus pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `prometheus`, `prometheus-config-reloader`, `rules-configmap-reloader`, - and `thanos-sidecar`. Overriding containers is entirely outside the - scope of what the maintainers will support and by doing so, you accept - that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - disableCompaction: - description: Disable prometheus compaction. - type: boolean - enableAdminAPI: - description: 'Enable access to prometheus web admin API. Defaults to - the value of `false`. WARNING: Enabling the admin APIs enables mutating - endpoints, to delete data, shutdown Prometheus, and more. Enabling - this should be done with care and the user is advised to add additional - authentication authorization via a proxy to ensure only clients authorized - to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' - type: boolean - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalLabels: - additionalProperties: - type: string - description: The labels to add to any time series or alerts when communicating - with external systems (federation, remote storage, Alertmanager). - type: object - externalUrl: - description: The external URL the Prometheus instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Prometheus is not served from root of a DNS name. - type: string - ignoreNamespaceSelectors: - description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector - settings from the podmonitor and servicemonitor configs, and they - will only discover endpoints within their current namespace. Defaults - to false. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Prometheus is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Prometheus configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Prometheus server listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for Prometheus to be configured with. - type: string - logLevel: - description: Log level for Prometheus to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - overrideHonorLabels: - description: OverrideHonorLabels if set to true overrides all user configured - honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor - to true, this overrides honor_labels to false. - type: boolean - overrideHonorTimestamps: - description: OverrideHonorTimestamps allows to globally enforce honoring - timestamps in all scrape configs. - type: boolean - paused: - description: When a Prometheus deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the prometheus pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - podMonitorNamespaceSelector: - description: Namespaces to be selected for PodMonitor discovery. If - nil, only check own namespace. - 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 - podMonitorSelector: - description: '*Experimental* PodMonitors to be selected for target discovery.' - 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 - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - prometheusExternalLabelName: - description: Name of Prometheus external label used to denote Prometheus - instance name. Defaults to the value of `prometheus`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - query: - description: QuerySpec defines the query command line flags when starting - Prometheus. - properties: - lookbackDelta: - description: The delta difference allowed for retrieving metrics - during expression evaluations. - type: string - maxConcurrency: - description: Number of concurrent queries that can be run at once. - format: int32 - type: integer - maxSamples: - description: Maximum number of samples a single query can load into - memory. Note that queries will fail if they would load more samples - than this into memory, so this also limits the number of samples - a query can return. - format: int32 - type: integer - timeout: - description: Maximum time a query may take before being aborted. - type: string - type: object - remoteRead: - description: If specified, the remote_read spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteReadSpec defines the remote_read configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: bearer token for remote read. - type: string - bearerTokenFile: - description: File to read bearer token for remote read. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - readRecent: - description: Whether reads should be made for queries for time - ranges that the local storage should have complete data for. - type: boolean - remoteTimeout: - description: Timeout for requests to the remote read endpoint. - type: string - requiredMatchers: - additionalProperties: - type: string - description: An optional list of equality matchers which have - to be present in a selector to query the remote read endpoint. - type: object - tlsConfig: - description: TLS Config to use for remote read. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - required: - - url - type: object - type: array - remoteWrite: - description: If specified, the remote_write spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteWriteSpec defines the remote_write configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: File to read bearer token for remote write. - type: string - bearerTokenFile: - description: File to read bearer token for remote write. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - queueConfig: - description: QueueConfig allows tuning of the remote write queue - parameters. - properties: - batchSendDeadline: - description: BatchSendDeadline is the maximum time a sample - will wait in buffer. - type: string - capacity: - description: Capacity is the number of samples to buffer per - shard before we start dropping them. - type: integer - maxBackoff: - description: MaxBackoff is the maximum retry delay. - type: string - maxRetries: - description: MaxRetries is the maximum number of times to - retry a batch on recoverable errors. - type: integer - maxSamplesPerSend: - description: MaxSamplesPerSend is the maximum number of samples - per send. - type: integer - maxShards: - description: MaxShards is the maximum number of shards, i.e. - amount of concurrency. - type: integer - minBackoff: - description: MinBackoff is the initial retry delay. Gets doubled - for every retry. - type: string - minShards: - description: MinShards is the minimum number of shards, i.e. - amount of concurrency. - type: integer - type: object - remoteTimeout: - description: Timeout for requests to the remote write endpoint. - type: string - tlsConfig: - description: TLS Config to use for remote write. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - writeRelabelConfigs: - description: The list of remote write relabel configurations. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - required: - - url - type: object - type: array - replicaExternalLabelName: - description: Name of Prometheus external label used to denote replica - name. Defaults to the value of `prometheus_replica`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - replicas: - description: Number of instances to deploy for a Prometheus deployment. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Prometheus shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - retentionSize: - description: Maximum amount of disk space used by blocks. - type: string - routePrefix: - description: The route prefix Prometheus registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for PrometheusRules discovery. - If unspecified, only the same namespace as the Prometheus object is - in is used. - 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 - ruleSelector: - description: A selector to select which PrometheusRules to mount for - loading alerting rules from. Until (excluding) Prometheus Operator - v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps - to PrometheusRule custom resources selected by RuleSelector. Make - sure it does not match any config maps that you do not want to be - migrated. - 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 - rules: - description: /--rules.*/ command-line arguments. - properties: - alert: - description: /--rules.alert.*/ command-line arguments - properties: - forGracePeriod: - description: Minimum duration between alert and restored 'for' - state. This is maintained only for alerts with configured - 'for' time greater than grace period. - type: string - forOutageTolerance: - description: Max time to tolerate prometheus outage for restoring - 'for' state of alert. - type: string - resendDelay: - description: Minimum amount of time to wait before resending - an alert to Alertmanager. - type: string - type: object - type: object - scrapeInterval: - description: Interval between consecutive scrapes. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Prometheus object, which shall be mounted into the Prometheus Pods. - The Secrets are mounted into /etc/prometheus/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - serviceMonitorNamespaceSelector: - description: Namespaces to be selected for ServiceMonitor discovery. - If nil, only check own namespace. - 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 - serviceMonitorSelector: - description: ServiceMonitors to be selected for target discovery. - 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 - sha: - description: SHA of Prometheus container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Prometheus container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - thanos: - description: "Thanos configuration allows configuring various aspects - of a Prometheus server in a Thanos environment. \n This section is - experimental, it may change significantly without deprecation notice - in any release. \n This is experimental and may change significantly - without backward compatibility in any release." - properties: - baseImage: - description: Thanos base image if other than default. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from - which Thanos Querier reads recorded rule data. Note: Currently - only the CAFile, CertFile, and KeyFile fields are supported. Maps - to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Image if specified has precedence over baseImage, tag - and sha combinations. Specifying the version is still necessary - to ensure the Prometheus Operator knows what version of Thanos - is being configured. - type: string - listenLocal: - description: ListenLocal makes the Thanos sidecar listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - resources: - description: Resources defines the resource requirements for the - Thanos sidecar. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - sha: - description: SHA of Thanos container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - tag: - description: Tag of Thanos sidecar container image to be deployed. - Defaults to the value of `version`. Version is ignored if Tag - is set. - type: string - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is - an experimental feature, it may change in any upcoming release - in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - version: - description: Version describes the version of Thanos to use. - type: string - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version of Prometheus to be deployed. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the prometheus container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - walCompression: - description: Enable compression of the write-ahead log using Snappy. - This flag is only available in versions of Prometheus >= 2.11.0. - type: boolean - type: object - status: - description: 'Most recent observed status of the Prometheus cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Prometheus deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Prometheus - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheusrules.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheusrules.yaml deleted file mode 100755 index 5546de38e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-prometheusrules.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheusrules.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PrometheusRule - listKind: PrometheusRuleList - plural: prometheusrules - singular: prometheusrule - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PrometheusRule defines alerting rules for a Prometheus instance - 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: Specification of desired alerting rule definitions for Prometheus. - properties: - groups: - description: Content of Prometheus rule file - items: - description: 'RuleGroup is a list of sequentially evaluated recording - and alerting rules. Note: PartialResponseStrategy is only used by - ThanosRuler and will be ignored by Prometheus instances. Valid - values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' - properties: - interval: - type: string - name: - type: string - partial_response_strategy: - type: string - rules: - items: - description: Rule describes an alerting or recording rule. - properties: - alert: - type: string - annotations: - additionalProperties: - type: string - type: object - expr: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - for: - type: string - labels: - additionalProperties: - type: string - type: object - record: - type: string - required: - - expr - type: object - type: array - required: - - name - - rules - type: object - type: array - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-servicemonitor.yaml deleted file mode 100755 index 8f7a67c14..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-servicemonitor.yaml +++ /dev/null @@ -1,459 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: servicemonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ServiceMonitor - listKind: ServiceMonitorList - plural: servicemonitors - singular: servicemonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ServiceMonitor defines monitoring for a set of services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Specification of desired Service selection for target discovery - by Prometheus. - properties: - endpoints: - description: A list of endpoints allowed as part of this ServiceMonitor. - items: - description: Endpoint defines a scrapeable endpoint serving Prometheus - metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over - basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenFile: - description: File to read bearer token for scraping targets. - type: string - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping - targets. The secret needs to be in the same namespace as the - service monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be - defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the service port this endpoint refers to. - Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before scraping. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: Name or number of the pod port this endpoint refers - to. Mutually exclusive with port. - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Endpoints objects. - 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 - targetLabels: - description: TargetLabels transfers labels on the Kubernetes Service - onto the target. - items: - type: string - type: array - required: - - endpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-thanosrulers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-thanosrulers.yaml deleted file mode 100755 index 82136d73e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/crd-manifest/crd-thanosrulers.yaml +++ /dev/null @@ -1,4725 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: thanosrulers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ThanosRuler - listKind: ThanosRulerList - plural: thanosrulers - singular: thanosruler - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ThanosRuler defines a ThanosRuler deployment. - 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: 'Specification of the desired behavior of the ThanosRuler cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertDropLabels: - description: AlertDropLabels configure the label names which should - be dropped in ThanosRuler alerts. If `labels` field is not provided, - `thanos_ruler_replica` will be dropped in alerts by default. - items: - type: string - type: array - alertQueryUrl: - description: The external Query URL the Thanos Ruler will set in the - 'Source' field of all alerts. Maps to the '--alert.query-url' CLI - arg. - type: string - alertmanagersConfig: - description: Define configuration for connecting to alertmanager. Only - available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` - arg. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - alertmanagersUrl: - description: 'Define URLs to send alerts to Alertmanager. For Thanos - v0.10.0 and higher, AlertManagersConfig should be used instead. Note: - this field will be ignored if AlertManagersConfig is specified. Maps - to the `alertmanagers.url` arg.' - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a ThanosRuler pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `thanos-ruler` and `rules-configmap-reloader`. Overriding containers - is entirely outside the scope of what the maintainers will support - and by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalPrefix: - description: The external URL the Thanos Ruler instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Thanos Ruler is not served from root of a DNS name. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which - Thanos Querier reads recorded rule data. Note: Currently only the - CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' - CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to - use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container - for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Thanos container image URL. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the ThanosRuler configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels configure the external label pairs to ThanosRuler. - If not provided, default replica label `thanos_ruler_replica` will - be added as a label and be dropped in alerts. - type: object - listenLocal: - description: ListenLocal makes the Thanos ruler listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for ThanosRuler to be configured with. - type: string - logLevel: - description: Log level for ThanosRuler to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - paused: - description: When a ThanosRuler deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata contains Labels and Annotations gets propagated - to the thanos ruler pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - queryConfig: - description: Define configuration for connecting to thanos query instances. - If this is defined, the QueryEndpoints field will be ignored. Maps - to the `query.config` CLI argument. Only available with thanos v0.11.0 - and higher. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - queryEndpoints: - description: QueryEndpoints defines Thanos querier endpoints from which - to query metrics. Maps to the --query flag of thanos ruler. - items: - type: string - type: array - replicas: - description: Number of thanos ruler instances to deploy. - format: int32 - type: integer - resources: - description: Resources defines the resource requirements for single - Pods. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration ThanosRuler shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - routePrefix: - description: The route prefix ThanosRuler registers HTTP handlers for. - This allows thanos UI to be served on a sub-path. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for Rules discovery. If unspecified, - only the same namespace as the ThanosRuler object is in is used. - 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 - ruleSelector: - description: A label selector to select which PrometheusRules to mount - for alerting and recording. - 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 - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Thanos Ruler Pods. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an - experimental feature, it may change in any upcoming release in a breaking - way. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the ThanosRuler cluster. Read-only. - Not included when requesting from the apiserver, only from the ThanosRuler - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this ThanosRuler deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this ThanosRuler - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/jobs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/manifest.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/rbac.yaml deleted file mode 100755 index 658304418..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/templates/rbac.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/values.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/values.yaml deleted file mode 100755 index 3aac0a046..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.201/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/Chart.yaml deleted file mode 100755 index 39cce3f87..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/release-name: rancher-monitoring-crd -apiVersion: v1 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 9.4.202 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/README.md b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/README.md deleted file mode 100755 index 48d2a8621..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-monitoring-crd -A Rancher chart that installs the CRDs used by rancher-monitoring. diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-alertmanager.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-alertmanager.yaml deleted file mode 100755 index 98030b4f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-alertmanager.yaml +++ /dev/null @@ -1,4500 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: alertmanagers.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Alertmanager - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Alertmanagers - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Alertmanager - listKind: AlertmanagerList - plural: alertmanagers - singular: alertmanager - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Alertmanager describes an Alertmanager cluster. - 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: 'Specification of the desired behavior of the Alertmanager - cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalPeers: - description: AdditionalPeers allows injecting a set of additional Alertmanagers - to peer with to form a highly available cluster. - items: - type: string - type: array - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - baseImage: - description: Base image that is used to deploy pods, without tag. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Alertmanager object, which shall be mounted into the Alertmanager - Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - items: - type: string - type: array - configSecret: - description: ConfigSecret is the name of a Kubernetes Secret in the - same namespace as the Alertmanager object, which contains configuration - for this Alertmanager instance. Defaults to 'alertmanager-' - The secret is mounted into /etc/alertmanager/config. - type: string - containers: - description: Containers allows injecting additional containers. This - is meant to allow adding an authentication proxy to an Alertmanager - pod. - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - externalUrl: - description: The external URL the Alertmanager instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Alertmanager is not served from root of a DNS name. - type: string - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Alertmanager is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Alertmanager configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Alertmanager server listen on loopback, - so that it does not bind against the Pod IP. Note this is only for - the Alertmanager UI, not the gossip communication. - type: boolean - logFormat: - description: Log format for Alertmanager to be configured with. - type: string - logLevel: - description: Log level for Alertmanager to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - paused: - description: If set to true all actions on the underlaying managed objects - are not goint to be performed, except for delete actions. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the alertmanager pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - replicas: - description: Size is the expected size of the alertmanager cluster. - The controller will eventually make the size of the running cluster - equal to the expected size. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Alertmanager shall retain data for. Default - is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` - (milliseconds seconds minutes hours). - type: string - routePrefix: - description: The route prefix Alertmanager registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Alertmanager object, which shall be mounted into the Alertmanager - Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - sha: - description: SHA of Alertmanager container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage is the definition of how storage will be used by - the Alertmanager instances. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Alertmanager container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version the cluster should be on. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the alertmanager container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the Alertmanager cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Alertmanager cluster. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Alertmanager - cluster. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-podmonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-podmonitor.yaml deleted file mode 100755 index 9cf3c42e4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-podmonitor.yaml +++ /dev/null @@ -1,260 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: podmonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PodMonitor - listKind: PodMonitorList - plural: podmonitors - singular: podmonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PodMonitor defines monitoring for a set of pods. - 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: Specification of desired Pod selection for target discovery - by Prometheus. - properties: - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podMetricsEndpoints: - description: A list of endpoints allowed as part of this PodMonitor. - items: - description: PodMetricsEndpoint defines a scrapeable endpoint of a - Kubernetes Pod serving Prometheus metrics. - properties: - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the pod port this endpoint refers to. Mutually - exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before ingestion. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Deprecated: Use ''port'' instead.' - x-kubernetes-int-or-string: true - type: object - type: array - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Pod objects. - 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 - required: - - podMetricsEndpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheus.yaml deleted file mode 100755 index 704379fb2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheus.yaml +++ /dev/null @@ -1,6002 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheuses.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Prometheus - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Prometheuses - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Prometheus - listKind: PrometheusList - plural: prometheuses - singular: prometheus - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Prometheus defines a Prometheus deployment. - 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: 'Specification of the desired behavior of the Prometheus cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalAlertManagerConfigs: - description: 'AdditionalAlertManagerConfigs allows specifying a key - of a Secret containing additional Prometheus AlertManager configurations. - AlertManager configurations specified are appended to the configurations - generated by the Prometheus Operator. Job configurations specified - must have the form as specified in the official Prometheus documentation: - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. - As AlertManager configs are appended, the user is responsible to make - sure it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible AlertManager configs - are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalAlertRelabelConfigs: - description: 'AdditionalAlertRelabelConfigs allows specifying a key - of a Secret containing additional Prometheus alert relabel configurations. - Alert relabel configurations specified are appended to the configurations - generated by the Prometheus Operator. Alert relabel configurations - specified must have the form as specified in the official Prometheus - documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. - As alert relabel configs are appended, the user is responsible to - make sure it is valid. Note that using this feature may expose the - possibility to break upgrades of Prometheus. It is advised to review - Prometheus release notes to ensure that no incompatible alert relabel - configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalScrapeConfigs: - description: 'AdditionalScrapeConfigs allows specifying a key of a Secret - containing additional Prometheus scrape configurations. Scrape configurations - specified are appended to the configurations generated by the Prometheus - Operator. Job configurations specified must have the form as specified - in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. - As scrape configs are appended, the user is responsible to make sure - it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible scrape configs are going - to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alerting: - description: Define details regarding alerting. - properties: - alertmanagers: - description: AlertmanagerEndpoints Prometheus should fire alerts - against. - items: - description: AlertmanagerEndpoints defines a selection of a single - Endpoints object containing alertmanager IPs to fire alerts - against. - properties: - apiVersion: - description: Version of the Alertmanager API that Prometheus - uses to send alerts. It can be "v1" or "v2". - type: string - bearerTokenFile: - description: BearerTokenFile to read from filesystem to use - when authenticating to Alertmanager. - type: string - name: - description: Name of Endpoints object in Namespace. - type: string - namespace: - description: Namespace of Endpoints object. - type: string - pathPrefix: - description: Prefix for the HTTP path alerts are pushed to. - type: string - port: - anyOf: - - type: integer - - type: string - description: Port the Alertmanager API is exposed on. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use when firing alerts. - type: string - tlsConfig: - description: TLS Config to use for alertmanager connection. - properties: - ca: - description: Stuct containing the CA cert to use for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for - the targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for - the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - name - - namespace - - port - type: object - type: array - required: - - alertmanagers - type: object - apiserverConfig: - description: APIServerConfig allows specifying a host and auth methods - to access apiserver. If left empty, Prometheus is assumed to run inside - of the cluster and will discover API servers automatically and use - the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. - properties: - basicAuth: - description: BasicAuth allow an endpoint to authenticate over basic - authentication - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: Bearer token for accessing apiserver. - type: string - bearerTokenFile: - description: File to read bearer token for accessing apiserver. - type: string - host: - description: Host of apiserver. A valid string consisting of a hostname - or IP followed by an optional port number - type: string - tlsConfig: - description: TLS Config to use for accessing apiserver. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - host - type: object - arbitraryFSAccessThroughSMs: - description: ArbitraryFSAccessThroughSMs configures whether configuration - based on a service monitor can access arbitrary files on the file - system of the Prometheus container e.g. bearer token files. - properties: - deny: - type: boolean - type: object - baseImage: - description: Base image to use for a Prometheus deployment. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Prometheus object, which shall be mounted into the Prometheus - Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a Prometheus pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `prometheus`, `prometheus-config-reloader`, `rules-configmap-reloader`, - and `thanos-sidecar`. Overriding containers is entirely outside the - scope of what the maintainers will support and by doing so, you accept - that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - disableCompaction: - description: Disable prometheus compaction. - type: boolean - enableAdminAPI: - description: 'Enable access to prometheus web admin API. Defaults to - the value of `false`. WARNING: Enabling the admin APIs enables mutating - endpoints, to delete data, shutdown Prometheus, and more. Enabling - this should be done with care and the user is advised to add additional - authentication authorization via a proxy to ensure only clients authorized - to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' - type: boolean - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalLabels: - additionalProperties: - type: string - description: The labels to add to any time series or alerts when communicating - with external systems (federation, remote storage, Alertmanager). - type: object - externalUrl: - description: The external URL the Prometheus instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Prometheus is not served from root of a DNS name. - type: string - ignoreNamespaceSelectors: - description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector - settings from the podmonitor and servicemonitor configs, and they - will only discover endpoints within their current namespace. Defaults - to false. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Prometheus is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Prometheus configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Prometheus server listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for Prometheus to be configured with. - type: string - logLevel: - description: Log level for Prometheus to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - overrideHonorLabels: - description: OverrideHonorLabels if set to true overrides all user configured - honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor - to true, this overrides honor_labels to false. - type: boolean - overrideHonorTimestamps: - description: OverrideHonorTimestamps allows to globally enforce honoring - timestamps in all scrape configs. - type: boolean - paused: - description: When a Prometheus deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the prometheus pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - podMonitorNamespaceSelector: - description: Namespaces to be selected for PodMonitor discovery. If - nil, only check own namespace. - 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 - podMonitorSelector: - description: '*Experimental* PodMonitors to be selected for target discovery.' - 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 - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - prometheusExternalLabelName: - description: Name of Prometheus external label used to denote Prometheus - instance name. Defaults to the value of `prometheus`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - query: - description: QuerySpec defines the query command line flags when starting - Prometheus. - properties: - lookbackDelta: - description: The delta difference allowed for retrieving metrics - during expression evaluations. - type: string - maxConcurrency: - description: Number of concurrent queries that can be run at once. - format: int32 - type: integer - maxSamples: - description: Maximum number of samples a single query can load into - memory. Note that queries will fail if they would load more samples - than this into memory, so this also limits the number of samples - a query can return. - format: int32 - type: integer - timeout: - description: Maximum time a query may take before being aborted. - type: string - type: object - remoteRead: - description: If specified, the remote_read spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteReadSpec defines the remote_read configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: bearer token for remote read. - type: string - bearerTokenFile: - description: File to read bearer token for remote read. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - readRecent: - description: Whether reads should be made for queries for time - ranges that the local storage should have complete data for. - type: boolean - remoteTimeout: - description: Timeout for requests to the remote read endpoint. - type: string - requiredMatchers: - additionalProperties: - type: string - description: An optional list of equality matchers which have - to be present in a selector to query the remote read endpoint. - type: object - tlsConfig: - description: TLS Config to use for remote read. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - required: - - url - type: object - type: array - remoteWrite: - description: If specified, the remote_write spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteWriteSpec defines the remote_write configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: File to read bearer token for remote write. - type: string - bearerTokenFile: - description: File to read bearer token for remote write. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - queueConfig: - description: QueueConfig allows tuning of the remote write queue - parameters. - properties: - batchSendDeadline: - description: BatchSendDeadline is the maximum time a sample - will wait in buffer. - type: string - capacity: - description: Capacity is the number of samples to buffer per - shard before we start dropping them. - type: integer - maxBackoff: - description: MaxBackoff is the maximum retry delay. - type: string - maxRetries: - description: MaxRetries is the maximum number of times to - retry a batch on recoverable errors. - type: integer - maxSamplesPerSend: - description: MaxSamplesPerSend is the maximum number of samples - per send. - type: integer - maxShards: - description: MaxShards is the maximum number of shards, i.e. - amount of concurrency. - type: integer - minBackoff: - description: MinBackoff is the initial retry delay. Gets doubled - for every retry. - type: string - minShards: - description: MinShards is the minimum number of shards, i.e. - amount of concurrency. - type: integer - type: object - remoteTimeout: - description: Timeout for requests to the remote write endpoint. - type: string - tlsConfig: - description: TLS Config to use for remote write. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - writeRelabelConfigs: - description: The list of remote write relabel configurations. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - required: - - url - type: object - type: array - replicaExternalLabelName: - description: Name of Prometheus external label used to denote replica - name. Defaults to the value of `prometheus_replica`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - replicas: - description: Number of instances to deploy for a Prometheus deployment. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Prometheus shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - retentionSize: - description: Maximum amount of disk space used by blocks. - type: string - routePrefix: - description: The route prefix Prometheus registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for PrometheusRules discovery. - If unspecified, only the same namespace as the Prometheus object is - in is used. - 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 - ruleSelector: - description: A selector to select which PrometheusRules to mount for - loading alerting rules from. Until (excluding) Prometheus Operator - v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps - to PrometheusRule custom resources selected by RuleSelector. Make - sure it does not match any config maps that you do not want to be - migrated. - 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 - rules: - description: /--rules.*/ command-line arguments. - properties: - alert: - description: /--rules.alert.*/ command-line arguments - properties: - forGracePeriod: - description: Minimum duration between alert and restored 'for' - state. This is maintained only for alerts with configured - 'for' time greater than grace period. - type: string - forOutageTolerance: - description: Max time to tolerate prometheus outage for restoring - 'for' state of alert. - type: string - resendDelay: - description: Minimum amount of time to wait before resending - an alert to Alertmanager. - type: string - type: object - type: object - scrapeInterval: - description: Interval between consecutive scrapes. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Prometheus object, which shall be mounted into the Prometheus Pods. - The Secrets are mounted into /etc/prometheus/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - serviceMonitorNamespaceSelector: - description: Namespaces to be selected for ServiceMonitor discovery. - If nil, only check own namespace. - 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 - serviceMonitorSelector: - description: ServiceMonitors to be selected for target discovery. - 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 - sha: - description: SHA of Prometheus container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Prometheus container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - thanos: - description: "Thanos configuration allows configuring various aspects - of a Prometheus server in a Thanos environment. \n This section is - experimental, it may change significantly without deprecation notice - in any release. \n This is experimental and may change significantly - without backward compatibility in any release." - properties: - baseImage: - description: Thanos base image if other than default. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from - which Thanos Querier reads recorded rule data. Note: Currently - only the CAFile, CertFile, and KeyFile fields are supported. Maps - to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Image if specified has precedence over baseImage, tag - and sha combinations. Specifying the version is still necessary - to ensure the Prometheus Operator knows what version of Thanos - is being configured. - type: string - listenLocal: - description: ListenLocal makes the Thanos sidecar listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - resources: - description: Resources defines the resource requirements for the - Thanos sidecar. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - sha: - description: SHA of Thanos container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - tag: - description: Tag of Thanos sidecar container image to be deployed. - Defaults to the value of `version`. Version is ignored if Tag - is set. - type: string - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is - an experimental feature, it may change in any upcoming release - in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - version: - description: Version describes the version of Thanos to use. - type: string - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version of Prometheus to be deployed. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the prometheus container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - walCompression: - description: Enable compression of the write-ahead log using Snappy. - This flag is only available in versions of Prometheus >= 2.11.0. - type: boolean - type: object - status: - description: 'Most recent observed status of the Prometheus cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Prometheus deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Prometheus - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheusrules.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheusrules.yaml deleted file mode 100755 index 5546de38e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-prometheusrules.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheusrules.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PrometheusRule - listKind: PrometheusRuleList - plural: prometheusrules - singular: prometheusrule - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PrometheusRule defines alerting rules for a Prometheus instance - 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: Specification of desired alerting rule definitions for Prometheus. - properties: - groups: - description: Content of Prometheus rule file - items: - description: 'RuleGroup is a list of sequentially evaluated recording - and alerting rules. Note: PartialResponseStrategy is only used by - ThanosRuler and will be ignored by Prometheus instances. Valid - values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' - properties: - interval: - type: string - name: - type: string - partial_response_strategy: - type: string - rules: - items: - description: Rule describes an alerting or recording rule. - properties: - alert: - type: string - annotations: - additionalProperties: - type: string - type: object - expr: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - for: - type: string - labels: - additionalProperties: - type: string - type: object - record: - type: string - required: - - expr - type: object - type: array - required: - - name - - rules - type: object - type: array - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-servicemonitor.yaml deleted file mode 100755 index 8f7a67c14..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-servicemonitor.yaml +++ /dev/null @@ -1,459 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: servicemonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ServiceMonitor - listKind: ServiceMonitorList - plural: servicemonitors - singular: servicemonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ServiceMonitor defines monitoring for a set of services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Specification of desired Service selection for target discovery - by Prometheus. - properties: - endpoints: - description: A list of endpoints allowed as part of this ServiceMonitor. - items: - description: Endpoint defines a scrapeable endpoint serving Prometheus - metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over - basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenFile: - description: File to read bearer token for scraping targets. - type: string - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping - targets. The secret needs to be in the same namespace as the - service monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be - defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the service port this endpoint refers to. - Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before scraping. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: Name or number of the pod port this endpoint refers - to. Mutually exclusive with port. - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Endpoints objects. - 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 - targetLabels: - description: TargetLabels transfers labels on the Kubernetes Service - onto the target. - items: - type: string - type: array - required: - - endpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-thanosrulers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-thanosrulers.yaml deleted file mode 100755 index 82136d73e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/crd-manifest/crd-thanosrulers.yaml +++ /dev/null @@ -1,4725 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: thanosrulers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ThanosRuler - listKind: ThanosRulerList - plural: thanosrulers - singular: thanosruler - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ThanosRuler defines a ThanosRuler deployment. - 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: 'Specification of the desired behavior of the ThanosRuler cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertDropLabels: - description: AlertDropLabels configure the label names which should - be dropped in ThanosRuler alerts. If `labels` field is not provided, - `thanos_ruler_replica` will be dropped in alerts by default. - items: - type: string - type: array - alertQueryUrl: - description: The external Query URL the Thanos Ruler will set in the - 'Source' field of all alerts. Maps to the '--alert.query-url' CLI - arg. - type: string - alertmanagersConfig: - description: Define configuration for connecting to alertmanager. Only - available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` - arg. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - alertmanagersUrl: - description: 'Define URLs to send alerts to Alertmanager. For Thanos - v0.10.0 and higher, AlertManagersConfig should be used instead. Note: - this field will be ignored if AlertManagersConfig is specified. Maps - to the `alertmanagers.url` arg.' - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a ThanosRuler pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `thanos-ruler` and `rules-configmap-reloader`. Overriding containers - is entirely outside the scope of what the maintainers will support - and by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalPrefix: - description: The external URL the Thanos Ruler instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Thanos Ruler is not served from root of a DNS name. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which - Thanos Querier reads recorded rule data. Note: Currently only the - CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' - CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to - use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container - for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Thanos container image URL. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the ThanosRuler configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels configure the external label pairs to ThanosRuler. - If not provided, default replica label `thanos_ruler_replica` will - be added as a label and be dropped in alerts. - type: object - listenLocal: - description: ListenLocal makes the Thanos ruler listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for ThanosRuler to be configured with. - type: string - logLevel: - description: Log level for ThanosRuler to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - paused: - description: When a ThanosRuler deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata contains Labels and Annotations gets propagated - to the thanos ruler pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - queryConfig: - description: Define configuration for connecting to thanos query instances. - If this is defined, the QueryEndpoints field will be ignored. Maps - to the `query.config` CLI argument. Only available with thanos v0.11.0 - and higher. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - queryEndpoints: - description: QueryEndpoints defines Thanos querier endpoints from which - to query metrics. Maps to the --query flag of thanos ruler. - items: - type: string - type: array - replicas: - description: Number of thanos ruler instances to deploy. - format: int32 - type: integer - resources: - description: Resources defines the resource requirements for single - Pods. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration ThanosRuler shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - routePrefix: - description: The route prefix ThanosRuler registers HTTP handlers for. - This allows thanos UI to be served on a sub-path. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for Rules discovery. If unspecified, - only the same namespace as the ThanosRuler object is in is used. - 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 - ruleSelector: - description: A label selector to select which PrometheusRules to mount - for alerting and recording. - 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 - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Thanos Ruler Pods. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an - experimental feature, it may change in any upcoming release in a breaking - way. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the ThanosRuler cluster. Read-only. - Not included when requesting from the apiserver, only from the ThanosRuler - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this ThanosRuler deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this ThanosRuler - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/jobs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/manifest.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/rbac.yaml deleted file mode 100755 index bdda1ddad..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/values.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/values.yaml deleted file mode 100755 index 3aac0a046..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.202/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/Chart.yaml deleted file mode 100755 index e13bacc12..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/Chart.yaml +++ /dev/null @@ -1,10 +0,0 @@ -annotations: - catalog.cattle.io/certified: rancher - catalog.cattle.io/hidden: "true" - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/release-name: rancher-monitoring-crd -apiVersion: v1 -description: Installs the CRDs for rancher-monitoring. -name: rancher-monitoring-crd -type: application -version: 9.4.203 diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/README.md b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/README.md deleted file mode 100755 index 48d2a8621..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# rancher-monitoring-crd -A Rancher chart that installs the CRDs used by rancher-monitoring. diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-alertmanager.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-alertmanager.yaml deleted file mode 100755 index 98030b4f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-alertmanager.yaml +++ /dev/null @@ -1,4500 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: alertmanagers.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Alertmanager - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Alertmanagers - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Alertmanager - listKind: AlertmanagerList - plural: alertmanagers - singular: alertmanager - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Alertmanager describes an Alertmanager cluster. - 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: 'Specification of the desired behavior of the Alertmanager - cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalPeers: - description: AdditionalPeers allows injecting a set of additional Alertmanagers - to peer with to form a highly available cluster. - items: - type: string - type: array - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - baseImage: - description: Base image that is used to deploy pods, without tag. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Alertmanager object, which shall be mounted into the Alertmanager - Pods. The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - items: - type: string - type: array - configSecret: - description: ConfigSecret is the name of a Kubernetes Secret in the - same namespace as the Alertmanager object, which contains configuration - for this Alertmanager instance. Defaults to 'alertmanager-' - The secret is mounted into /etc/alertmanager/config. - type: string - containers: - description: Containers allows injecting additional containers. This - is meant to allow adding an authentication proxy to an Alertmanager - pod. - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - externalUrl: - description: The external URL the Alertmanager instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Alertmanager is not served from root of a DNS name. - type: string - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Alertmanager is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Alertmanager configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Alertmanager server listen on loopback, - so that it does not bind against the Pod IP. Note this is only for - the Alertmanager UI, not the gossip communication. - type: boolean - logFormat: - description: Log format for Alertmanager to be configured with. - type: string - logLevel: - description: Log level for Alertmanager to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - paused: - description: If set to true all actions on the underlaying managed objects - are not goint to be performed, except for delete actions. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the alertmanager pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - replicas: - description: Size is the expected size of the alertmanager cluster. - The controller will eventually make the size of the running cluster - equal to the expected size. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Alertmanager shall retain data for. Default - is '120h', and must match the regular expression `[0-9]+(ms|s|m|h)` - (milliseconds seconds minutes hours). - type: string - routePrefix: - description: The route prefix Alertmanager registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Alertmanager object, which shall be mounted into the Alertmanager - Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - sha: - description: SHA of Alertmanager container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage is the definition of how storage will be used by - the Alertmanager instances. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Alertmanager container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version the cluster should be on. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the alertmanager container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the Alertmanager cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Alertmanager cluster. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Alertmanager - cluster. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Alertmanager - cluster that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-podmonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-podmonitor.yaml deleted file mode 100755 index 9cf3c42e4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-podmonitor.yaml +++ /dev/null @@ -1,260 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: podmonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PodMonitor - listKind: PodMonitorList - plural: podmonitors - singular: podmonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PodMonitor defines monitoring for a set of pods. - 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: Specification of desired Pod selection for target discovery - by Prometheus. - properties: - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podMetricsEndpoints: - description: A list of endpoints allowed as part of this PodMonitor. - items: - description: PodMetricsEndpoint defines a scrapeable endpoint of a - Kubernetes Pod serving Prometheus metrics. - properties: - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the pod port this endpoint refers to. Mutually - exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before ingestion. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: 'Deprecated: Use ''port'' instead.' - x-kubernetes-int-or-string: true - type: object - type: array - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Pod objects. - 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 - required: - - podMetricsEndpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheus.yaml deleted file mode 100755 index 704379fb2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheus.yaml +++ /dev/null @@ -1,6002 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheuses.monitoring.coreos.com -spec: - additionalPrinterColumns: - - JSONPath: .spec.version - description: The version of Prometheus - name: Version - type: string - - JSONPath: .spec.replicas - description: The desired replicas number of Prometheuses - name: Replicas - type: integer - - JSONPath: .metadata.creationTimestamp - name: Age - type: date - group: monitoring.coreos.com - names: - kind: Prometheus - listKind: PrometheusList - plural: prometheuses - singular: prometheus - preserveUnknownFields: false - scope: Namespaced - subresources: {} - validation: - openAPIV3Schema: - description: Prometheus defines a Prometheus deployment. - 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: 'Specification of the desired behavior of the Prometheus cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - additionalAlertManagerConfigs: - description: 'AdditionalAlertManagerConfigs allows specifying a key - of a Secret containing additional Prometheus AlertManager configurations. - AlertManager configurations specified are appended to the configurations - generated by the Prometheus Operator. Job configurations specified - must have the form as specified in the official Prometheus documentation: - https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alertmanager_config. - As AlertManager configs are appended, the user is responsible to make - sure it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible AlertManager configs - are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalAlertRelabelConfigs: - description: 'AdditionalAlertRelabelConfigs allows specifying a key - of a Secret containing additional Prometheus alert relabel configurations. - Alert relabel configurations specified are appended to the configurations - generated by the Prometheus Operator. Alert relabel configurations - specified must have the form as specified in the official Prometheus - documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. - As alert relabel configs are appended, the user is responsible to - make sure it is valid. Note that using this feature may expose the - possibility to break upgrades of Prometheus. It is advised to review - Prometheus release notes to ensure that no incompatible alert relabel - configs are going to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - additionalScrapeConfigs: - description: 'AdditionalScrapeConfigs allows specifying a key of a Secret - containing additional Prometheus scrape configurations. Scrape configurations - specified are appended to the configurations generated by the Prometheus - Operator. Job configurations specified must have the form as specified - in the official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. - As scrape configs are appended, the user is responsible to make sure - it is valid. Note that using this feature may expose the possibility - to break upgrades of Prometheus. It is advised to review Prometheus - release notes to ensure that no incompatible scrape configs are going - to break Prometheus after the upgrade.' - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alerting: - description: Define details regarding alerting. - properties: - alertmanagers: - description: AlertmanagerEndpoints Prometheus should fire alerts - against. - items: - description: AlertmanagerEndpoints defines a selection of a single - Endpoints object containing alertmanager IPs to fire alerts - against. - properties: - apiVersion: - description: Version of the Alertmanager API that Prometheus - uses to send alerts. It can be "v1" or "v2". - type: string - bearerTokenFile: - description: BearerTokenFile to read from filesystem to use - when authenticating to Alertmanager. - type: string - name: - description: Name of Endpoints object in Namespace. - type: string - namespace: - description: Namespace of Endpoints object. - type: string - pathPrefix: - description: Prefix for the HTTP path alerts are pushed to. - type: string - port: - anyOf: - - type: integer - - type: string - description: Port the Alertmanager API is exposed on. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use when firing alerts. - type: string - tlsConfig: - description: TLS Config to use for alertmanager connection. - properties: - ca: - description: Stuct containing the CA cert to use for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for - the targets. - properties: - configMap: - description: ConfigMap containing data to use for - the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or - its key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: - https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its - key must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for - the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - name - - namespace - - port - type: object - type: array - required: - - alertmanagers - type: object - apiserverConfig: - description: APIServerConfig allows specifying a host and auth methods - to access apiserver. If left empty, Prometheus is assumed to run inside - of the cluster and will discover API servers automatically and use - the pod's CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/. - properties: - basicAuth: - description: BasicAuth allow an endpoint to authenticate over basic - authentication - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: Bearer token for accessing apiserver. - type: string - bearerTokenFile: - description: File to read bearer token for accessing apiserver. - type: string - host: - description: Host of apiserver. A valid string consisting of a hostname - or IP followed by an optional port number - type: string - tlsConfig: - description: TLS Config to use for accessing apiserver. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - required: - - host - type: object - arbitraryFSAccessThroughSMs: - description: ArbitraryFSAccessThroughSMs configures whether configuration - based on a service monitor can access arbitrary files on the file - system of the Prometheus container e.g. bearer token files. - properties: - deny: - type: boolean - type: object - baseImage: - description: Base image to use for a Prometheus deployment. - type: string - configMaps: - description: ConfigMaps is a list of ConfigMaps in the same namespace - as the Prometheus object, which shall be mounted into the Prometheus - Pods. The ConfigMaps are mounted into /etc/prometheus/configmaps/. - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a Prometheus pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `prometheus`, `prometheus-config-reloader`, `rules-configmap-reloader`, - and `thanos-sidecar`. Overriding containers is entirely outside the - scope of what the maintainers will support and by doing so, you accept - that this behaviour may break at any time without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - disableCompaction: - description: Disable prometheus compaction. - type: boolean - enableAdminAPI: - description: 'Enable access to prometheus web admin API. Defaults to - the value of `false`. WARNING: Enabling the admin APIs enables mutating - endpoints, to delete data, shutdown Prometheus, and more. Enabling - this should be done with care and the user is advised to add additional - authentication authorization via a proxy to ensure only clients authorized - to perform these actions can do so. For more information see https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis' - type: boolean - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalLabels: - additionalProperties: - type: string - description: The labels to add to any time series or alerts when communicating - with external systems (federation, remote storage, Alertmanager). - type: object - externalUrl: - description: The external URL the Prometheus instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Prometheus is not served from root of a DNS name. - type: string - ignoreNamespaceSelectors: - description: IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector - settings from the podmonitor and servicemonitor configs, and they - will only discover endpoints within their current namespace. Defaults - to false. - type: boolean - image: - description: Image if specified has precedence over baseImage, tag and - sha combinations. Specifying the version is still necessary to ensure - the Prometheus Operator knows what version of Prometheus is being - configured. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling prometheus and alertmanager images from registries - see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the Prometheus configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - listenLocal: - description: ListenLocal makes the Prometheus server listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for Prometheus to be configured with. - type: string - logLevel: - description: Log level for Prometheus to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - overrideHonorLabels: - description: OverrideHonorLabels if set to true overrides all user configured - honor_labels. If HonorLabels is set in ServiceMonitor or PodMonitor - to true, this overrides honor_labels to false. - type: boolean - overrideHonorTimestamps: - description: OverrideHonorTimestamps allows to globally enforce honoring - timestamps in all scrape configs. - type: boolean - paused: - description: When a Prometheus deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata configures Labels and Annotations which are - propagated to the prometheus pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - podMonitorNamespaceSelector: - description: Namespaces to be selected for PodMonitor discovery. If - nil, only check own namespace. - 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 - podMonitorSelector: - description: '*Experimental* PodMonitors to be selected for target discovery.' - 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 - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - prometheusExternalLabelName: - description: Name of Prometheus external label used to denote Prometheus - instance name. Defaults to the value of `prometheus`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - query: - description: QuerySpec defines the query command line flags when starting - Prometheus. - properties: - lookbackDelta: - description: The delta difference allowed for retrieving metrics - during expression evaluations. - type: string - maxConcurrency: - description: Number of concurrent queries that can be run at once. - format: int32 - type: integer - maxSamples: - description: Maximum number of samples a single query can load into - memory. Note that queries will fail if they would load more samples - than this into memory, so this also limits the number of samples - a query can return. - format: int32 - type: integer - timeout: - description: Maximum time a query may take before being aborted. - type: string - type: object - remoteRead: - description: If specified, the remote_read spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteReadSpec defines the remote_read configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: bearer token for remote read. - type: string - bearerTokenFile: - description: File to read bearer token for remote read. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - readRecent: - description: Whether reads should be made for queries for time - ranges that the local storage should have complete data for. - type: boolean - remoteTimeout: - description: Timeout for requests to the remote read endpoint. - type: string - requiredMatchers: - additionalProperties: - type: string - description: An optional list of equality matchers which have - to be present in a selector to query the remote read endpoint. - type: object - tlsConfig: - description: TLS Config to use for remote read. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - required: - - url - type: object - type: array - remoteWrite: - description: If specified, the remote_write spec. This is an experimental - feature, it may change in any upcoming release in a breaking way. - items: - description: RemoteWriteSpec defines the remote_write configuration - for prometheus. - properties: - basicAuth: - description: BasicAuth for the URL. - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerToken: - description: File to read bearer token for remote write. - type: string - bearerTokenFile: - description: File to read bearer token for remote write. - type: string - proxyUrl: - description: Optional ProxyURL - type: string - queueConfig: - description: QueueConfig allows tuning of the remote write queue - parameters. - properties: - batchSendDeadline: - description: BatchSendDeadline is the maximum time a sample - will wait in buffer. - type: string - capacity: - description: Capacity is the number of samples to buffer per - shard before we start dropping them. - type: integer - maxBackoff: - description: MaxBackoff is the maximum retry delay. - type: string - maxRetries: - description: MaxRetries is the maximum number of times to - retry a batch on recoverable errors. - type: integer - maxSamplesPerSend: - description: MaxSamplesPerSend is the maximum number of samples - per send. - type: integer - maxShards: - description: MaxShards is the maximum number of shards, i.e. - amount of concurrency. - type: integer - minBackoff: - description: MinBackoff is the initial retry delay. Gets doubled - for every retry. - type: string - minShards: - description: MinShards is the minimum number of shards, i.e. - amount of concurrency. - type: integer - type: object - remoteTimeout: - description: Timeout for requests to the remote write endpoint. - type: string - tlsConfig: - description: TLS Config to use for remote write. - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - url: - description: The URL of the endpoint to send samples to. - type: string - writeRelabelConfigs: - description: The list of remote write relabel configurations. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - required: - - url - type: object - type: array - replicaExternalLabelName: - description: Name of Prometheus external label used to denote replica - name. Defaults to the value of `prometheus_replica`. External label - will _not_ be added when value is set to empty string (`""`). - type: string - replicas: - description: Number of instances to deploy for a Prometheus deployment. - format: int32 - type: integer - resources: - description: Define resources requests and limits for single Pods. - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration Prometheus shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - retentionSize: - description: Maximum amount of disk space used by blocks. - type: string - routePrefix: - description: The route prefix Prometheus registers HTTP handlers for. - This is useful, if using ExternalURL and a proxy is rewriting HTTP - routes of a request, and the actual ExternalURL is still true, but - the server serves requests under a different route prefix. For example - for use with `kubectl proxy`. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for PrometheusRules discovery. - If unspecified, only the same namespace as the Prometheus object is - in is used. - 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 - ruleSelector: - description: A selector to select which PrometheusRules to mount for - loading alerting rules from. Until (excluding) Prometheus Operator - v0.24.0 Prometheus Operator will migrate any legacy rule ConfigMaps - to PrometheusRule custom resources selected by RuleSelector. Make - sure it does not match any config maps that you do not want to be - migrated. - 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 - rules: - description: /--rules.*/ command-line arguments. - properties: - alert: - description: /--rules.alert.*/ command-line arguments - properties: - forGracePeriod: - description: Minimum duration between alert and restored 'for' - state. This is maintained only for alerts with configured - 'for' time greater than grace period. - type: string - forOutageTolerance: - description: Max time to tolerate prometheus outage for restoring - 'for' state of alert. - type: string - resendDelay: - description: Minimum amount of time to wait before resending - an alert to Alertmanager. - type: string - type: object - type: object - scrapeInterval: - description: Interval between consecutive scrapes. - type: string - secrets: - description: Secrets is a list of Secrets in the same namespace as the - Prometheus object, which shall be mounted into the Prometheus Pods. - The Secrets are mounted into /etc/prometheus/secrets/. - items: - type: string - type: array - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Prometheus Pods. - type: string - serviceMonitorNamespaceSelector: - description: Namespaces to be selected for ServiceMonitor discovery. - If nil, only check own namespace. - 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 - serviceMonitorSelector: - description: ServiceMonitors to be selected for target discovery. - 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 - sha: - description: SHA of Prometheus container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tag: - description: Tag of Prometheus container image to be deployed. Defaults - to the value of `version`. Version is ignored if Tag is set. - type: string - thanos: - description: "Thanos configuration allows configuring various aspects - of a Prometheus server in a Thanos environment. \n This section is - experimental, it may change significantly without deprecation notice - in any release. \n This is experimental and may change significantly - without backward compatibility in any release." - properties: - baseImage: - description: Thanos base image if other than default. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from - which Thanos Querier reads recorded rule data. Note: Currently - only the CAFile, CertFile, and KeyFile fields are supported. Maps - to the ''--grpc-server-tls-*'' CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key - must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Image if specified has precedence over baseImage, tag - and sha combinations. Specifying the version is still necessary - to ensure the Prometheus Operator knows what version of Thanos - is being configured. - type: string - listenLocal: - description: ListenLocal makes the Thanos sidecar listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - resources: - description: Resources defines the resource requirements for the - Thanos sidecar. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - sha: - description: SHA of Thanos container image to be deployed. Defaults - to the value of `version`. Similar to a tag, but the SHA explicitly - deploys an immutable container image. Version and Tag are ignored - if SHA is set. - type: string - tag: - description: Tag of Thanos sidecar container image to be deployed. - Defaults to the value of `version`. Version is ignored if Tag - is set. - type: string - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is - an experimental feature, it may change in any upcoming release - in a breaking way. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - version: - description: Version describes the version of Thanos to use. - type: string - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - version: - description: Version of Prometheus to be deployed. - type: string - volumeMounts: - description: VolumeMounts allows configuration of additional VolumeMounts - on the output StatefulSet definition. VolumeMounts specified will - be appended to other VolumeMounts in the prometheus container, that - are generated as a result of StorageSpec objects. - items: - description: VolumeMount describes a mounting of a Volume within a - container. - properties: - mountPath: - description: Path within the container at which the volume should - be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are propagated - from the host to container and the other way around. When not - set, MountPropagationNone is used. This field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise (false - or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which the container's - volume should be mounted. Behaves similarly to SubPath but environment - variable references $(VAR_NAME) are expanded using the container's - environment. Defaults to "" (volume's root). SubPathExpr and - SubPath are mutually exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - walCompression: - description: Enable compression of the write-ahead log using Snappy. - This flag is only available in versions of Prometheus >= 2.11.0. - type: boolean - type: object - status: - description: 'Most recent observed status of the Prometheus cluster. Read-only. - Not included when requesting from the apiserver, only from the Prometheus - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this Prometheus deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlaying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this Prometheus - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this Prometheus - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheusrules.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheusrules.yaml deleted file mode 100755 index 5546de38e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-prometheusrules.yaml +++ /dev/null @@ -1,91 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_prometheusrules.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: prometheusrules.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: PrometheusRule - listKind: PrometheusRuleList - plural: prometheusrules - singular: prometheusrule - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: PrometheusRule defines alerting rules for a Prometheus instance - 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: Specification of desired alerting rule definitions for Prometheus. - properties: - groups: - description: Content of Prometheus rule file - items: - description: 'RuleGroup is a list of sequentially evaluated recording - and alerting rules. Note: PartialResponseStrategy is only used by - ThanosRuler and will be ignored by Prometheus instances. Valid - values for this field are ''warn'' or ''abort''. More info: https://github.com/thanos-io/thanos/blob/master/docs/components/rule.md#partial-response' - properties: - interval: - type: string - name: - type: string - partial_response_strategy: - type: string - rules: - items: - description: Rule describes an alerting or recording rule. - properties: - alert: - type: string - annotations: - additionalProperties: - type: string - type: object - expr: - anyOf: - - type: integer - - type: string - x-kubernetes-int-or-string: true - for: - type: string - labels: - additionalProperties: - type: string - type: object - record: - type: string - required: - - expr - type: object - type: array - required: - - name - - rules - type: object - type: array - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-servicemonitor.yaml deleted file mode 100755 index 8f7a67c14..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-servicemonitor.yaml +++ /dev/null @@ -1,459 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: servicemonitors.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ServiceMonitor - listKind: ServiceMonitorList - plural: servicemonitors - singular: servicemonitor - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ServiceMonitor defines monitoring for a set of services. - properties: - apiVersion: - description: 'APIVersion defines the versioned schema of this representation - of an object. Servers should convert recognized schemas to the latest - internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' - type: string - kind: - description: 'Kind is a string value representing the REST resource this - object represents. Servers may infer this from the endpoint the client - submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' - type: string - metadata: - type: object - spec: - description: Specification of desired Service selection for target discovery - by Prometheus. - properties: - endpoints: - description: A list of endpoints allowed as part of this ServiceMonitor. - items: - description: Endpoint defines a scrapeable endpoint serving Prometheus - metrics. - properties: - basicAuth: - description: 'BasicAuth allow an endpoint to authenticate over - basic authentication More info: https://prometheus.io/docs/operating/configuration/#endpoints' - properties: - password: - description: The secret in the service monitor namespace that - contains the password for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - username: - description: The secret in the service monitor namespace that - contains the username for authentication. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - bearerTokenFile: - description: File to read bearer token for scraping targets. - type: string - bearerTokenSecret: - description: Secret to mount to read bearer token for scraping - targets. The secret needs to be in the same namespace as the - service monitor and accessible by the Prometheus Operator. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be - defined - type: boolean - required: - - key - type: object - honorLabels: - description: HonorLabels chooses the metric's labels on collisions - with target labels. - type: boolean - honorTimestamps: - description: HonorTimestamps controls whether Prometheus respects - the timestamps present in scraped data. - type: boolean - interval: - description: Interval at which metrics should be scraped - type: string - metricRelabelings: - description: MetricRelabelConfigs to apply to samples before ingestion. - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - params: - additionalProperties: - items: - type: string - type: array - description: Optional HTTP URL parameters - type: object - path: - description: HTTP path to scrape for metrics. - type: string - port: - description: Name of the service port this endpoint refers to. - Mutually exclusive with targetPort. - type: string - proxyUrl: - description: ProxyURL eg http://proxyserver:2195 Directs scrapes - to proxy through this endpoint. - type: string - relabelings: - description: 'RelabelConfigs to apply to samples before scraping. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config' - items: - description: 'RelabelConfig allows dynamic rewriting of the - label set, being applied to samples before ingestion. It defines - ``-section of Prometheus configuration. - More info: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#metric_relabel_configs' - properties: - action: - description: Action to perform based on regex matching. - Default is 'replace' - type: string - modulus: - description: Modulus to take of the hash of the source label - values. - format: int64 - type: integer - regex: - description: Regular expression against which the extracted - value is matched. Default is '(.*)' - type: string - replacement: - description: Replacement value against which a regex replace - is performed if the regular expression matches. Regex - capture groups are available. Default is '$1' - type: string - separator: - description: Separator placed between concatenated source - label values. default is ';'. - type: string - sourceLabels: - description: The source labels select values from existing - labels. Their content is concatenated using the configured - separator and matched against the configured regular expression - for the replace, keep, and drop actions. - items: - type: string - type: array - targetLabel: - description: Label to which the resulting value is written - in a replace action. It is mandatory for replace actions. - Regex capture groups are available. - type: string - type: object - type: array - scheme: - description: HTTP scheme to use for scraping. - type: string - scrapeTimeout: - description: Timeout after which the scrape is ended - type: string - targetPort: - anyOf: - - type: integer - - type: string - description: Name or number of the pod port this endpoint refers - to. Mutually exclusive with port. - x-kubernetes-int-or-string: true - tlsConfig: - description: TLS configuration to use when scraping the endpoint - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container - to use for the targets. - type: string - cert: - description: Struct containing the client cert file for the - targets. - properties: - configMap: - description: ConfigMap containing data to use for the - targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus - container for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus - container for the targets. - type: string - keySecret: - description: Secret containing the client key file for the - targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - type: object - type: array - jobLabel: - description: The label to use to retrieve the job name from. - type: string - namespaceSelector: - description: Selector to select which namespaces the Endpoints objects - are discovered from. - properties: - any: - description: Boolean describing whether all namespaces are selected - in contrast to a list restricting them. - type: boolean - matchNames: - description: List of namespace names. - items: - type: string - type: array - type: object - podTargetLabels: - description: PodTargetLabels transfers labels on the Kubernetes Pod - onto the target. - items: - type: string - type: array - sampleLimit: - description: SampleLimit defines per-scrape limit on number of scraped - samples that will be accepted. - format: int64 - type: integer - selector: - description: Selector to select Endpoints objects. - 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 - targetLabels: - description: TargetLabels transfers labels on the Kubernetes Service - onto the target. - items: - type: string - type: array - required: - - endpoints - - selector - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-thanosrulers.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-thanosrulers.yaml deleted file mode 100755 index 82136d73e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/crd-manifest/crd-thanosrulers.yaml +++ /dev/null @@ -1,4725 +0,0 @@ -# https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.38/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -apiVersion: apiextensions.k8s.io/v1beta1 -kind: CustomResourceDefinition -metadata: - annotations: - controller-gen.kubebuilder.io/version: v0.2.4 - creationTimestamp: null - name: thanosrulers.monitoring.coreos.com -spec: - group: monitoring.coreos.com - names: - kind: ThanosRuler - listKind: ThanosRulerList - plural: thanosrulers - singular: thanosruler - preserveUnknownFields: false - scope: Namespaced - validation: - openAPIV3Schema: - description: ThanosRuler defines a ThanosRuler deployment. - 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: 'Specification of the desired behavior of the ThanosRuler cluster. - More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - affinity: - description: If specified, the pod's scheduling constraints. - properties: - nodeAffinity: - description: Describes node affinity scheduling rules for the pod. - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node matches the corresponding matchExpressions; the - node(s) with the highest sum are the most preferred. - items: - description: An empty preferred scheduling term matches all - objects with implicit weight 0 (i.e. it's a no-op). A null - preferred scheduling term matches no objects (i.e. is also - a no-op). - properties: - preference: - description: A node selector term, associated with the - corresponding weight. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - weight: - description: Weight associated with matching the corresponding - nodeSelectorTerm, in the range 1-100. - format: int32 - type: integer - required: - - preference - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to an update), the system may or may not try to - eventually evict the pod from its node. - properties: - nodeSelectorTerms: - description: Required. A list of node selector terms. The - terms are ORed. - items: - description: A null or empty node selector term matches - no objects. The requirements of them are ANDed. The - TopologySelectorTerm type implements a subset of the - NodeSelectorTerm. - properties: - matchExpressions: - description: A list of node selector requirements - by node's labels. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - matchFields: - description: A list of node selector requirements - by node's fields. - items: - description: A node selector requirement is a selector - that contains values, a key, and an operator that - relates the key and values. - properties: - key: - description: The label key that the selector - applies to. - type: string - operator: - description: Represents a key's relationship - to a set of values. Valid operators are In, - NotIn, Exists, DoesNotExist. Gt, and Lt. - type: string - values: - description: 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. If the operator is Gt or Lt, the values - array must have a single element, which will - be interpreted as an integer. This array is - replaced during a strategic merge patch. - items: - type: string - type: array - required: - - key - - operator - type: object - type: array - type: object - type: array - required: - - nodeSelectorTerms - type: object - type: object - podAffinity: - description: Describes pod affinity scheduling rules (e.g. co-locate - this pod in the same node, zone, etc. as some other pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the affinity expressions specified by this field, - but it may choose a node that violates one or more of the - expressions. The node that is most preferred is the one with - the greatest sum of weights, i.e. for each node that meets - all of the scheduling requirements (resource request, requiredDuringScheduling - affinity expressions, etc.), compute a sum by iterating through - the elements of this field and adding "weight" to the sum - if the node has pods which matches the corresponding podAffinityTerm; - the node(s) with the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the affinity requirements specified by this - field are not met at scheduling time, the pod will not be - scheduled onto the node. If the affinity requirements specified - by this field cease to be met at some point during pod execution - (e.g. due to a pod label update), the system may or may not - try to eventually evict the pod from its node. When there - are multiple elements, the lists of nodes corresponding to - each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - podAntiAffinity: - description: Describes pod anti-affinity scheduling rules (e.g. - avoid putting this pod in the same node, zone, etc. as some other - pod(s)). - properties: - preferredDuringSchedulingIgnoredDuringExecution: - description: The scheduler will prefer to schedule pods to nodes - that satisfy the anti-affinity expressions specified by this - field, but it may choose a node that violates one or more - of the expressions. The node that is most preferred is the - one with the greatest sum of weights, i.e. for each node that - meets all of the scheduling requirements (resource request, - requiredDuringScheduling anti-affinity expressions, etc.), - compute a sum by iterating through the elements of this field - and adding "weight" to the sum if the node has pods which - matches the corresponding podAffinityTerm; the node(s) with - the highest sum are the most preferred. - items: - description: The weights of all of the matched WeightedPodAffinityTerm - fields are added per-node to find the most preferred node(s) - properties: - podAffinityTerm: - description: Required. A pod affinity term, associated - with the corresponding weight. - properties: - labelSelector: - description: A label query over a set of resources, - in this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces - the labelSelector applies to (matches against); - null or empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods - matching the labelSelector in the specified namespaces, - where co-located is defined as running on a node - whose value of the label with key topologyKey matches - that of any node on which any of the selected pods - is running. Empty topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - weight: - description: weight associated with matching the corresponding - podAffinityTerm, in the range 1-100. - format: int32 - type: integer - required: - - podAffinityTerm - - weight - type: object - type: array - requiredDuringSchedulingIgnoredDuringExecution: - description: If the anti-affinity requirements specified by - this field are not met at scheduling time, the pod will not - be scheduled onto the node. If the anti-affinity requirements - specified by this field cease to be met at some point during - pod execution (e.g. due to a pod label update), the system - may or may not try to eventually evict the pod from its node. - When there are multiple elements, the lists of nodes corresponding - to each podAffinityTerm are intersected, i.e. all terms must - be satisfied. - items: - description: Defines a set of pods (namely those matching - the labelSelector relative to the given namespace(s)) that - this pod should be co-located (affinity) or not co-located - (anti-affinity) with, where co-located is defined as running - on a node whose value of the label with key - matches that of any node on which a pod of the set of pods - is running - properties: - labelSelector: - description: A label query over a set of resources, in - this case pods. - 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 - namespaces: - description: namespaces specifies which namespaces the - labelSelector applies to (matches against); null or - empty list means "this pod's namespace" - items: - type: string - type: array - topologyKey: - description: This pod should be co-located (affinity) - or not co-located (anti-affinity) with the pods matching - the labelSelector in the specified namespaces, where - co-located is defined as running on a node whose value - of the label with key topologyKey matches that of any - node on which any of the selected pods is running. Empty - topologyKey is not allowed. - type: string - required: - - topologyKey - type: object - type: array - type: object - type: object - alertDropLabels: - description: AlertDropLabels configure the label names which should - be dropped in ThanosRuler alerts. If `labels` field is not provided, - `thanos_ruler_replica` will be dropped in alerts by default. - items: - type: string - type: array - alertQueryUrl: - description: The external Query URL the Thanos Ruler will set in the - 'Source' field of all alerts. Maps to the '--alert.query-url' CLI - arg. - type: string - alertmanagersConfig: - description: Define configuration for connecting to alertmanager. Only - available with thanos v0.10.0 and higher. Maps to the `alertmanagers.config` - arg. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - alertmanagersUrl: - description: 'Define URLs to send alerts to Alertmanager. For Thanos - v0.10.0 and higher, AlertManagersConfig should be used instead. Note: - this field will be ignored if AlertManagersConfig is specified. Maps - to the `alertmanagers.url` arg.' - items: - type: string - type: array - containers: - description: 'Containers allows injecting additional containers or modifying - operator generated containers. This can be used to allow adding an - authentication proxy to a ThanosRuler pod or to change the behavior - of an operator generated container. Containers described here modify - an operator generated container if they share the same name and modifications - are done via a strategic merge patch. The current container names - are: `thanos-ruler` and `rules-configmap-reloader`. Overriding containers - is entirely outside the scope of what the maintainers will support - and by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - enforcedNamespaceLabel: - description: EnforcedNamespaceLabel enforces adding a namespace label - of origin for each alert and metric that is user created. The label - value will always be the namespace of the object that is being created. - type: string - evaluationInterval: - description: Interval between consecutive evaluations. - type: string - externalPrefix: - description: The external URL the Thanos Ruler instances will be available - under. This is necessary to generate correct URLs. This is necessary - if Thanos Ruler is not served from root of a DNS name. - type: string - grpcServerTlsConfig: - description: 'GRPCServerTLSConfig configures the gRPC server from which - Thanos Querier reads recorded rule data. Note: Currently only the - CAFile, CertFile, and KeyFile fields are supported. Maps to the ''--grpc-server-tls-*'' - CLI args.' - properties: - ca: - description: Stuct containing the CA cert to use for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - caFile: - description: Path to the CA cert in the Prometheus container to - use for the targets. - type: string - cert: - description: Struct containing the client cert file for the targets. - properties: - configMap: - description: ConfigMap containing data to use for the targets. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its key must - be defined - type: boolean - required: - - key - type: object - secret: - description: Secret containing data to use for the targets. - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must - be defined - type: boolean - required: - - key - type: object - type: object - certFile: - description: Path to the client cert file in the Prometheus container - for the targets. - type: string - insecureSkipVerify: - description: Disable target certificate validation. - type: boolean - keyFile: - description: Path to the client key file in the Prometheus container - for the targets. - type: string - keySecret: - description: Secret containing the client key file for the targets. - properties: - key: - description: The key of the secret to select from. Must be - a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - serverName: - description: Used to verify the hostname for the targets. - type: string - type: object - image: - description: Thanos container image URL. - type: string - imagePullSecrets: - description: An optional list of references to secrets in the same namespace - to use for pulling thanos images from registries see http://kubernetes.io/docs/user-guide/images#specifying-imagepullsecrets-on-a-pod - items: - description: LocalObjectReference contains enough information to let - you locate the referenced object inside the same namespace. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - type: array - initContainers: - description: 'InitContainers allows adding initContainers to the pod - definition. Those can be used to e.g. fetch secrets for injection - into the ThanosRuler configuration from external sources. Any errors - during the execution of an initContainer will lead to a restart of - the Pod. More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ - Using initContainers for any use case other then secret fetching is - entirely outside the scope of what the maintainers will support and - by doing so, you accept that this behaviour may break at any time - without notice.' - items: - description: A single application container that you want to run within - a pod. - properties: - args: - description: 'Arguments to the entrypoint. The docker image''s - CMD is used if this is not provided. Variable references $(VAR_NAME) - are expanded using the container''s environment. If a variable - cannot be resolved, the reference in the input string will be - unchanged. The $(VAR_NAME) syntax can be escaped with a double - $$, ie: $$(VAR_NAME). Escaped references will never be expanded, - regardless of whether the variable exists or not. Cannot be - updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - command: - description: 'Entrypoint array. Not executed within a shell. The - docker image''s ENTRYPOINT is used if this is not provided. - Variable references $(VAR_NAME) are expanded using the container''s - environment. If a variable cannot be resolved, the reference - in the input string will be unchanged. The $(VAR_NAME) syntax - can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable exists - or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell' - items: - type: string - type: array - env: - description: List of environment variables to set in the container. - Cannot be updated. - items: - description: EnvVar represents an environment variable present - in a Container. - properties: - name: - description: Name of the environment variable. Must be a - C_IDENTIFIER. - type: string - value: - description: 'Variable references $(VAR_NAME) are expanded - using the previous defined environment variables in the - container and any service environment variables. If a - variable cannot be resolved, the reference in the input - string will be unchanged. The $(VAR_NAME) syntax can be - escaped with a double $$, ie: $$(VAR_NAME). Escaped references - will never be expanded, regardless of whether the variable - exists or not. Defaults to "".' - type: string - valueFrom: - description: Source for the environment variable's value. - Cannot be used if value is not empty. - properties: - configMapKeyRef: - description: Selects a key of a ConfigMap. - properties: - key: - description: The key to select. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - key must be defined - type: boolean - required: - - key - type: object - fieldRef: - description: 'Selects a field of the pod: supports metadata.name, - metadata.namespace, metadata.labels, metadata.annotations, - spec.nodeName, spec.serviceAccountName, status.hostIP, - status.podIP, status.podIPs.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - limits.ephemeral-storage, requests.cpu, requests.memory - and requests.ephemeral-storage) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - secretKeyRef: - description: Selects a key of a secret in the pod's - namespace - properties: - key: - description: The key of the secret to select from. Must - be a valid secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - required: - - key - type: object - type: object - required: - - name - type: object - type: array - envFrom: - description: List of sources to populate environment variables - in the container. The keys defined within a source must be a - C_IDENTIFIER. All invalid keys will be reported as an event - when the container is starting. When a key exists in multiple - sources, the value associated with the last source will take - precedence. Values defined by an Env with a duplicate key will - take precedence. Cannot be updated. - items: - description: EnvFromSource represents the source of a set of - ConfigMaps - properties: - configMapRef: - description: The ConfigMap to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap must be defined - type: boolean - type: object - prefix: - description: An optional identifier to prepend to each key - in the ConfigMap. Must be a C_IDENTIFIER. - type: string - secretRef: - description: The Secret to select from - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret must be defined - type: boolean - type: object - type: object - type: array - image: - description: 'Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images - This field is optional to allow higher level config management - to default or override container images in workload controllers - like Deployments and StatefulSets.' - type: string - imagePullPolicy: - description: 'Image pull policy. One of Always, Never, IfNotPresent. - Defaults to Always if :latest tag is specified, or IfNotPresent - otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images' - type: string - lifecycle: - description: Actions that the management system should take in - response to container lifecycle events. Cannot be updated. - properties: - postStart: - description: 'PostStart is called immediately after a container - is created. If the handler fails, the container is terminated - and restarted according to its restart policy. Other management - of the container blocks until the hook completes. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - preStop: - description: 'PreStop is called immediately before a container - is terminated due to an API request or management event - such as liveness/startup probe failure, preemption, resource - contention, etc. The handler is not called if the container - crashes or exits. The reason for termination is passed to - the handler. The Pod''s termination grace period countdown - begins before the PreStop hooked is executed. Regardless - of the outcome of the handler, the container will eventually - terminate within the Pod''s termination grace period. Other - management of the container blocks until the hook completes - or until the termination grace period is reached. More info: - https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks' - properties: - exec: - description: One and only one of the following should - be specified. Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute - inside the container, the working directory for - the command is root ('/') in the container's filesystem. - The command is simply exec'd, it is not run inside - a shell, so traditional shell instructions ('|', - etc) won't work. To use a shell, you need to explicitly - call out to that shell. Exit status of 0 is treated - as live/healthy and non-zero is unhealthy. - items: - type: string - type: array - type: object - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to - the pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. - HTTP allows repeated headers. - items: - description: HTTPHeader describes a custom header - to be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - tcpSocket: - description: 'TCPSocket specifies an action involving - a TCP port. TCP hooks not yet supported TODO: implement - a realistic TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access - on the container. Number must be in the range 1 - to 65535. Name must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - type: object - type: object - livenessProbe: - description: 'Periodic probe of container liveness. Container - will be restarted if the probe fails. Cannot be updated. More - info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - name: - description: Name of the container specified as a DNS_LABEL. Each - container in a pod must have a unique name (DNS_LABEL). Cannot - be updated. - type: string - ports: - description: List of ports to expose from the container. Exposing - a port here gives the system additional information about the - network connections a container uses, but is primarily informational. - Not specifying a port here DOES NOT prevent that port from being - exposed. Any port which is listening on the default "0.0.0.0" - address inside a container will be accessible from the network. - Cannot be updated. - items: - description: ContainerPort represents a network port in a single - container. - properties: - containerPort: - description: Number of port to expose on the pod's IP address. - This must be a valid port number, 0 < x < 65536. - format: int32 - type: integer - hostIP: - description: What host IP to bind the external port to. - type: string - hostPort: - description: Number of port to expose on the host. If specified, - this must be a valid port number, 0 < x < 65536. If HostNetwork - is specified, this must match ContainerPort. Most containers - do not need this. - format: int32 - type: integer - name: - description: If specified, this must be an IANA_SVC_NAME - and unique within the pod. Each named port in a pod must - have a unique name. Name for the port that can be referred - to by services. - type: string - protocol: - description: Protocol for port. Must be UDP, TCP, or SCTP. - Defaults to "TCP". - type: string - required: - - containerPort - type: object - type: array - readinessProbe: - description: 'Periodic probe of container service readiness. Container - will be removed from service endpoints if the probe fails. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - resources: - description: 'Compute Resources required by this container. Cannot - be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute - resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute - resources required. If Requests is omitted for a container, - it defaults to Limits if that is explicitly specified, otherwise - to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - securityContext: - description: 'Security options the pod should run with. More info: - https://kubernetes.io/docs/concepts/policy/security-context/ - More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/' - properties: - allowPrivilegeEscalation: - description: 'AllowPrivilegeEscalation controls whether a - process can gain more privileges than its parent process. - This bool directly controls if the no_new_privs flag will - be set on the container process. AllowPrivilegeEscalation - is true always when the container is: 1) run as Privileged - 2) has CAP_SYS_ADMIN' - type: boolean - capabilities: - description: The capabilities to add/drop when running containers. - Defaults to the default set of capabilities granted by the - container runtime. - properties: - add: - description: Added capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - drop: - description: Removed capabilities - items: - description: Capability represent POSIX capabilities - type - type: string - type: array - type: object - privileged: - description: Run container in privileged mode. Processes in - privileged containers are essentially equivalent to root - on the host. Defaults to false. - type: boolean - procMount: - description: procMount denotes the type of proc mount to use - for the containers. The default is DefaultProcMount which - uses the container runtime defaults for readonly paths and - masked paths. This requires the ProcMountType feature flag - to be enabled. - type: string - readOnlyRootFilesystem: - description: Whether this container has a read-only root filesystem. - Default is false. - type: boolean - runAsGroup: - description: The GID to run the entrypoint of the container - process. Uses runtime default if unset. May also be set - in PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail - to start the container if it does. If unset or false, no - such validation will be performed. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container - process. Defaults to user specified in image metadata if - unspecified. May also be set in PodSecurityContext. If - set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to the container. - If unspecified, the container runtime will allocate a random - SELinux context for each container. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. - properties: - level: - description: Level is SELinux level label that applies - to the container. - type: string - role: - description: Role is a SELinux role label that applies - to the container. - type: string - type: - description: Type is a SELinux type label that applies - to the container. - type: string - user: - description: User is a SELinux user label that applies - to the container. - type: string - type: object - windowsOptions: - description: The Windows specific settings applied to all - containers. If unspecified, the options from the PodSecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named - by the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the - GMSA credential spec to use. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint - of the container process. Defaults to the user specified - in image metadata if unspecified. May also be set in - PodSecurityContext. If set in both SecurityContext and - PodSecurityContext, the value specified in SecurityContext - takes precedence. This field is beta-level and may be - disabled with the WindowsRunAsUserName feature flag. - type: string - type: object - type: object - startupProbe: - description: 'StartupProbe indicates that the Pod has successfully - initialized. If specified, no other probes are executed until - this completes successfully. If this probe fails, the Pod will - be restarted, just as if the livenessProbe failed. This can - be used to provide different probe parameters at the beginning - of a Pod''s lifecycle, when it might take a long time to load - data or warm a cache, than during steady-state operation. This - cannot be updated. This is an alpha feature enabled by the StartupProbe - feature flag. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - properties: - exec: - description: One and only one of the following should be specified. - Exec specifies the action to take. - properties: - command: - description: Command is the command line to execute inside - the container, the working directory for the command is - root ('/') in the container's filesystem. The command - is simply exec'd, it is not run inside a shell, so traditional - shell instructions ('|', etc) won't work. To use a shell, - you need to explicitly call out to that shell. Exit - status of 0 is treated as live/healthy and non-zero - is unhealthy. - items: - type: string - type: array - type: object - failureThreshold: - description: Minimum consecutive failures for the probe to - be considered failed after having succeeded. Defaults to - 3. Minimum value is 1. - format: int32 - type: integer - httpGet: - description: HTTPGet specifies the http request to perform. - properties: - host: - description: Host name to connect to, defaults to the - pod IP. You probably want to set "Host" in httpHeaders - instead. - type: string - httpHeaders: - description: Custom headers to set in the request. HTTP - allows repeated headers. - items: - description: HTTPHeader describes a custom header to - be used in HTTP probes - properties: - name: - description: The header field name - type: string - value: - description: The header field value - type: string - required: - - name - - value - type: object - type: array - path: - description: Path to access on the HTTP server. - type: string - port: - anyOf: - - type: integer - - type: string - description: Name or number of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - scheme: - description: Scheme to use for connecting to the host. - Defaults to HTTP. - type: string - required: - - port - type: object - initialDelaySeconds: - description: 'Number of seconds after the container has started - before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - periodSeconds: - description: How often (in seconds) to perform the probe. - Default to 10 seconds. Minimum value is 1. - format: int32 - type: integer - successThreshold: - description: Minimum consecutive successes for the probe to - be considered successful after having failed. Defaults to - 1. Must be 1 for liveness and startup. Minimum value is - 1. - format: int32 - type: integer - tcpSocket: - description: 'TCPSocket specifies an action involving a TCP - port. TCP hooks not yet supported TODO: implement a realistic - TCP lifecycle hook' - properties: - host: - description: 'Optional: Host name to connect to, defaults - to the pod IP.' - type: string - port: - anyOf: - - type: integer - - type: string - description: Number or name of the port to access on the - container. Number must be in the range 1 to 65535. Name - must be an IANA_SVC_NAME. - x-kubernetes-int-or-string: true - required: - - port - type: object - timeoutSeconds: - description: 'Number of seconds after which the probe times - out. Defaults to 1 second. Minimum value is 1. More info: - https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes' - format: int32 - type: integer - type: object - stdin: - description: Whether this container should allocate a buffer for - stdin in the container runtime. If this is not set, reads from - stdin in the container will always result in EOF. Default is - false. - type: boolean - stdinOnce: - description: Whether the container runtime should close the stdin - channel after it has been opened by a single attach. When stdin - is true the stdin stream will remain open across multiple attach - sessions. If stdinOnce is set to true, stdin is opened on container - start, is empty until the first client attaches to stdin, and - then remains open and accepts data until the client disconnects, - at which time stdin is closed and remains closed until the container - is restarted. If this flag is false, a container processes that - reads from stdin will never receive an EOF. Default is false - type: boolean - terminationMessagePath: - description: 'Optional: Path at which the file to which the container''s - termination message will be written is mounted into the container''s - filesystem. Message written is intended to be brief final status, - such as an assertion failure message. Will be truncated by the - node if greater than 4096 bytes. The total message length across - all containers will be limited to 12kb. Defaults to /dev/termination-log. - Cannot be updated.' - type: string - terminationMessagePolicy: - description: Indicate how the termination message should be populated. - File will use the contents of terminationMessagePath to populate - the container status message on both success and failure. FallbackToLogsOnError - will use the last chunk of container log output if the termination - message file is empty and the container exited with an error. - The log output is limited to 2048 bytes or 80 lines, whichever - is smaller. Defaults to File. Cannot be updated. - type: string - tty: - description: Whether this container should allocate a TTY for - itself, also requires 'stdin' to be true. Default is false. - type: boolean - volumeDevices: - description: volumeDevices is the list of block devices to be - used by the container. This is a beta feature. - items: - description: volumeDevice describes a mapping of a raw block - device within a container. - properties: - devicePath: - description: devicePath is the path inside of the container - that the device will be mapped to. - type: string - name: - description: name must match the name of a persistentVolumeClaim - in the pod - type: string - required: - - devicePath - - name - type: object - type: array - volumeMounts: - description: Pod volumes to mount into the container's filesystem. - Cannot be updated. - items: - description: VolumeMount describes a mounting of a Volume within - a container. - properties: - mountPath: - description: Path within the container at which the volume - should be mounted. Must not contain ':'. - type: string - mountPropagation: - description: mountPropagation determines how mounts are - propagated from the host to container and the other way - around. When not set, MountPropagationNone is used. This - field is beta in 1.10. - type: string - name: - description: This must match the Name of a Volume. - type: string - readOnly: - description: Mounted read-only if true, read-write otherwise - (false or unspecified). Defaults to false. - type: boolean - subPath: - description: Path within the volume from which the container's - volume should be mounted. Defaults to "" (volume's root). - type: string - subPathExpr: - description: Expanded path within the volume from which - the container's volume should be mounted. Behaves similarly - to SubPath but environment variable references $(VAR_NAME) - are expanded using the container's environment. Defaults - to "" (volume's root). SubPathExpr and SubPath are mutually - exclusive. - type: string - required: - - mountPath - - name - type: object - type: array - workingDir: - description: Container's working directory. If not specified, - the container runtime's default will be used, which might be - configured in the container image. Cannot be updated. - type: string - required: - - name - type: object - type: array - labels: - additionalProperties: - type: string - description: Labels configure the external label pairs to ThanosRuler. - If not provided, default replica label `thanos_ruler_replica` will - be added as a label and be dropped in alerts. - type: object - listenLocal: - description: ListenLocal makes the Thanos ruler listen on loopback, - so that it does not bind against the Pod IP. - type: boolean - logFormat: - description: Log format for ThanosRuler to be configured with. - type: string - logLevel: - description: Log level for ThanosRuler to be configured with. - type: string - nodeSelector: - additionalProperties: - type: string - description: Define which Nodes the Pods are scheduled on. - type: object - objectStorageConfig: - description: ObjectStorageConfig configures object storage in Thanos. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - paused: - description: When a ThanosRuler deployment is paused, no actions except - for deletion will be performed on the underlying objects. - type: boolean - podMetadata: - description: PodMetadata contains Labels and Annotations gets propagated - to the thanos ruler pods. - properties: - annotations: - additionalProperties: - type: string - description: 'Annotations is an unstructured key value map stored - with a resource that may be set by external tools to store and - retrieve arbitrary metadata. They are not queryable and should - be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations' - type: object - labels: - additionalProperties: - type: string - description: 'Map of string keys and values that can be used to - organize and categorize (scope and select) objects. May match - selectors of replication controllers and services. More info: - http://kubernetes.io/docs/user-guide/labels' - type: object - type: object - portName: - description: Port name used for the pods and governing service. This - defaults to web - type: string - priorityClassName: - description: Priority class assigned to the Pods - type: string - queryConfig: - description: Define configuration for connecting to thanos query instances. - If this is defined, the QueryEndpoints field will be ignored. Maps - to the `query.config` CLI argument. Only available with thanos v0.11.0 - and higher. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - queryEndpoints: - description: QueryEndpoints defines Thanos querier endpoints from which - to query metrics. Maps to the --query flag of thanos ruler. - items: - type: string - type: array - replicas: - description: Number of thanos ruler instances to deploy. - format: int32 - type: integer - resources: - description: Resources defines the resource requirements for single - Pods. If not provided, no requests/limits will be set - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of compute resources - allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount of compute resources - required. If Requests is omitted for a container, it defaults - to Limits if that is explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - retention: - description: Time duration ThanosRuler shall retain data for. Default - is '24h', and must match the regular expression `[0-9]+(ms|s|m|h|d|w|y)` - (milliseconds seconds minutes hours days weeks years). - type: string - routePrefix: - description: The route prefix ThanosRuler registers HTTP handlers for. - This allows thanos UI to be served on a sub-path. - type: string - ruleNamespaceSelector: - description: Namespaces to be selected for Rules discovery. If unspecified, - only the same namespace as the ThanosRuler object is in is used. - 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 - ruleSelector: - description: A label selector to select which PrometheusRules to mount - for alerting and recording. - 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 - securityContext: - description: SecurityContext holds pod-level security attributes and - common container settings. This defaults to the default PodSecurityContext. - properties: - fsGroup: - description: "A special supplemental group that applies to all containers - in a pod. Some volume types allow the Kubelet to change the ownership - of that volume to be owned by the pod: \n 1. The owning GID will - be the FSGroup 2. The setgid bit is set (new files created in - the volume will be owned by FSGroup) 3. The permission bits are - OR'd with rw-rw---- \n If unset, the Kubelet will not modify the - ownership and permissions of any volume." - format: int64 - type: integer - runAsGroup: - description: The GID to run the entrypoint of the container process. - Uses runtime default if unset. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - format: int64 - type: integer - runAsNonRoot: - description: Indicates that the container must run as a non-root - user. If true, the Kubelet will validate the image at runtime - to ensure that it does not run as UID 0 (root) and fail to start - the container if it does. If unset or false, no such validation - will be performed. May also be set in SecurityContext. If set - in both SecurityContext and PodSecurityContext, the value specified - in SecurityContext takes precedence. - type: boolean - runAsUser: - description: The UID to run the entrypoint of the container process. - Defaults to user specified in image metadata if unspecified. May - also be set in SecurityContext. If set in both SecurityContext - and PodSecurityContext, the value specified in SecurityContext - takes precedence for that container. - format: int64 - type: integer - seLinuxOptions: - description: The SELinux context to be applied to all containers. - If unspecified, the container runtime will allocate a random SELinux - context for each container. May also be set in SecurityContext. If - set in both SecurityContext and PodSecurityContext, the value - specified in SecurityContext takes precedence for that container. - properties: - level: - description: Level is SELinux level label that applies to the - container. - type: string - role: - description: Role is a SELinux role label that applies to the - container. - type: string - type: - description: Type is a SELinux type label that applies to the - container. - type: string - user: - description: User is a SELinux user label that applies to the - container. - type: string - type: object - supplementalGroups: - description: A list of groups applied to the first process run in - each container, in addition to the container's primary GID. If - unspecified, no groups will be added to any container. - items: - format: int64 - type: integer - type: array - sysctls: - description: Sysctls hold a list of namespaced sysctls used for - the pod. Pods with unsupported sysctls (by the container runtime) - might fail to launch. - items: - description: Sysctl defines a kernel parameter to be set - properties: - name: - description: Name of a property to set - type: string - value: - description: Value of a property to set - type: string - required: - - name - - value - type: object - type: array - windowsOptions: - description: The Windows specific settings applied to all containers. - If unspecified, the options within a container's SecurityContext - will be used. If set in both SecurityContext and PodSecurityContext, - the value specified in SecurityContext takes precedence. - properties: - gmsaCredentialSpec: - description: GMSACredentialSpec is where the GMSA admission - webhook (https://github.com/kubernetes-sigs/windows-gmsa) - inlines the contents of the GMSA credential spec named by - the GMSACredentialSpecName field. This field is alpha-level - and is only honored by servers that enable the WindowsGMSA - feature flag. - type: string - gmsaCredentialSpecName: - description: GMSACredentialSpecName is the name of the GMSA - credential spec to use. This field is alpha-level and is only - honored by servers that enable the WindowsGMSA feature flag. - type: string - runAsUserName: - description: The UserName in Windows to run the entrypoint of - the container process. Defaults to the user specified in image - metadata if unspecified. May also be set in PodSecurityContext. - If set in both SecurityContext and PodSecurityContext, the - value specified in SecurityContext takes precedence. This - field is beta-level and may be disabled with the WindowsRunAsUserName - feature flag. - type: string - type: object - type: object - serviceAccountName: - description: ServiceAccountName is the name of the ServiceAccount to - use to run the Thanos Ruler Pods. - type: string - storage: - description: Storage spec to specify how storage shall be used. - properties: - emptyDir: - description: 'EmptyDirVolumeSource to be used by the Prometheus - StatefulSets. If specified, used in place of any volumeClaimTemplate. - More info: https://kubernetes.io/docs/concepts/storage/volumes/#emptydir' - properties: - medium: - description: 'What type of storage medium should back this directory. - The default is "" which means to use the node''s default medium. - Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. The - default is nil which means that the limit is undefined. More - info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - volumeClaimTemplate: - description: A PVC spec to be used by the Prometheus StatefulSets. - 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: - description: 'Standard object''s metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata' - type: object - spec: - description: 'Spec defines the desired characteristics of a - volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the desired access modes - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - dataSource: - description: This field requires the VolumeSnapshotDataSource - alpha feature gate to be enabled and currently VolumeSnapshot - is the only supported data source. If the provisioner - can support VolumeSnapshot data source, it will create - a new volume and data will be restored to the volume at - the same time. If the provisioner does not support VolumeSnapshot - data source, volume will not be created and the failure - will be reported as an event. In the future, we plan to - support more data source types and the behavior of the - provisioner may change. - properties: - apiGroup: - description: APIGroup is the group for the resource - being referenced. If APIGroup is not specified, the - specified Kind must be in the core API group. For - any other third-party types, APIGroup is required. - type: string - kind: - description: Kind is the type of resource being referenced - type: string - name: - description: Name is the name of resource being referenced - type: string - required: - - kind - - name - type: object - resources: - description: 'Resources represents the minimum resources - the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources' - properties: - limits: - additionalProperties: - type: string - description: 'Limits describes the maximum amount of - compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - requests: - additionalProperties: - type: string - description: 'Requests describes the minimum amount - of compute resources required. If Requests is omitted - for a container, it defaults to Limits if that is - explicitly specified, otherwise to an implementation-defined - value. More info: https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/' - type: object - type: object - selector: - description: A label query over volumes to consider for - binding. - 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 - storageClassName: - description: 'Name of the StorageClass required by the claim. - More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1' - type: string - volumeMode: - description: volumeMode defines what type of volume is required - by the claim. Value of Filesystem is implied when not - included in claim spec. This is a beta feature. - type: string - volumeName: - description: VolumeName is the binding reference to the - PersistentVolume backing this claim. - type: string - type: object - status: - description: 'Status represents the current information/status - of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - accessModes: - description: 'AccessModes contains the actual access modes - the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1' - items: - type: string - type: array - capacity: - additionalProperties: - type: string - description: Represents the actual resources of the underlying - volume. - type: object - conditions: - description: Current Condition of persistent volume claim. - If underlying persistent volume is being resized then - the Condition will be set to 'ResizeStarted'. - items: - description: PersistentVolumeClaimCondition contails details - about state of pvc - properties: - lastProbeTime: - description: Last time we probed the condition. - format: date-time - type: string - lastTransitionTime: - description: Last time the condition transitioned - from one status to another. - format: date-time - type: string - message: - description: Human-readable message indicating details - about last transition. - type: string - reason: - description: Unique, this should be a short, machine - understandable string that gives the reason for - condition's last transition. If it reports "ResizeStarted" - that means the underlying persistent volume is being - resized. - type: string - status: - type: string - type: - description: PersistentVolumeClaimConditionType is - a valid value of PersistentVolumeClaimCondition.Type - type: string - required: - - status - - type - type: object - type: array - phase: - description: Phase represents the current phase of PersistentVolumeClaim. - type: string - type: object - type: object - type: object - tolerations: - description: If specified, the pod's tolerations. - items: - description: The pod this Toleration is attached to tolerates any - taint that matches the triple using the matching - operator . - properties: - effect: - description: Effect indicates the taint effect to match. Empty - means match all taint effects. When specified, allowed values - are NoSchedule, PreferNoSchedule and NoExecute. - type: string - key: - description: Key is the taint key that the toleration applies - to. Empty means match all taint keys. If the key is empty, operator - must be Exists; this combination means to match all values and - all keys. - type: string - operator: - description: Operator represents a key's relationship to the value. - Valid operators are Exists and Equal. Defaults to Equal. Exists - is equivalent to wildcard for value, so that a pod can tolerate - all taints of a particular category. - type: string - tolerationSeconds: - description: TolerationSeconds represents the period of time the - toleration (which must be of effect NoExecute, otherwise this - field is ignored) tolerates the taint. By default, it is not - set, which means tolerate the taint forever (do not evict). - Zero and negative values will be treated as 0 (evict immediately) - by the system. - format: int64 - type: integer - value: - description: Value is the taint value the toleration matches to. - If the operator is Exists, the value should be empty, otherwise - just a regular string. - type: string - type: object - type: array - tracingConfig: - description: TracingConfig configures tracing in Thanos. This is an - experimental feature, it may change in any upcoming release in a breaking - way. - properties: - key: - description: The key of the secret to select from. Must be a valid - secret key. - type: string - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the Secret or its key must be defined - type: boolean - required: - - key - type: object - volumes: - description: Volumes allows configuration of additional volumes on the - output StatefulSet definition. Volumes specified will be appended - to other volumes that are generated as a result of StorageSpec objects. - items: - description: Volume represents a named volume in a pod that may be - accessed by any container in the pod. - properties: - awsElasticBlockStore: - description: 'AWSElasticBlockStore represents an AWS Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty).' - format: int32 - type: integer - readOnly: - description: 'Specify "true" to force and set the ReadOnly - property in VolumeMounts to "true". If omitted, the default - is "false". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: boolean - volumeID: - description: 'Unique ID of the persistent disk resource in - AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore' - type: string - required: - - volumeID - type: object - azureDisk: - description: AzureDisk represents an Azure Data Disk mount on - the host and bind mount to the pod. - properties: - cachingMode: - description: 'Host Caching mode: None, Read Only, Read Write.' - type: string - diskName: - description: The Name of the data disk in the blob storage - type: string - diskURI: - description: The URI the data disk in the blob storage - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - kind: - description: 'Expected values Shared: multiple blob disks - per storage account Dedicated: single blob disk per storage - account Managed: azure managed data disk (only in managed - availability set). defaults to shared' - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - required: - - diskName - - diskURI - type: object - azureFile: - description: AzureFile represents an Azure File Service mount - on the host and bind mount to the pod. - properties: - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretName: - description: the name of secret that contains Azure Storage - Account Name and Key - type: string - shareName: - description: Share Name - type: string - required: - - secretName - - shareName - type: object - cephfs: - description: CephFS represents a Ceph FS mount on the host that - shares a pod's lifetime - properties: - monitors: - description: 'Required: Monitors is a collection of Ceph monitors - More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - items: - type: string - type: array - path: - description: 'Optional: Used as the mounted root, rather than - the full Ceph tree, default is /' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: boolean - secretFile: - description: 'Optional: SecretFile is the path to key ring - for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - secretRef: - description: 'Optional: SecretRef is reference to the authentication - secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'Optional: User is the rados user name, default - is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it' - type: string - required: - - monitors - type: object - cinder: - description: 'Cinder represents a cinder volume attached and mounted - on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Examples: "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts. More - info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: boolean - secretRef: - description: 'Optional: points to a secret object containing - parameters used to connect to OpenStack.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeID: - description: 'volume id used to identify the volume in cinder. - More info: https://examples.k8s.io/mysql-cinder-pd/README.md' - type: string - required: - - volumeID - type: object - configMap: - description: ConfigMap represents a configMap that should populate - this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced ConfigMap will be projected into - the volume as a file whose name is the key and content is - the value. If specified, the listed keys will be projected - into the specified paths, and unlisted keys will not be - present. If a key is specified which is not present in the - ConfigMap, the volume setup will error unless it is marked - optional. Paths must be relative and may not contain the - '..' path or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - optional: - description: Specify whether the ConfigMap or its keys must - be defined - type: boolean - type: object - csi: - description: CSI (Container Storage Interface) represents storage - that is handled by an external CSI driver (Alpha feature). - properties: - driver: - description: Driver is the name of the CSI driver that handles - this volume. Consult with your admin for the correct name - as registered in the cluster. - type: string - fsType: - description: Filesystem type to mount. Ex. "ext4", "xfs", - "ntfs". If not provided, the empty value is passed to the - associated CSI driver which will determine the default filesystem - to apply. - type: string - nodePublishSecretRef: - description: NodePublishSecretRef is a reference to the secret - object containing sensitive information to pass to the CSI - driver to complete the CSI NodePublishVolume and NodeUnpublishVolume - calls. This field is optional, and may be empty if no secret - is required. If the secret object contains more than one - secret, all secret references are passed. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - readOnly: - description: Specifies a read-only configuration for the volume. - Defaults to false (read/write). - type: boolean - volumeAttributes: - additionalProperties: - type: string - description: VolumeAttributes stores driver-specific properties - that are passed to the CSI driver. Consult your driver's - documentation for supported values. - type: object - required: - - driver - type: object - downwardAPI: - description: DownwardAPI represents downward API about the pod - that should populate this volume - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: Items is a list of downward API volume file - items: - description: DownwardAPIVolumeFile represents information - to create the file containing the pod field - properties: - fieldRef: - description: 'Required: Selects a field of the pod: - only annotations, labels, name and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the FieldPath - is written in terms of, defaults to "v1". - type: string - fieldPath: - description: Path of the field to select in the - specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative path name - of the file to be created. Must not be absolute or - contain the ''..'' path. Must be utf-8 encoded. The - first item of the relative path must not start with - ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: only - resources limits and requests (limits.cpu, limits.memory, - requests.cpu and requests.memory) are currently supported.' - properties: - containerName: - description: 'Container name: required for volumes, - optional for env vars' - type: string - divisor: - description: Specifies the output format of the - exposed resources, defaults to "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - emptyDir: - description: 'EmptyDir represents a temporary directory that shares - a pod''s lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - properties: - medium: - description: 'What type of storage medium should back this - directory. The default is "" which means to use the node''s - default medium. Must be an empty string (default) or Memory. - More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir' - type: string - sizeLimit: - description: 'Total amount of local storage required for this - EmptyDir volume. The size limit is also applicable for memory - medium. The maximum usage on memory medium EmptyDir would - be the minimum value between the SizeLimit specified here - and the sum of memory limits of all containers in a pod. - The default is nil which means that the limit is undefined. - More info: http://kubernetes.io/docs/user-guide/volumes#emptydir' - type: string - type: object - fc: - description: FC represents a Fibre Channel resource that is attached - to a kubelet's host machine and then exposed to the pod. - properties: - fsType: - description: 'Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - lun: - description: 'Optional: FC target lun number' - format: int32 - type: integer - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - targetWWNs: - description: 'Optional: FC target worldwide names (WWNs)' - items: - type: string - type: array - wwids: - description: 'Optional: FC volume world wide identifiers (wwids) - Either wwids or combination of targetWWNs and lun must be - set, but not both simultaneously.' - items: - type: string - type: array - type: object - flexVolume: - description: FlexVolume represents a generic volume resource that - is provisioned/attached using an exec based plugin. - properties: - driver: - description: Driver is the name of the driver to use for this - volume. - type: string - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". The default filesystem depends on FlexVolume - script. - type: string - options: - additionalProperties: - type: string - description: 'Optional: Extra command options if any.' - type: object - readOnly: - description: 'Optional: Defaults to false (read/write). ReadOnly - here will force the ReadOnly setting in VolumeMounts.' - type: boolean - secretRef: - description: 'Optional: SecretRef is reference to the secret - object containing sensitive information to pass to the plugin - scripts. This may be empty if no secret object is specified. - If the secret object contains more than one secret, all - secrets are passed to the plugin scripts.' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - required: - - driver - type: object - flocker: - description: Flocker represents a Flocker volume attached to a - kubelet's host machine. This depends on the Flocker control - service being running - properties: - datasetName: - description: Name of the dataset stored as metadata -> name - on the dataset for Flocker should be considered as deprecated - type: string - datasetUUID: - description: UUID of the dataset. This is unique identifier - of a Flocker dataset - type: string - type: object - gcePersistentDisk: - description: 'GCEPersistentDisk represents a GCE Disk resource - that is attached to a kubelet''s host machine and then exposed - to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - partition: - description: 'The partition in the volume that you want to - mount. If omitted, the default is to mount by volume name. - Examples: For volume /dev/sda1, you specify the partition - as "1". Similarly, the volume partition for /dev/sda is - "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - format: int32 - type: integer - pdName: - description: 'Unique name of the PD resource in GCE. Used - to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk' - type: boolean - required: - - pdName - type: object - gitRepo: - description: 'GitRepo represents a git repository at a particular - revision. DEPRECATED: GitRepo is deprecated. To provision a - container with a git repo, mount an EmptyDir into an InitContainer - that clones the repo using git, then mount the EmptyDir into - the Pod''s container.' - properties: - directory: - description: Target directory name. Must not contain or start - with '..'. If '.' is supplied, the volume directory will - be the git repository. Otherwise, if specified, the volume - will contain the git repository in the subdirectory with - the given name. - type: string - repository: - description: Repository URL - type: string - revision: - description: Commit hash for the specified revision. - type: string - required: - - repository - type: object - glusterfs: - description: 'Glusterfs represents a Glusterfs mount on the host - that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md' - properties: - endpoints: - description: 'EndpointsName is the endpoint name that details - Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - path: - description: 'Path is the Glusterfs volume path. More info: - https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: string - readOnly: - description: 'ReadOnly here will force the Glusterfs volume - to be mounted with read-only permissions. Defaults to false. - More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod' - type: boolean - required: - - endpoints - - path - type: object - hostPath: - description: 'HostPath represents a pre-existing file or directory - on the host machine that is directly exposed to the container. - This is generally used for system agents or other privileged - things that are allowed to see the host machine. Most containers - will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - --- TODO(jonesdl) We need to restrict who can use host directory - mounts and who can/can not mount host directories as read/write.' - properties: - path: - description: 'Path of the directory on the host. If the path - is a symlink, it will follow the link to the real path. - More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - type: - description: 'Type for HostPath Volume Defaults to "" More - info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath' - type: string - required: - - path - type: object - iscsi: - description: 'ISCSI represents an ISCSI Disk resource that is - attached to a kubelet''s host machine and then exposed to the - pod. More info: https://examples.k8s.io/volumes/iscsi/README.md' - properties: - chapAuthDiscovery: - description: whether support iSCSI Discovery CHAP authentication - type: boolean - chapAuthSession: - description: whether support iSCSI Session CHAP authentication - type: boolean - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#iscsi - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - initiatorName: - description: Custom iSCSI Initiator Name. If initiatorName - is specified with iscsiInterface simultaneously, new iSCSI - interface : will be created - for the connection. - type: string - iqn: - description: Target iSCSI Qualified Name. - type: string - iscsiInterface: - description: iSCSI Interface Name that uses an iSCSI transport. - Defaults to 'default' (tcp). - type: string - lun: - description: iSCSI Target Lun number. - format: int32 - type: integer - portals: - description: iSCSI Target Portal List. The portal is either - an IP or ip_addr:port if the port is other than default - (typically TCP ports 860 and 3260). - items: - type: string - type: array - readOnly: - description: ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. - type: boolean - secretRef: - description: CHAP Secret for iSCSI target and initiator authentication - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - targetPortal: - description: iSCSI Target Portal. The Portal is either an - IP or ip_addr:port if the port is other than default (typically - TCP ports 860 and 3260). - type: string - required: - - iqn - - lun - - targetPortal - type: object - name: - description: 'Volume''s name. Must be a DNS_LABEL and unique within - the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' - type: string - nfs: - description: 'NFS represents an NFS mount on the host that shares - a pod''s lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - properties: - path: - description: 'Path that is exported by the NFS server. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - readOnly: - description: 'ReadOnly here will force the NFS export to be - mounted with read-only permissions. Defaults to false. More - info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: boolean - server: - description: 'Server is the hostname or IP address of the - NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs' - type: string - required: - - path - - server - type: object - persistentVolumeClaim: - description: 'PersistentVolumeClaimVolumeSource represents a reference - to a PersistentVolumeClaim in the same namespace. More info: - https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - properties: - claimName: - description: 'ClaimName is the name of a PersistentVolumeClaim - in the same namespace as the pod using this volume. More - info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims' - type: string - readOnly: - description: Will force the ReadOnly setting in VolumeMounts. - Default false. - type: boolean - required: - - claimName - type: object - photonPersistentDisk: - description: PhotonPersistentDisk represents a PhotonController - persistent disk attached and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - pdID: - description: ID that identifies Photon Controller persistent - disk - type: string - required: - - pdID - type: object - portworxVolume: - description: PortworxVolume represents a portworx volume attached - and mounted on kubelets host machine - properties: - fsType: - description: FSType represents the filesystem type to mount - Must be a filesystem type supported by the host operating - system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" - if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - volumeID: - description: VolumeID uniquely identifies a Portworx volume - type: string - required: - - volumeID - type: object - projected: - description: Items for all in one resources secrets, configmaps, - and downward API - properties: - defaultMode: - description: Mode bits to use on created files by default. - Must be a value between 0 and 0777. Directories within the - path are not affected by this setting. This might be in - conflict with other options that affect the file mode, like - fsGroup, and the result can be other mode bits set. - format: int32 - type: integer - sources: - description: list of volume projections - items: - description: Projection that may be projected along with - other supported volume types - properties: - configMap: - description: information about the configMap data to - project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced ConfigMap - will be projected into the volume as a file whose - name is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the ConfigMap, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the ConfigMap or its - keys must be defined - type: boolean - type: object - downwardAPI: - description: information about the downwardAPI data - to project - properties: - items: - description: Items is a list of DownwardAPIVolume - file - items: - description: DownwardAPIVolumeFile represents - information to create the file containing the - pod field - properties: - fieldRef: - description: 'Required: Selects a field of - the pod: only annotations, labels, name - and namespace are supported.' - properties: - apiVersion: - description: Version of the schema the - FieldPath is written in terms of, defaults - to "v1". - type: string - fieldPath: - description: Path of the field to select - in the specified API version. - type: string - required: - - fieldPath - type: object - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: 'Required: Path is the relative - path name of the file to be created. Must - not be absolute or contain the ''..'' path. - Must be utf-8 encoded. The first item of - the relative path must not start with ''..''' - type: string - resourceFieldRef: - description: 'Selects a resource of the container: - only resources limits and requests (limits.cpu, - limits.memory, requests.cpu and requests.memory) - are currently supported.' - properties: - containerName: - description: 'Container name: required - for volumes, optional for env vars' - type: string - divisor: - description: Specifies the output format - of the exposed resources, defaults to - "1" - type: string - resource: - description: 'Required: resource to select' - type: string - required: - - resource - type: object - required: - - path - type: object - type: array - type: object - secret: - description: information about the secret data to project - properties: - items: - description: If unspecified, each key-value pair - in the Data field of the referenced Secret will - be projected into the volume as a file whose name - is the key and content is the value. If specified, - the listed keys will be projected into the specified - paths, and unlisted keys will not be present. - If a key is specified which is not present in - the Secret, the volume setup will error unless - it is marked optional. Paths must be relative - and may not contain the '..' path or start with - '..'. - items: - description: Maps a string key to a path within - a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on - this file, must be a value between 0 and - 0777. If not specified, the volume defaultMode - will be used. This might be in conflict - with other options that affect the file - mode, like fsGroup, and the result can be - other mode bits set.' - format: int32 - type: integer - path: - description: The relative path of the file - to map the key to. May not be an absolute - path. May not contain the path element '..'. - May not start with the string '..'. - type: string - required: - - key - - path - type: object - type: array - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, - uid?' - type: string - optional: - description: Specify whether the Secret or its key - must be defined - type: boolean - type: object - serviceAccountToken: - description: information about the serviceAccountToken - data to project - properties: - audience: - description: Audience is the intended audience of - the token. A recipient of a token must identify - itself with an identifier specified in the audience - of the token, and otherwise should reject the - token. The audience defaults to the identifier - of the apiserver. - type: string - expirationSeconds: - description: ExpirationSeconds is the requested - duration of validity of the service account token. - As the token approaches expiration, the kubelet - volume plugin will proactively rotate the service - account token. The kubelet will start trying to - rotate the token if the token is older than 80 - percent of its time to live or if the token is - older than 24 hours.Defaults to 1 hour and must - be at least 10 minutes. - format: int64 - type: integer - path: - description: Path is the path relative to the mount - point of the file to project the token into. - type: string - required: - - path - type: object - type: object - type: array - required: - - sources - type: object - quobyte: - description: Quobyte represents a Quobyte mount on the host that - shares a pod's lifetime - properties: - group: - description: Group to map volume access to Default is no group - type: string - readOnly: - description: ReadOnly here will force the Quobyte volume to - be mounted with read-only permissions. Defaults to false. - type: boolean - registry: - description: Registry represents a single or multiple Quobyte - Registry services specified as a string as host:port pair - (multiple entries are separated with commas) which acts - as the central registry for volumes - type: string - tenant: - description: Tenant owning the given Quobyte volume in the - Backend Used with dynamically provisioned Quobyte volumes, - value is set by the plugin - type: string - user: - description: User to map volume access to Defaults to serivceaccount - user - type: string - volume: - description: Volume is a string that references an already - created Quobyte volume by name. - type: string - required: - - registry - - volume - type: object - rbd: - description: 'RBD represents a Rados Block Device mount on the - host that shares a pod''s lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md' - properties: - fsType: - description: 'Filesystem type of the volume that you want - to mount. Tip: Ensure that the filesystem type is supported - by the host operating system. Examples: "ext4", "xfs", "ntfs". - Implicitly inferred to be "ext4" if unspecified. More info: - https://kubernetes.io/docs/concepts/storage/volumes#rbd - TODO: how do we prevent errors in the filesystem from compromising - the machine' - type: string - image: - description: 'The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - keyring: - description: 'Keyring is the path to key ring for RBDUser. - Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - monitors: - description: 'A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - items: - type: string - type: array - pool: - description: 'The rados pool name. Default is rbd. More info: - https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - readOnly: - description: 'ReadOnly here will force the ReadOnly setting - in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: boolean - secretRef: - description: 'SecretRef is name of the authentication secret - for RBDUser. If provided overrides keyring. Default is nil. - More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - user: - description: 'The rados user name. Default is admin. More - info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it' - type: string - required: - - image - - monitors - type: object - scaleIO: - description: ScaleIO represents a ScaleIO persistent volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Default is "xfs". - type: string - gateway: - description: The host address of the ScaleIO API Gateway. - type: string - protectionDomain: - description: The name of the ScaleIO Protection Domain for - the configured storage. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef references to the secret for ScaleIO - user and other sensitive information. If this is not provided, - Login operation will fail. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - sslEnabled: - description: Flag to enable/disable SSL communication with - Gateway, default false - type: boolean - storageMode: - description: Indicates whether the storage for a volume should - be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. - type: string - storagePool: - description: The ScaleIO Storage Pool associated with the - protection domain. - type: string - system: - description: The name of the storage system as configured - in ScaleIO. - type: string - volumeName: - description: The name of a volume already created in the ScaleIO - system that is associated with this volume source. - type: string - required: - - gateway - - secretRef - - system - type: object - secret: - description: 'Secret represents a secret that should populate - this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - properties: - defaultMode: - description: 'Optional: mode bits to use on created files - by default. Must be a value between 0 and 0777. Defaults - to 0644. Directories within the path are not affected by - this setting. This might be in conflict with other options - that affect the file mode, like fsGroup, and the result - can be other mode bits set.' - format: int32 - type: integer - items: - description: If unspecified, each key-value pair in the Data - field of the referenced Secret will be projected into the - volume as a file whose name is the key and content is the - value. If specified, the listed keys will be projected into - the specified paths, and unlisted keys will not be present. - If a key is specified which is not present in the Secret, - the volume setup will error unless it is marked optional. - Paths must be relative and may not contain the '..' path - or start with '..'. - items: - description: Maps a string key to a path within a volume. - properties: - key: - description: The key to project. - type: string - mode: - description: 'Optional: mode bits to use on this file, - must be a value between 0 and 0777. If not specified, - the volume defaultMode will be used. This might be - in conflict with other options that affect the file - mode, like fsGroup, and the result can be other mode - bits set.' - format: int32 - type: integer - path: - description: The relative path of the file to map the - key to. May not be an absolute path. May not contain - the path element '..'. May not start with the string - '..'. - type: string - required: - - key - - path - type: object - type: array - optional: - description: Specify whether the Secret or its keys must be - defined - type: boolean - secretName: - description: 'Name of the secret in the pod''s namespace to - use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret' - type: string - type: object - storageos: - description: StorageOS represents a StorageOS volume attached - and mounted on Kubernetes nodes. - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - readOnly: - description: Defaults to false (read/write). ReadOnly here - will force the ReadOnly setting in VolumeMounts. - type: boolean - secretRef: - description: SecretRef specifies the secret to use for obtaining - the StorageOS API credentials. If not specified, default - values will be attempted. - properties: - name: - description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - TODO: Add other useful fields. apiVersion, kind, uid?' - type: string - type: object - volumeName: - description: VolumeName is the human-readable name of the - StorageOS volume. Volume names are only unique within a - namespace. - type: string - volumeNamespace: - description: VolumeNamespace specifies the scope of the volume - within StorageOS. If no namespace is specified then the - Pod's namespace will be used. This allows the Kubernetes - name scoping to be mirrored within StorageOS for tighter - integration. Set VolumeName to any name to override the - default behaviour. Set to "default" if you are not using - namespaces within StorageOS. Namespaces that do not pre-exist - within StorageOS will be created. - type: string - type: object - vsphereVolume: - description: VsphereVolume represents a vSphere volume attached - and mounted on kubelets host machine - properties: - fsType: - description: Filesystem type to mount. Must be a filesystem - type supported by the host operating system. Ex. "ext4", - "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - type: string - storagePolicyID: - description: Storage Policy Based Management (SPBM) profile - ID associated with the StoragePolicyName. - type: string - storagePolicyName: - description: Storage Policy Based Management (SPBM) profile - name. - type: string - volumePath: - description: Path that identifies vSphere volume vmdk - type: string - required: - - volumePath - type: object - required: - - name - type: object - type: array - type: object - status: - description: 'Most recent observed status of the ThanosRuler cluster. Read-only. - Not included when requesting from the apiserver, only from the ThanosRuler - Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#spec-and-status' - properties: - availableReplicas: - description: Total number of available pods (ready for at least minReadySeconds) - targeted by this ThanosRuler deployment. - format: int32 - type: integer - paused: - description: Represents whether any actions on the underlying managed - objects are being performed. Only delete actions will be performed. - type: boolean - replicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment (their labels match the selector). - format: int32 - type: integer - unavailableReplicas: - description: Total number of unavailable pods targeted by this ThanosRuler - deployment. - format: int32 - type: integer - updatedReplicas: - description: Total number of non-terminated pods targeted by this ThanosRuler - deployment that have the desired version spec. - format: int32 - type: integer - required: - - availableReplicas - - paused - - replicas - - unavailableReplicas - - updatedReplicas - type: object - required: - - spec - type: object - version: v1 - versions: - - name: v1 - served: true - storage: true diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/_helpers.tpl deleted file mode 100755 index 39b26c195..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/_helpers.tpl +++ /dev/null @@ -1,7 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/jobs.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/jobs.yaml deleted file mode 100755 index 709005fd9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/jobs.yaml +++ /dev/null @@ -1,92 +0,0 @@ -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-create - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": post-install, post-upgrade, post-rollback - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-create - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - containers: - - name: create-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-delete - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }} - annotations: - "helm.sh/hook": pre-delete - "helm.sh/hook-delete-policy": hook-succeeded -spec: - template: - metadata: - name: {{ .Chart.Name }}-delete - labels: - app: {{ .Chart.Name }} - spec: - serviceAccountName: {{ .Chart.Name }}-manager - securityContext: - runAsNonRoot: true - runAsUser: 1000 - initContainers: - - name: remove-finalizers - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - apply - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - containers: - - name: delete-crds - image: {{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }} - imagePullPolicy: IfNotPresent - command: - - /bin/kubectl - - delete - - -f - - /etc/config/crd-manifest.yaml - volumeMounts: - - name: crd-manifest - readOnly: true - mountPath: /etc/config - restartPolicy: OnFailure - volumes: - - name: crd-manifest - configMap: - name: {{ .Chart.Name }}-manifest diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/manifest.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/manifest.yaml deleted file mode 100755 index 31016b6ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/manifest.yaml +++ /dev/null @@ -1,14 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ .Chart.Name }}-manifest - namespace: {{ .Release.Namespace }} -data: - crd-manifest.yaml: | - {{- $currentScope := . -}} - {{- $crds := (.Files.Glob "crd-manifest/**.yaml") -}} - {{- range $path, $_ := $crds -}} - {{- with $currentScope -}} - {{ .Files.Get $path | nindent 4 }} - --- - {{- end -}}{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/rbac.yaml deleted file mode 100755 index bdda1ddad..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/templates/rbac.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -rules: -- apiGroups: - - apiextensions.k8s.io - resources: - - customresourcedefinitions - verbs: ['create', 'get', 'patch', 'delete'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-manager ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-manager - labels: - app: {{ .Chart.Name }}-manager -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-manager -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-manager - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-manager -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'configMap' - - 'secret' diff --git a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/values.yaml b/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/values.yaml deleted file mode 100755 index 3aac0a046..000000000 --- a/charts/rancher-monitoring/rancher-monitoring-crd/9.4.203/values.yaml +++ /dev/null @@ -1,11 +0,0 @@ -# Default values for rancher-monitoring-crd. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/kubectl - tag: v1.18.6 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/.helmignore deleted file mode 100644 index 93bf1ec02..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/.helmignore +++ /dev/null @@ -1,26 +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 -# helm/charts -OWNERS -hack/ -ci/ -kube-prometheus-*.tgz diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CHANGELOG.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CHANGELOG.md deleted file mode 100644 index 8178169b9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CHANGELOG.md +++ /dev/null @@ -1,47 +0,0 @@ -# Changelog -All notable changes from the upstream Prometheus Operator chart will be added to this file. - -## [Package Version 00] - 2020-07-19 -### Added -- Added [Prometheus Adapter](https://github.com/helm/charts/tree/master/stable/prometheus-adapter) as a dependency to the upstream Prometheus Operator chart to allow users to expose custom metrics from the default Prometheus instance deployed by this chart -- Remove `prometheus-operator/cleanup-crds.yaml` and `prometheus-operator/crds.yaml` from the Prometheus Operator upstream chart in favor of just using the CRD directory to install the CRDs. -- Added support for `rkeControllerManager`, `rkeScheduler`, `rkeProxy`, and `rkeEtcd` PushProx exporters for monitoring k8s components within RKE clusters -- Added support for a `k3sServer` PushProx exporter that monitors k3s server components (`kubeControllerManager`, `kubeScheduler`, and `kubeProxy`) within k3s clusters -- Added support for `kubeAdmControllerManager`, `kubeAdmScheduler`, `kubeAdmProxy`, and `kubeAdmEtcd` PushProx exporters for monitoring k8s components within kubeAdm clusters -- Added support for `rke2ControllerManager`, `rke2Scheduler`, `rke2Proxy`, and `rke2Etcd` PushProx exporters for monitoring k8s components within rke2 clusters -- Exposed `prometheus.prometheusSpec.ignoreNamespaceSelectors` on values.yaml and set it to `false` by default. This value instructs the default Prometheus server deployed with this chart to ignore the `namespaceSelector` field within any created ServiceMonitor or PodMonitor CRs that it selects. This prevents ServiceMonitors and PodMonitors from configuring the Prometheus scrape configuration to monitor resources outside the namespace that they are deployed in; if a user needs to have one ServiceMonitor / PodMonitor monitor resources within several namespaces (such as the resources that are used to monitor Istio in a default installation), they should not enable this option since it would require them to create one ServiceMonitor / PodMonitor CR per namespace that they would like to monitor. Relevant fields were also updated in the default README.md. -- Added `grafana.sidecar.dashboards.searchNamespace` to `values.yaml` with a default value of `cattle-dashboards`. The namespace provided should contain all ConfigMaps with the label `grafana_dashboard` and will be searched by the Grafana Dashboards sidecar for updates. The namespace specified is also created along with this deployment. All default dashboard ConfigMaps have been relocated from the deployment namespace to the namespace specified -- Added `monitoring-admin`, `monitoring-edit`, and `monitoring-view` default `ClusterRoles` to allow admins to assign roles to users to interact with Prometheus Operator CRs. These can be enabled by setting `.Values.global.rbac.userRoles.create` (default: `true`). In a typical RBAC setup, you might want to use a `ClusterRoleBinding` to bind these roles to a Subject to allow them to set up or view `ServiceMonitors` / `PodMonitors` / `PrometheusRules` and view `Prometheus` or `Alertmanager` CRs across the cluster. If `.Values.global.rbac.userRoles.aggregateRolesForRBAC` is enabled, these ClusterRoles will aggregate into the respective default ClusterRoles provided by Kubernetes -- Added `monitoring-config-admin`, `monitoring-config-edit` and `monitoring-config-view` default `Roles` to allow admins to assign roles to users to be able to edit / view `Secrets` and `ConfigMaps` within the `cattle-monitoring-system` namespace. These can be enabled by setting `.Values.global.rbac.userRoles.create` (default: `true`). In a typical RBAC setup, you might want to use a `RoleBinding` to bind these roles to a Subject within the `cattle-monitoring-system` namespace to allow them to modify Secrets / ConfigMaps tied to the deployment, such as your Alertmanager Config Secret. -- Added `monitoring-dashboard-admin`, `monitoring-dashboard-edit` and `monitoring-dashboard-view` default `Roles` to allow admins to assign roles to users to be able to edit / view `ConfigMaps` within the `cattle-dashboards` namespace. These can be enabled by setting `.Values.global.rbac.userRoles.create` (default: `true`) and deploying Grafana as part of this chart. In a typical RBAC setup, you might want to use a `RoleBinding` to bind these roles to a Subject within the `cattle-dashboards` namespace to allow them to create / modify ConfigMaps that contain the JSON used to persist Grafana Dashboards on the cluster. -- Added default resource limits for `Prometheus Operator`, `Prometheus`, `AlertManager`, `Grafana`, `kube-state-metrics`, `node-exporter` -- Added a default template `rancher_defaults.tmpl` to AlertManager that Rancher will offer to users in order to help configure the way alerts are rendered on a notifier. Also updated the default template deployed with this chart to reference that template and added an example of a Slack config using this template as a comment in the `values.yaml`. -- Added support for private registries via introducing a new field for `global.cattle.systemDefaultRegistry` that, if supplied, will automatically be prepended onto every image used by the chart. -- Added a default `nginx` proxy container deployed with Grafana whose config is set in the `ConfigMap` located in `charts/grafana/templates/nginx-config.yaml`. The purpose of this container is to make it possible to view Grafana's UI through a proxy that has a subpath (e.g. Rancher's proxy). This proxy container is set to listen on port `8080` (with a `portName` of `nginx-http` instead of the default `service`), which is also where the Grafana service will now point to, and will forward all requests to the Grafana container listening on the default port `3000`. -- Added a default `nginx` proxy container deployed with Prometheus whose config is set in the `ConfigMap` located in `templates/prometheus/nginx-config.yaml`. The purpose of this container is to make it possible to view Prometheus's UI through a proxy that has a subpath (e.g. Rancher's proxy). This proxy container is set to listen on port `8081` (with a `portName` of `nginx-http` instead of the default `web`), which is also where the Prometheus service will now point to, and will forward all requests to the Prometheus container listening on the default port `9090`. -- Added support for passing CIS Scans in a hardened cluster by introducing a Job that patches the default service account within the `cattle-monitoring-system` and `cattle-dashboards` namespaces on install or upgrade and adding a default allow all `NetworkPolicy` to the `cattle-monitoring-system` and `cattle-dashboards` namespaces. -### Modified -- Updated the chart name from `prometheus-operator` to `rancher-monitoring` and added the `io.rancher.certified: rancher` annotation to `Chart.yaml` -- Modified the default `node-exporter` port from `9100` to `9796` -- Modified the default `nameOverride` to `rancher-monitoring`. This change is necessary as the Prometheus Adapter's default URL (`http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc`) is based off of the value used here; if modified, the default Adapter URL must also be modified -- Modified the default `namespaceOverride` to `cattle-monitoring-system`. This change is necessary as the Prometheus Adapter's default URL (`http://{{ .Values.nameOverride }}-prometheus.{{ .Values.namespaceOverride }}.svc`) is based off of the value used here; if modified, the default Adapter URL must also be modified -- Configured some default values for `grafana.service` values and exposed them in the default README.md -- The default namespaces the following ServiceMonitors were changed from the deployment namespace to allow them to continue to monitor metrics when `prometheus.prometheusSpec.ignoreNamespaceSelectors` is enabled: - - `core-dns`: `kube-system` - - `api-server`: `default` - - `kube-controller-manager`: `kube-system` - - `kubelet`: `{{ .Values.kubelet.namespace }}` -- Disabled the following deployments by default (can be enabled if required): - - `AlertManager` - - `kube-controller-manager` metrics exporter - - `kube-etcd` metrics exporter - - `kube-scheduler` metrics exporter - - `kube-proxy` metrics exporter -- Updated default Grafana `deploymentStrategy` to `Recreate` to prevent deployments from being stuck on upgrade if a PV is attached to Grafana -- Modified the default `SelectorNilUsesHelmValues` to default to `false`. As a result, we look for all CRs with any labels in all namespaces by default rather than just the ones tagged with the label `release: rancher-monitoring`. -- Modified the default images used by the `rancher-monitoring` chart to point to Rancher mirrors of the original images from upstream. -- Modified the behavior of the chart to create the Alertmanager Config Secret via a pre-install hook instead of using the normal Helm lifecycle to manage the secret. The benefit of this approach is that all changes to the Config Secret done on a live cluster will never get overridden on a `helm upgrade` since the secret only gets created on a `helm install`. If you would like the secret to be cleaned up on an `helm uninstall`, enable `alertmanager.cleanupOnUninstall`; however, this is disabled by default to prevent the loss of alerting configuration on an uninstall. This secret will never be modified on a `helm upgrade`. -- Modified the default `securityContext` for `Pod` templates across the chart to `{"runAsNonRoot": "true", "runAsUser": "1000"}` and replaced `grafana.rbac.pspUseAppArmor` in favor of `grafana.rbac.pspAnnotations={}` in order to make it possible to deploy this chart on a hardened cluster which does not support Seccomp or AppArmor annotations in PSPs. Users can always choose to specify the annotations they want to use for the PSP directly as part of the values provided. -- Modified `.Values.prometheus.prometheusSpec.containers` to take in a string representing a template that should be rendered by Helm (via `tpl`) instead of allowing a user to provide YAML directly. -- Modified the default Grafana configuration to auto assign users who access Grafana to the Viewer role and enable anonymous access to Grafana dashboards by default. This default works well for a Rancher user who is accessing Grafana via the `kubectl proxy` on the Rancher Dashboard UI since anonymous users who enter via the proxy are authenticated by the k8s API Server, but you can / should modify this behavior if you plan on exposing Grafana in a way that does not require authentication (e.g. as a `NodePort` service). -- Modified the default Grafana configuration to add a default dashboard for Rancher on the Grafana home page. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CONTRIBUTING.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CONTRIBUTING.md deleted file mode 100644 index f6ce2a323..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/CONTRIBUTING.md +++ /dev/null @@ -1,12 +0,0 @@ -# Contributing Guidelines - -## How to contribute to this chart - -1. Fork this repository, develop and test your Chart. -1. Bump the chart version for every change. -1. Ensure PR title has the prefix `[kube-prometheus-stack]` -1. When making changes to rules or dashboards, see the README.md section on how to sync data from upstream repositories -1. Check the `hack/minikube` folder has scripts to set up minikube and components of this chart that will allow all components to be scraped. You can use this configuration when validating your changes. -1. Check for changes of RBAC rules. -1. Check for changes in CRD specs. -1. PR must pass the linter (`helm lint`) diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/Chart.yaml deleted file mode 100644 index 059b140fb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/Chart.yaml +++ /dev/null @@ -1,115 +0,0 @@ -annotations: - artifacthub.io/links: | - - name: Chart Source - url: https://github.com/prometheus-community/helm-charts - - name: Upstream Project - url: https://github.com/prometheus-operator/kube-prometheus - artifacthub.io/operator: "true" - catalog.cattle.io/auto-install: rancher-monitoring-crd=match - catalog.cattle.io/certified: rancher - catalog.cattle.io/display-name: Monitoring - catalog.cattle.io/namespace: cattle-monitoring-system - catalog.cattle.io/provides-gvr: monitoring.coreos.com.prometheus/v1 - catalog.cattle.io/release-name: rancher-monitoring - catalog.cattle.io/requests-cpu: 4500m - catalog.cattle.io/requests-memory: 4000Mi - catalog.cattle.io/ui-component: monitoring -apiVersion: v2 -appVersion: 0.46.0 -dependencies: -- condition: grafana.enabled - name: grafana - repository: file://./charts/grafana -- condition: hardenedKubelet.enabled - name: hardenedKubelet - repository: file://./charts/hardenedKubelet -- condition: hardenedNodeExporter.enabled - name: hardenedNodeExporter - repository: file://./charts/hardenedNodeExporter -- condition: k3sServer.enabled - name: k3sServer - repository: file://./charts/k3sServer -- condition: kubeStateMetrics.enabled - name: kube-state-metrics - repository: file://./charts/kube-state-metrics -- condition: kubeAdmControllerManager.enabled - name: kubeAdmControllerManager - repository: file://./charts/kubeAdmControllerManager -- condition: kubeAdmEtcd.enabled - name: kubeAdmEtcd - repository: file://./charts/kubeAdmEtcd -- condition: kubeAdmProxy.enabled - name: kubeAdmProxy - repository: file://./charts/kubeAdmProxy -- condition: kubeAdmScheduler.enabled - name: kubeAdmScheduler - repository: file://./charts/kubeAdmScheduler -- condition: prometheus-adapter.enabled - name: prometheus-adapter - repository: file://./charts/prometheus-adapter -- condition: nodeExporter.enabled - name: prometheus-node-exporter - repository: file://./charts/prometheus-node-exporter -- condition: rke2ControllerManager.enabled - name: rke2ControllerManager - repository: file://./charts/rke2ControllerManager -- condition: rke2Etcd.enabled - name: rke2Etcd - repository: file://./charts/rke2Etcd -- condition: rke2IngressNginx.enabled - name: rke2IngressNginx - repository: file://./charts/rke2IngressNginx -- condition: rke2Proxy.enabled - name: rke2Proxy - repository: file://./charts/rke2Proxy -- condition: rke2Scheduler.enabled - name: rke2Scheduler - repository: file://./charts/rke2Scheduler -- condition: rkeControllerManager.enabled - name: rkeControllerManager - repository: file://./charts/rkeControllerManager -- condition: rkeEtcd.enabled - name: rkeEtcd - repository: file://./charts/rkeEtcd -- condition: rkeIngressNginx.enabled - name: rkeIngressNginx - repository: file://./charts/rkeIngressNginx -- condition: rkeProxy.enabled - name: rkeProxy - repository: file://./charts/rkeProxy -- condition: rkeScheduler.enabled - name: rkeScheduler - repository: file://./charts/rkeScheduler -- condition: global.cattle.windows.enabled - name: windowsExporter - repository: file://./charts/windowsExporter -description: Collects several related Helm charts, 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://github.com/prometheus-operator/kube-prometheus -icon: https://raw.githubusercontent.com/prometheus/prometheus.github.io/master/assets/prometheus_logo-cb55bb5c346.png -keywords: -- operator -- prometheus -- kube-prometheus -- monitoring -kubeVersion: '>=1.16.0-0' -maintainers: -- name: vsliouniaev -- name: bismarck -- email: gianrubio@gmail.com - name: gianrubio -- email: github.gkarthiks@gmail.com - name: gkarthiks -- email: scott@r6by.com - name: scottrigby -- email: miroslav.hadzhiev@gmail.com - name: Xtigyro -- email: arvind.iyengar@suse.com - name: Arvind -name: rancher-monitoring -sources: -- https://github.com/prometheus-community/helm-charts -- https://github.com/prometheus-operator/kube-prometheus -type: application -version: 14.5.101+up14.5.0 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/README.md deleted file mode 100644 index 396137e01..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/README.md +++ /dev/null @@ -1,457 +0,0 @@ -# kube-prometheus-stack - -Installs the [kube-prometheus stack](https://github.com/prometheus-operator/kube-prometheus), a collection of Kubernetes manifests, [Grafana](http://grafana.com/) dashboards, and [Prometheus rules](https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/) combined with documentation and scripts to provide easy to operate end-to-end Kubernetes cluster monitoring with [Prometheus](https://prometheus.io/) using the [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). - -See the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) README for details about components, dashboards, and alerts. - -_Note: This chart was formerly named `prometheus-operator` chart, now renamed to more clearly reflect that it installs the `kube-prometheus` project stack, within which Prometheus Operator is only one component._ - -## Prerequisites - -- Kubernetes 1.16+ -- Helm 3+ - -## Get Repo Info - -```console -helm repo add prometheus-community https://prometheus-community.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Install Chart - -```console -# Helm -$ helm install [RELEASE_NAME] prometheus-community/kube-prometheus-stack -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Dependencies - -By default this chart installs additional, dependent charts: - -- [kubernetes/kube-state-metrics](https://github.com/kubernetes/kube-state-metrics/tree/master/charts/kube-state-metrics) -- [prometheus-community/prometheus-node-exporter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-node-exporter) -- [grafana/grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana) - -To disable dependencies during installation, see [multiple releases](#multiple-releases) below. - -_See [helm dependency](https://helm.sh/docs/helm/helm_dependency/) for command documentation._ - -## Uninstall Chart - -```console -# Helm -$ helm uninstall [RELEASE_NAME] -``` - -This removes all the Kubernetes components associated with the chart and deletes the release. - -_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ - -CRDs created by this chart are not removed by default and should be manually cleaned up: - -```console -kubectl delete crd alertmanagerconfigs.monitoring.coreos.com -kubectl delete crd alertmanagers.monitoring.coreos.com -kubectl delete crd podmonitors.monitoring.coreos.com -kubectl delete crd probes.monitoring.coreos.com -kubectl delete crd prometheuses.monitoring.coreos.com -kubectl delete crd prometheusrules.monitoring.coreos.com -kubectl delete crd servicemonitors.monitoring.coreos.com -kubectl delete crd thanosrulers.monitoring.coreos.com -``` - -## Upgrading Chart - -```console -# Helm -$ helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack -``` - -With Helm v3, CRDs created by this chart are not updated by default and should be manually updated. -Consult also the [Helm Documentation on CRDs](https://helm.sh/docs/chart_best_practices/custom_resource_definitions). - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### Upgrading an existing Release to a new major version - -A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an incompatible breaking change needing manual actions. - -### From 13.x to 14.x - -Version 14 upgrades prometheus-operator from 0.45.x to 0.46.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRDs manually before updating: - -```console -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_podmonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_servicemonitors.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.46.0/example/prometheus-operator-crd/monitoring.coreos.com_thanosrulers.yaml -``` - -### From 12.x to 13.x - -Version 13 upgrades prometheus-operator from 0.44.x to 0.45.x. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: - -```console -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_prometheuses.yaml -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/v0.45.0/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagers.yaml -``` - -### From 11.x to 12.x - -The chart was migrated to support only helm v3 and later. - -### From 10.x to 11.x - -Version 11 upgrades prometheus-operator from 0.42.x to 0.43.x. Starting with 0.43.x an additional `AlertmanagerConfigs` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: - -```console -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.43/example/prometheus-operator-crd/monitoring.coreos.com_alertmanagerconfigs.yaml -``` - -Version 11 removes the deprecated tlsProxy via ghostunnel in favor of native TLS support the prometheus-operator gained with v0.39.0. - -### From 9.x to 10.x - -Version 10 upgrades prometheus-operator from 0.38.x to 0.42.x. Starting with 0.40.x an additional `Probes` CRD is introduced. Helm does not automatically upgrade or install new CRDs on a chart upgrade, so you have to install the CRD manually before updating: - -```console -kubectl apply -f https://raw.githubusercontent.com/prometheus-operator/prometheus-operator/release-0.42/example/prometheus-operator-crd/monitoring.coreos.com_probes.yaml -``` - -### From 8.x to 9.x - -Version 9 of the helm chart removes the existing `additionalScrapeConfigsExternal` in favour of `additionalScrapeConfigsSecret`. This change lets users specify the secret name and secret key to use for the additional scrape configuration of prometheus. This is useful for users that have prometheus-operator as a subchart and also have a template that creates the additional scrape configuration. - -### From 7.x to 8.x - -Due to new template functions being used in the rules in version 8.x.x of the chart, an upgrade to Prometheus Operator and Prometheus is necessary in order to support them. First, upgrade to the latest version of 7.x.x - -```console -helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version 7.5.0 -``` - -Then upgrade to 8.x.x - -```console -helm upgrade [RELEASE_NAME] prometheus-community/kube-prometheus-stack --version [8.x.x] -``` - -Minimal recommended Prometheus version for this chart release is `2.12.x` - -### From 6.x to 7.x - -Due to a change in grafana subchart, version 7.x.x now requires Helm >= 2.12.0. - -### From 5.x to 6.x - -Due to a change in deployment labels of kube-state-metrics, the upgrade requires `helm upgrade --force` in order to re-create the deployment. If this is not done an error will occur indicating that the deployment cannot be modified: - -```console -invalid: spec.selector: Invalid value: v1.LabelSelector{MatchLabels:map[string]string{"app.kubernetes.io/name":"kube-state-metrics"}, MatchExpressions:[]v1.LabelSelectorRequirement(nil)}: field is immutable -``` - -If this error has already been encountered, a `helm history` command can be used to determine which release has worked, then `helm rollback` to the release, then `helm upgrade --force` to this new one - -## Configuration - -See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: - -```console -helm show values prometheus-community/kube-prometheus-stack -``` - -You may also run `helm show values` on this chart's [dependencies](#dependencies) for additional options. - -### Rancher Monitoring Configuration - -The following table shows values exposed by Rancher Monitoring's additions to the chart: - -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `nameOverride` | Provide a name that should be used instead of the chart name when naming all resources deployed by this chart |`"rancher-monitoring"`| -| `namespaceOverride` | Override the deployment namespace | `"cattle-monitoring-system"` | -| `global.rbac.userRoles.create` | Create default user ClusterRoles to allow users to interact with Prometheus CRs, ConfigMaps, and Secrets | `true` | -| `global.rbac.userRoles.aggregateToDefaultRoles` | Aggregate default user ClusterRoles into default k8s ClusterRoles | `true` | -| `prometheus-adapter.enabled` | Whether to install [prometheus-adapter](https://github.com/helm/charts/tree/master/stable/prometheus-adapter) within the cluster | `true` | -| `prometheus-adapter.prometheus.url` | A URL pointing to the Prometheus deployment within your cluster. The default value is set based on the assumption that you plan to deploy the default Prometheus instance from this chart where `.Values.namespaceOverride=cattle-monitoring-system` and `.Values.nameOverride=rancher-monitoring` | `http://rancher-monitoring-prometheus.cattle-monitoring-system.svc` | -| `prometheus-adapter.prometheus.port` | The port on the Prometheus deployment that Prometheus Adapter can make requests to | `9090` | -| `prometheus.prometheusSpec.ignoreNamespaceSelectors` | Ignore NamespaceSelector settings from the PodMonitor and ServiceMonitor configs. If true, PodMonitors and ServiceMonitors can only discover Pods and Services within the namespace they are deployed into | `false` | -| `alertmanager.secret.cleanupOnUninstall` | Whether or not to trigger a job to clean up the alertmanager config secret to be deleted on a `helm uninstall`. By default, this is disabled to prevent the loss of alerting configuration on an uninstall. | `false` | -| `alertmanager.secret.image.pullPolicy` | Image pull policy for job(s) related to alertmanager config secret's lifecycle | `IfNotPresent` | -| `alertmanager.secret.image.repository` | Repository to use for job(s) related to alertmanager config secret's lifecycle | `rancher/rancher-agent` | -| `alertmanager.secret.image.tag` | Tag to use for job(s) related to alertmanager config secret's lifecycle | `v2.4.8` | - -The following values are enabled for different distributions via [rancher-pushprox](https://github.com/rancher/dev-charts/tree/master/packages/rancher-pushprox). See the rancher-pushprox `README.md` for more information on what all values can be configured for the PushProxy chart. - -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `rkeControllerManager.enabled` | Create a PushProx installation for monitoring kube-controller-manager metrics in RKE clusters | `false` | -| `rkeScheduler.enabled` | Create a PushProx installation for monitoring kube-scheduler metrics in RKE clusters | `false` | -| `rkeProxy.enabled` | Create a PushProx installation for monitoring kube-proxy metrics in RKE clusters | `false` | -| `rkeIngressNginx.enabled` | Create a PushProx installation for monitoring ingress-nginx metrics in RKE clusters | `false` | -| `rkeEtcd.enabled` | Create a PushProx installation for monitoring etcd metrics in RKE clusters | `false` | -| `rke2IngressNginx.enabled` | Create a PushProx installation for monitoring ingress-nginx metrics in RKE2 clusters | `false` | -| `k3sServer.enabled` | Create a PushProx installation for monitoring k3s-server metrics (accounts for kube-controller-manager, kube-scheduler, and kube-proxy metrics) in k3s clusters | `false` | -| `kubeAdmControllerManager.enabled` | Create a PushProx installation for monitoring kube-controller-manager metrics in kubeAdm clusters | `false` | -| `kubeAdmScheduler.enabled` | Create a PushProx installation for monitoring kube-scheduler metrics in kubeAdm clusters | `false` | -| `kubeAdmProxy.enabled` | Create a PushProx installation for monitoring kube-proxy metrics in kubeAdm clusters | `false` | -| `kubeAdmEtcd.enabled` | Create a PushProx installation for monitoring etcd metrics in kubeAdm clusters | `false` | - - -### Multiple releases - -The same chart can be used to run multiple Prometheus instances in the same cluster if required. To achieve this, it is necessary to run only one instance of prometheus-operator and a pair of alertmanager pods for an HA configuration, while all other components need to be disabled. To disable a dependency during installation, set `kubeStateMetrics.enabled`, `nodeExporter.enabled` and `grafana.enabled` to `false`. - -## Work-Arounds for Known Issues - -### Running on private GKE clusters - -When Google configure the control plane for private clusters, they automatically configure VPC peering between your Kubernetes cluster’s network and a separate Google managed project. In order to restrict what Google are able to access within your cluster, the firewall rules configured restrict access to your Kubernetes pods. This means that in order to use the webhook component with a GKE private cluster, you must configure an additional firewall rule to allow the GKE control plane access to your webhook pod. - -You can read more information on how to add firewall rules for the GKE control plane nodes in the [GKE docs](https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules) - -Alternatively, you can disable the hooks by setting `prometheusOperator.admissionWebhooks.enabled=false`. - -## PrometheusRules Admission Webhooks - -With Prometheus Operator version 0.30+, the core Prometheus Operator pod exposes an endpoint that will integrate with the `validatingwebhookconfiguration` Kubernetes feature to prevent malformed rules from being added to the cluster. - -### How the Chart Configures the Hooks - -A validating and mutating webhook configuration requires the endpoint to which the request is sent to use TLS. It is possible to set up custom certificates to do this, but in most cases, a self-signed certificate is enough. The setup of this component requires some more complex orchestration when using helm. The steps are created to be idempotent and to allow turning the feature on and off without running into helm quirks. - -1. A pre-install hook provisions a certificate into the same namespace using a format compatible with provisioning using end-user certificates. If the certificate already exists, the hook exits. -2. The prometheus operator pod is configured to use a TLS proxy container, which will load that certificate. -3. Validating and Mutating webhook configurations are created in the cluster, with their failure mode set to Ignore. This allows rules to be created by the same chart at the same time, even though the webhook has not yet been fully set up - it does not have the correct CA field set. -4. A post-install hook reads the CA from the secret created by step 1 and patches the Validating and Mutating webhook configurations. This process will allow a custom CA provisioned by some other process to also be patched into the webhook configurations. The chosen failure policy is also patched into the webhook configurations - -### Alternatives - -It should be possible to use [jetstack/cert-manager](https://github.com/jetstack/cert-manager) if a more complete solution is required, but it has not been tested. - -You can enable automatic self-signed TLS certificate provisioning via cert-manager by setting the `prometheusOperator.admissionWebhooks.certManager.enabled` value to true. - -### Limitations - -Because the operator can only run as a single pod, there is potential for this component failure to cause rule deployment failure. Because this risk is outweighed by the benefit of having validation, the feature is enabled by default. - -## Developing Prometheus Rules and Grafana Dashboards - -This chart Grafana Dashboards and Prometheus Rules are just a copy from [prometheus-operator/prometheus-operator](https://github.com/prometheus-operator/prometheus-operator) and other sources, synced (with alterations) by scripts in [hack](hack) folder. In order to introduce any changes you need to first [add them to the original repo](https://github.com/prometheus-operator/kube-prometheus/blob/master/docs/developing-prometheus-rules-and-grafana-dashboards.md) and then sync there by scripts. - -## Further Information - -For more in-depth documentation of configuration options meanings, please see - -- [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) -- [Prometheus](https://prometheus.io/docs/introduction/overview/) -- [Grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana#grafana-helm-chart) - -## prometheus.io/scrape - -The prometheus operator does not support annotation-based discovery of services, using the `PodMonitor` or `ServiceMonitor` CRD in its place as they provide far more configuration options. -For information on how to use PodMonitors/ServiceMonitors, please see the documentation on the `prometheus-operator/prometheus-operator` documentation here: - -- [ServiceMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md#include-servicemonitors) -- [PodMonitors](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/getting-started.md#include-podmonitors) -- [Running Exporters](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/running-exporters.md) - -By default, Prometheus discovers PodMonitors and ServiceMonitors within its namespace, that are labeled with the same release tag as the prometheus-operator release. -Sometimes, you may need to discover custom PodMonitors/ServiceMonitors, for example used to scrape data from third-party applications. -An easy way of doing this, without compromising the default PodMonitors/ServiceMonitors discovery, is allowing Prometheus to discover all PodMonitors/ServiceMonitors within its namespace, without applying label filtering. -To do so, you can set `prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues` and `prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues` to `false`. - -## Migrating from stable/prometheus-operator chart - -## Zero downtime - -Since `kube-prometheus-stack` is fully compatible with the `stable/prometheus-operator` chart, a migration without downtime can be achieved. -However, the old name prefix needs to be kept. If you want the new name please follow the step by step guide below (with downtime). - -You can override the name to achieve this: - -```console -helm upgrade prometheus-operator prometheus-community/kube-prometheus-stack -n monitoring --reuse-values --set nameOverride=prometheus-operator -``` - -**Note**: It is recommended to run this first with `--dry-run --debug`. - -## Redeploy with new name (downtime) - -If the **prometheus-operator** values are compatible with the new **kube-prometheus-stack** chart, please follow the below steps for migration: - -> The guide presumes that chart is deployed in `monitoring` namespace and the deployments are running there. If in other namespace, please replace the `monitoring` to the deployed namespace. - -1. Patch the PersistenceVolume created/used by the prometheus-operator chart to `Retain` claim policy: - - ```console - kubectl patch pv/ -p '{"spec":{"persistentVolumeReclaimPolicy":"Retain"}}' - ``` - - **Note:** To execute the above command, the user must have a cluster wide permission. Please refer [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) - -2. Uninstall the **prometheus-operator** release and delete the existing PersistentVolumeClaim, and verify PV become Released. - - ```console - helm uninstall prometheus-operator -n monitoring - kubectl delete pvc/ -n monitoring - ``` - - Additionally, you have to manually remove the remaining `prometheus-operator-kubelet` service. - - ```console - kubectl delete service/prometheus-operator-kubelet -n kube-system - ``` - - You can choose to remove all your existing CRDs (ServiceMonitors, Podmonitors, etc.) if you want to. - -3. Remove current `spec.claimRef` values to change the PV's status from Released to Available. - - ```console - kubectl patch pv/ --type json -p='[{"op": "remove", "path": "/spec/claimRef"}]' -n monitoring - ``` - -**Note:** To execute the above command, the user must have a cluster wide permission. Please refer to [Kubernetes RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) - -After these steps, proceed to a fresh **kube-prometheus-stack** installation and make sure the current release of **kube-prometheus-stack** matching the `volumeClaimTemplate` values in the `values.yaml`. - -The binding is done via matching a specific amount of storage requested and with certain access modes. - -For example, if you had storage specified as this with **prometheus-operator**: - -```yaml -volumeClaimTemplate: - spec: - storageClassName: gp2 - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 50Gi -``` - -You have to specify matching `volumeClaimTemplate` with 50Gi storage and `ReadWriteOnce` access mode. - -Additionally, you should check the current AZ of your legacy installation's PV, and configure the fresh release to use the same AZ as the old one. If the pods are in a different AZ than the PV, the release will fail to bind the existing one, hence creating a new PV. - -This can be achieved either by specifying the labels through `values.yaml`, e.g. setting `prometheus.prometheusSpec.nodeSelector` to: - -```yaml -nodeSelector: - failure-domain.beta.kubernetes.io/zone: east-west-1a -``` - -or passing these values as `--set` overrides during installation. - -The new release should now re-attach your previously released PV with its content. - -## Migrating from coreos/prometheus-operator chart - -The multiple charts have been combined into a single chart that installs prometheus operator, prometheus, alertmanager, grafana as well as the multitude of exporters necessary to monitor a cluster. - -There is no simple and direct migration path between the charts as the changes are extensive and intended to make the chart easier to support. - -The capabilities of the old chart are all available in the new chart, including the ability to run multiple prometheus instances on a single cluster - you will need to disable the parts of the chart you do not wish to deploy. - -You can check out the tickets for this change [here](https://github.com/prometheus-operator/prometheus-operator/issues/592) and [here](https://github.com/helm/charts/pull/6765). - -### High-level overview of Changes - -#### Added dependencies - -The chart has added 3 [dependencies](#dependencies). - -- Node-Exporter, Kube-State-Metrics: These components are loaded as dependencies into the chart, and are relatively simple components -- Grafana: The Grafana chart is more feature-rich than this chart - it contains a sidecar that is able to load data sources and dashboards from configmaps deployed into the same cluster. For more information check out the [documentation for the chart](https://github.com/grafana/helm-charts/blob/main/charts/grafana/README.md) - -#### Kubelet Service - -Because the kubelet service has a new name in the chart, make sure to clean up the old kubelet service in the `kube-system` namespace to prevent counting container metrics twice. - -#### Persistent Volumes - -If you would like to keep the data of the current persistent volumes, it should be possible to attach existing volumes to new PVCs and PVs that are created using the conventions in the new chart. For example, in order to use an existing Azure disk for a helm release called `prometheus-migration` the following resources can be created: - -```yaml -apiVersion: v1 -kind: PersistentVolume -metadata: - name: pvc-prometheus-migration-prometheus-0 -spec: - accessModes: - - ReadWriteOnce - azureDisk: - cachingMode: None - diskName: pvc-prometheus-migration-prometheus-0 - diskURI: /subscriptions/f5125d82-2622-4c50-8d25-3f7ba3e9ac4b/resourceGroups/sample-migration-resource-group/providers/Microsoft.Compute/disks/pvc-prometheus-migration-prometheus-0 - fsType: "" - kind: Managed - readOnly: false - capacity: - storage: 1Gi - persistentVolumeReclaimPolicy: Delete - storageClassName: prometheus - volumeMode: Filesystem -``` - -```yaml -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - labels: - app: prometheus - prometheus: prometheus-migration-prometheus - name: prometheus-prometheus-migration-prometheus-db-prometheus-prometheus-migration-prometheus-0 - namespace: monitoring -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1Gi - storageClassName: prometheus - volumeMode: Filesystem - volumeName: pvc-prometheus-migration-prometheus-0 -``` - -The PVC will take ownership of the PV and when you create a release using a persistent volume claim template it will use the existing PVCs as they match the naming convention used by the chart. For other cloud providers similar approaches can be used. - -#### KubeProxy - -The metrics bind address of kube-proxy is default to `127.0.0.1:10249` that prometheus instances **cannot** access to. You should expose metrics by changing `metricsBindAddress` field value to `0.0.0.0:10249` if you want to collect them. - -Depending on the cluster, the relevant part `config.conf` will be in ConfigMap `kube-system/kube-proxy` or `kube-system/kube-proxy-config`. For example: - -```console -kubectl -n kube-system edit cm kube-proxy -``` - -```yaml -apiVersion: v1 -data: - config.conf: |- - apiVersion: kubeproxy.config.k8s.io/v1alpha1 - kind: KubeProxyConfiguration - # ... - # metricsBindAddress: 127.0.0.1:10249 - metricsBindAddress: 0.0.0.0:10249 - # ... - kubeconfig.conf: |- - # ... -kind: ConfigMap -metadata: - labels: - app: kube-proxy - name: kube-proxy - namespace: kube-system -``` diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/app-README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/app-README.md deleted file mode 100644 index af77e04ec..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/app-README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Rancher Monitoring and Alerting - - This chart is based on the upstream [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) chart. The chart deploys [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator) and its CRDs along with [Grafana](https://github.com/grafana/helm-charts/tree/main/charts/grafana), [Prometheus Adapter](https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-adapter) and additional charts / Kubernetes manifests to gather metrics. It allows users to monitor their Kubernetes clusters, view metrics in Grafana dashboards, and set up alerts and notifications. - -For more information on how to use the feature, refer to our [docs](https://rancher.com/docs/rancher/v2.x/en/monitoring-alerting/v2.5/). - -The chart installs the following components: - -- [Prometheus Operator](https://github.com/coreos/prometheus-operator) - The operator provides easy monitoring definitions for Kubernetes services, manages [Prometheus](https://prometheus.io/) and [AlertManager](https://prometheus.io/docs/alerting/latest/alertmanager/) instances, and adds default scrape targets for some Kubernetes components. -- [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus/) - A collection of community-curated Kubernetes manifests, Grafana Dashboards, and PrometheusRules that deploy a default end-to-end cluster monitoring configuration. -- [Grafana](https://github.com/helm/charts/tree/master/stable/grafana) - Grafana allows a user to create / view dashboards based on the cluster metrics collected by Prometheus. -- [node-exporter](https://github.com/helm/charts/tree/master/stable/prometheus-node-exporter) / [kube-state-metrics](https://github.com/helm/charts/tree/master/stable/kube-state-metrics) / [rancher-pushprox](https://github.com/rancher/charts/tree/dev-v2.5/packages/rancher-pushprox/charts) - These charts monitor various Kubernetes components across different Kubernetes cluster types. -- [Prometheus Adapter](https://github.com/helm/charts/tree/master/stable/prometheus-adapter) - The adapter allows a user to expose custom metrics, resource metrics, and external metrics on the default [Prometheus](https://prometheus.io/) instance to the Kubernetes API Server. - -For more information, review the Helm README of this chart. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/.helmignore deleted file mode 100644 index 8cade1318..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/.helmignore +++ /dev/null @@ -1,23 +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 -.vscode -.project -.idea/ -*.tmproj -OWNERS diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/Chart.yaml deleted file mode 100644 index 6f950a023..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/Chart.yaml +++ /dev/null @@ -1,28 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-grafana -apiVersion: v2 -appVersion: 7.4.5 -description: The leading tool for querying and visualizing time series and metrics. -home: https://grafana.net -icon: https://raw.githubusercontent.com/grafana/grafana/master/public/img/logo_transparent_400x.png -kubeVersion: ^1.8.0-0 -maintainers: -- email: zanhsieh@gmail.com - name: zanhsieh -- email: rluckie@cisco.com - name: rtluckie -- email: maor.friedman@redhat.com - name: maorfr -- email: miroslav.hadzhiev@gmail.com - name: Xtigyro -- email: mail@torstenwalter.de - name: torstenwalter -name: grafana -sources: -- https://github.com/grafana/grafana -type: application -version: 6.6.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/README.md deleted file mode 100644 index 957f019ec..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/README.md +++ /dev/null @@ -1,514 +0,0 @@ -# Grafana Helm Chart - -* Installs the web dashboarding system [Grafana](http://grafana.org/) - -## Get Repo Info - -```console -helm repo add grafana https://grafana.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Installing the Chart - -To install the chart with the release name `my-release`: - -```console -helm install my-release grafana/grafana -``` - -## Uninstalling the Chart - -To uninstall/delete the my-release deployment: - -```console -helm delete my-release -``` - -The command removes all the Kubernetes components associated with the chart and deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### To 4.0.0 (And 3.12.1) - -This version requires Helm >= 2.12.0. - -### To 5.0.0 - -You have to add --force to your helm upgrade command as the labels of the chart have changed. - -### To 6.0.0 - -This version requires Helm >= 3.1.0. - -## Configuration - -| Parameter | Description | Default | -|-------------------------------------------|-----------------------------------------------|---------------------------------------------------------| -| `replicas` | Number of nodes | `1` | -| `podDisruptionBudget.minAvailable` | Pod disruption minimum available | `nil` | -| `podDisruptionBudget.maxUnavailable` | Pod disruption maximum unavailable | `nil` | -| `deploymentStrategy` | Deployment strategy | `{ "type": "RollingUpdate" }` | -| `livenessProbe` | Liveness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } "initialDelaySeconds": 60, "timeoutSeconds": 30, "failureThreshold": 10 }` | -| `readinessProbe` | Readiness Probe settings | `{ "httpGet": { "path": "/api/health", "port": 3000 } }`| -| `securityContext` | Deployment securityContext | `{"runAsUser": 472, "runAsGroup": 472, "fsGroup": 472}` | -| `priorityClassName` | Name of Priority Class to assign pods | `nil` | -| `image.repository` | Image repository | `grafana/grafana` | -| `image.tag` | Image tag (`Must be >= 5.0.0`) | `7.4.5` | -| `image.sha` | Image sha (optional) | `2b56f6106ddc376bb46d974230d530754bf65a640dfbc5245191d72d3b49efc6` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Image pull secrets | `{}` | -| `service.type` | Kubernetes service type | `ClusterIP` | -| `service.port` | Kubernetes port where service is exposed | `80` | -| `service.portName` | Name of the port on the service | `service` | -| `service.targetPort` | Internal service is port | `3000` | -| `service.nodePort` | Kubernetes service nodePort | `nil` | -| `service.annotations` | Service annotations | `{}` | -| `service.labels` | Custom labels | `{}` | -| `service.clusterIP` | internal cluster service IP | `nil` | -| `service.loadBalancerIP` | IP address to assign to load balancer (if supported) | `nil` | -| `service.loadBalancerSourceRanges` | list of IP CIDRs allowed access to lb (if supported) | `[]` | -| `service.externalIPs` | service external IP addresses | `[]` | -| `extraExposePorts` | Additional service ports for sidecar containers| `[]` | -| `hostAliases` | adds rules to the pod's /etc/hosts | `[]` | -| `ingress.enabled` | Enables Ingress | `false` | -| `ingress.annotations` | Ingress annotations (values are templated) | `{}` | -| `ingress.labels` | Custom labels | `{}` | -| `ingress.path` | Ingress accepted path | `/` | -| `ingress.pathType` | Ingress type of path | `Prefix` | -| `ingress.hosts` | Ingress accepted hostnames | `["chart-example.local"]` | -| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Toleration labels for pod assignment | `[]` | -| `affinity` | Affinity settings for pod assignment | `{}` | -| `extraInitContainers` | Init containers to add to the grafana pod | `{}` | -| `extraContainers` | Sidecar containers to add to the grafana pod | `{}` | -| `extraContainerVolumes` | Volumes that can be mounted in sidecar containers | `[]` | -| `extraLabels` | Custom labels for all manifests | `{}` | -| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | -| `persistence.enabled` | Use persistent volume to store data | `false` | -| `persistence.type` | Type of persistence (`pvc` or `statefulset`) | `pvc` | -| `persistence.size` | Size of persistent volume claim | `10Gi` | -| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | -| `persistence.storageClassName` | Type of persistent volume claim | `nil` | -| `persistence.accessModes` | Persistence access modes | `[ReadWriteOnce]` | -| `persistence.annotations` | PersistentVolumeClaim annotations | `{}` | -| `persistence.finalizers` | PersistentVolumeClaim finalizers | `[ "kubernetes.io/pvc-protection" ]` | -| `persistence.subPath` | Mount a sub dir of the persistent volume | `nil` | -| `persistence.inMemory.enabled` | If persistence is not enabled, whether to mount the local storage in-memory to improve performance | `false` | -| `persistence.inMemory.sizeLimit` | SizeLimit for the in-memory local storage | `nil` | -| `initChownData.enabled` | If false, don't reset data ownership at startup | true | -| `initChownData.image.repository` | init-chown-data container image repository | `busybox` | -| `initChownData.image.tag` | init-chown-data container image tag | `1.31.1` | -| `initChownData.image.sha` | init-chown-data container image sha (optional)| `""` | -| `initChownData.image.pullPolicy` | init-chown-data container image pull policy | `IfNotPresent` | -| `initChownData.resources` | init-chown-data pod resource requests & limits | `{}` | -| `schedulerName` | Alternate scheduler name | `nil` | -| `env` | Extra environment variables passed to pods | `{}` | -| `envValueFrom` | Environment variables from alternate sources. See the API docs on [EnvVarSource](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core) for format details. | `{}` | -| `envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `envRenderSecret` | Sensible environment variables passed to pods and stored as secret | `{}` | -| `extraSecretMounts` | Additional grafana server secret mounts | `[]` | -| `extraVolumeMounts` | Additional grafana server volume mounts | `[]` | -| `extraConfigmapMounts` | Additional grafana server configMap volume mounts | `[]` | -| `extraEmptyDirMounts` | Additional grafana server emptyDir volume mounts | `[]` | -| `plugins` | Plugins to be loaded along with Grafana | `[]` | -| `datasources` | Configure grafana datasources (passed through tpl) | `{}` | -| `notifiers` | Configure grafana notifiers | `{}` | -| `dashboardProviders` | Configure grafana dashboard providers | `{}` | -| `dashboards` | Dashboards to import | `{}` | -| `dashboardsConfigMaps` | ConfigMaps reference that contains dashboards | `{}` | -| `grafana.ini` | Grafana's primary configuration | `{}` | -| `ldap.enabled` | Enable LDAP authentication | `false` | -| `ldap.existingSecret` | The name of an existing secret containing the `ldap.toml` file, this must have the key `ldap-toml`. | `""` | -| `ldap.config` | Grafana's LDAP configuration | `""` | -| `annotations` | Deployment annotations | `{}` | -| `labels` | Deployment labels | `{}` | -| `podAnnotations` | Pod annotations | `{}` | -| `podLabels` | Pod labels | `{}` | -| `podPortName` | Name of the grafana port on the pod | `grafana` | -| `sidecar.image.repository` | Sidecar image repository | `quay.io/kiwigrid/k8s-sidecar` | -| `sidecar.image.tag` | Sidecar image tag | `1.10.7` | -| `sidecar.image.sha` | Sidecar image sha (optional) | `""` | -| `sidecar.imagePullPolicy` | Sidecar image pull policy | `IfNotPresent` | -| `sidecar.resources` | Sidecar resources | `{}` | -| `sidecar.enableUniqueFilenames` | Sets the kiwigrid/k8s-sidecar UNIQUE_FILENAMES environment variable | `false` | -| `sidecar.dashboards.enabled` | Enables the cluster wide search for dashboards and adds/updates/deletes them in grafana | `false` | -| `sidecar.dashboards.SCProvider` | Enables creation of sidecar provider | `true` | -| `sidecar.dashboards.provider.name` | Unique name of the grafana provider | `sidecarProvider` | -| `sidecar.dashboards.provider.orgid` | Id of the organisation, to which the dashboards should be added | `1` | -| `sidecar.dashboards.provider.folder` | Logical folder in which grafana groups dashboards | `""` | -| `sidecar.dashboards.provider.disableDelete` | Activate to avoid the deletion of imported dashboards | `false` | -| `sidecar.dashboards.provider.allowUiUpdates` | Allow updating provisioned dashboards from the UI | `false` | -| `sidecar.dashboards.provider.type` | Provider type | `file` | -| `sidecar.dashboards.provider.foldersFromFilesStructure` | Allow Grafana to replicate dashboard structure from filesystem. | `false` | -| `sidecar.dashboards.watchMethod` | Method to use to detect ConfigMap changes. With WATCH the sidecar will do a WATCH requests, with SLEEP it will list all ConfigMaps, then sleep for 60 seconds. | `WATCH` | -| `sidecar.skipTlsVerify` | Set to true to skip tls verification for kube api calls | `nil` | -| `sidecar.dashboards.label` | Label that config maps with dashboards should have to be added | `grafana_dashboard` | -| `sidecar.dashboards.labelValue` | Label value that config maps with dashboards should have to be added | `nil` | -| `sidecar.dashboards.folder` | Folder in the pod that should hold the collected dashboards (unless `sidecar.dashboards.defaultFolderName` is set). This path will be mounted. | `/tmp/dashboards` | -| `sidecar.dashboards.folderAnnotation` | The annotation the sidecar will look for in configmaps to override the destination folder for files | `nil` | -| `sidecar.dashboards.defaultFolderName` | The default folder name, it will create a subfolder under the `sidecar.dashboards.folder` and put dashboards in there instead | `nil` | -| `sidecar.dashboards.searchNamespace` | If specified, the sidecar will search for dashboard config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.datasources.enabled` | Enables the cluster wide search for datasources and adds/updates/deletes them in grafana |`false` | -| `sidecar.datasources.label` | Label that config maps with datasources should have to be added | `grafana_datasource` | -| `sidecar.datasources.labelValue` | Label value that config maps with datasources should have to be added | `nil` | -| `sidecar.datasources.searchNamespace` | If specified, the sidecar will search for datasources config-maps inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `sidecar.notifiers.enabled` | Enables the cluster wide search for notifiers and adds/updates/deletes them in grafana | `false` | -| `sidecar.notifiers.label` | Label that config maps with notifiers should have to be added | `grafana_notifier` | -| `sidecar.notifiers.searchNamespace` | If specified, the sidecar will search for notifiers config-maps (or secrets) inside this namespace. Otherwise the namespace in which the sidecar is running will be used. It's also possible to specify ALL to search in all namespaces | `nil` | -| `smtp.existingSecret` | The name of an existing secret containing the SMTP credentials. | `""` | -| `smtp.userKey` | The key in the existing SMTP secret containing the username. | `"user"` | -| `smtp.passwordKey` | The key in the existing SMTP secret containing the password. | `"password"` | -| `admin.existingSecret` | The name of an existing secret containing the admin credentials. | `""` | -| `admin.userKey` | The key in the existing admin secret containing the username. | `"admin-user"` | -| `admin.passwordKey` | The key in the existing admin secret containing the password. | `"admin-password"` | -| `serviceAccount.annotations` | ServiceAccount annotations | | -| `serviceAccount.create` | Create service account | `true` | -| `serviceAccount.name` | Service account name to use, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `` | -| `serviceAccount.nameTest` | Service account name to use for test, when empty will be set to created account if `serviceAccount.create` is set else to `default` | `nil` | -| `rbac.create` | Create and use RBAC resources | `true` | -| `rbac.namespaced` | Creates Role and Rolebinding instead of the default ClusterRole and ClusteRoleBindings for the grafana instance | `false` | -| `rbac.useExistingRole` | Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to the rolename set here. | `nil` | -| `rbac.pspEnabled` | Create PodSecurityPolicy (with `rbac.create`, grant roles permissions as well) | `true` | -| `rbac.pspUseAppArmor` | Enforce AppArmor in created PodSecurityPolicy (requires `rbac.pspEnabled`) | `true` | -| `rbac.extraRoleRules` | Additional rules to add to the Role | [] | -| `rbac.extraClusterRoleRules` | Additional rules to add to the ClusterRole | [] | -| `command` | Define command to be executed by grafana container at startup | `nil` | -| `testFramework.enabled` | Whether to create test-related resources | `true` | -| `testFramework.image` | `test-framework` image repository. | `bats/bats` | -| `testFramework.tag` | `test-framework` image tag. | `v1.1.0` | -| `testFramework.imagePullPolicy` | `test-framework` image pull policy. | `IfNotPresent` | -| `testFramework.securityContext` | `test-framework` securityContext | `{}` | -| `downloadDashboards.env` | Environment variables to be passed to the `download-dashboards` container | `{}` | -| `downloadDashboards.envFromSecret` | Name of a Kubernetes secret (must be manually created in the same namespace) containing values to be added to the environment. Can be templated | `""` | -| `downloadDashboards.resources` | Resources of `download-dashboards` container | `{}` | -| `downloadDashboardsImage.repository` | Curl docker image repo | `curlimages/curl` | -| `downloadDashboardsImage.tag` | Curl docker image tag | `7.73.0` | -| `downloadDashboardsImage.sha` | Curl docker image sha (optional) | `""` | -| `downloadDashboardsImage.pullPolicy` | Curl docker image pull policy | `IfNotPresent` | -| `namespaceOverride` | Override the deployment namespace | `""` (`Release.Namespace`) | -| `serviceMonitor.enabled` | Use servicemonitor from prometheus operator | `false` | -| `serviceMonitor.namespace` | Namespace this servicemonitor is installed in | | -| `serviceMonitor.interval` | How frequently Prometheus should scrape | `1m` | -| `serviceMonitor.path` | Path to scrape | `/metrics` | -| `serviceMonitor.scheme` | Scheme to use for metrics scraping | `http` | -| `serviceMonitor.tlsConfig` | TLS configuration block for the endpoint | `{}` | -| `serviceMonitor.labels` | Labels for the servicemonitor passed to Prometheus Operator | `{}` | -| `serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `30s` | -| `serviceMonitor.relabelings` | MetricRelabelConfigs to apply to samples before ingestion. | `[]` | -| `revisionHistoryLimit` | Number of old ReplicaSets to retain | `10` | -| `imageRenderer.enabled` | Enable the image-renderer deployment & service | `false` | -| `imageRenderer.image.repository` | image-renderer Image repository | `grafana/grafana-image-renderer` | -| `imageRenderer.image.tag` | image-renderer Image tag | `latest` | -| `imageRenderer.image.sha` | image-renderer Image sha (optional) | `""` | -| `imageRenderer.image.pullPolicy` | image-renderer ImagePullPolicy | `Always` | -| `imageRenderer.env` | extra env-vars for image-renderer | `{}` | -| `imageRenderer.serviceAccountName` | image-renderer deployment serviceAccountName | `""` | -| `imageRenderer.securityContext` | image-renderer deployment securityContext | `{}` | -| `imageRenderer.hostAliases` | image-renderer deployment Host Aliases | `[]` | -| `imageRenderer.priorityClassName` | image-renderer deployment priority class | `''` | -| `imageRenderer.service.portName` | image-renderer service port name | `'http'` | -| `imageRenderer.service.port` | image-renderer service port used by both service and deployment | `8081` | -| `imageRenderer.grafanaSubPath` | Grafana sub path to use for image renderer callback url | `''` | -| `imageRenderer.podPortName` | name of the image-renderer port on the pod | `http` | -| `imageRenderer.revisionHistoryLimit` | number of image-renderer replica sets to keep | `10` | -| `imageRenderer.networkPolicy.limitIngress` | Enable a NetworkPolicy to limit inbound traffic from only the created grafana pods | `true` | -| `imageRenderer.networkPolicy.limitEgress` | Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods | `false` | -| `imageRenderer.resources` | Set resource limits for image-renderer pdos | `{}` | - -### Example ingress with path - -With grafana 6.3 and above -```yaml -grafana.ini: - server: - domain: monitoring.example.com - root_url: "%(protocol)s://%(domain)s/grafana" - serve_from_sub_path: true -ingress: - enabled: true - hosts: - - "monitoring.example.com" - path: "/grafana" -``` - -### Example of extraVolumeMounts - -```yaml -- extraVolumeMounts: - - name: plugins - mountPath: /var/lib/grafana/plugins - subPath: configs/grafana/plugins - existingClaim: existing-grafana-claim - readOnly: false -``` - -## Import dashboards - -There are a few methods to import dashboards to Grafana. Below are some examples and explanations as to how to use each method: - -```yaml -dashboards: - default: - some-dashboard: - json: | - { - "annotations": - - ... - # Complete json file here - ... - - "title": "Some Dashboard", - "uid": "abcd1234", - "version": 1 - } - custom-dashboard: - # This is a path to a file inside the dashboards directory inside the chart directory - file: dashboards/custom-dashboard.json - prometheus-stats: - # Ref: https://grafana.com/dashboards/2 - gnetId: 2 - revision: 2 - datasource: Prometheus - local-dashboard: - url: https://raw.githubusercontent.com/user/repository/master/dashboards/dashboard.json -``` - -## BASE64 dashboards - -Dashboards could be stored on a server that does not return JSON directly and instead of it returns a Base64 encoded file (e.g. Gerrit) -A new parameter has been added to the url use case so if you specify a b64content value equals to true after the url entry a Base64 decoding is applied before save the file to disk. -If this entry is not set or is equals to false not decoding is applied to the file before saving it to disk. - -### Gerrit use case - -Gerrit API for download files has the following schema: where {project-name} and -{file-id} usually has '/' in their values and so they MUST be replaced by %2F so if project-name is user/repo, branch-id is master and file-id is equals to dir1/dir2/dashboard -the url value is - -## Sidecar for dashboards - -If the parameter `sidecar.dashboards.enabled` is set, a sidecar container is deployed in the grafana -pod. This container watches all configmaps (or secrets) in the cluster and filters out the ones with -a label as defined in `sidecar.dashboards.label`. The files defined in those configmaps are written -to a folder and accessed by grafana. Changes to the configmaps are monitored and the imported -dashboards are deleted/updated. - -A recommendation is to use one configmap per dashboard, as a reduction of multiple dashboards inside -one configmap is currently not properly mirrored in grafana. - -Example dashboard config: - -```yaml -apiVersion: v1 -kind: ConfigMap -metadata: - name: sample-grafana-dashboard - labels: - grafana_dashboard: "1" -data: - k8s-dashboard.json: |- - [...] -``` - -## Sidecar for datasources - -If the parameter `sidecar.datasources.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.datasources.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the data sources in grafana can be imported. - -Secrets are recommended over configmaps for this usecase because datasources usually contain private -data like usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example values to add a datasource adapted from [Grafana](http://docs.grafana.org/administration/provisioning/#example-datasource-config-file): - -```yaml -datasources: - datasources.yaml: - apiVersion: 1 - datasources: - # name of the datasource. Required - - name: Graphite - # datasource type. Required - type: graphite - # access mode. proxy or direct (Server or Browser in the UI). Required - access: proxy - # org id. will default to orgId 1 if not specified - orgId: 1 - # url - url: http://localhost:8080 - # database password, if used - password: - # database user, if used - user: - # database name, if used - database: - # enable/disable basic auth - basicAuth: - # basic auth username - basicAuthUser: - # basic auth password - basicAuthPassword: - # enable/disable with credentials headers - withCredentials: - # mark as default datasource. Max one per org - isDefault: - # fields that will be converted to json and stored in json_data - jsonData: - graphiteVersion: "1.1" - tlsAuth: true - tlsAuthWithCACert: true - # json object of data that will be encrypted. - secureJsonData: - tlsCACert: "..." - tlsClientCert: "..." - tlsClientKey: "..." - version: 1 - # allow users to edit datasources from the UI. - editable: false -``` - -## Sidecar for notifiers - -If the parameter `sidecar.notifiers.enabled` is set, an init container is deployed in the grafana -pod. This container lists all secrets (or configmaps, though not recommended) in the cluster and -filters out the ones with a label as defined in `sidecar.notifiers.label`. The files defined in -those secrets are written to a folder and accessed by grafana on startup. Using these yaml files, -the notification channels in grafana can be imported. The secrets must be created before -`helm install` so that the notifiers init container can list the secrets. - -Secrets are recommended over configmaps for this usecase because alert notification channels usually contain -private data like SMTP usernames and passwords. Secrets are the more appropriate cluster resource to manage those. - -Example datasource config adapted from [Grafana](https://grafana.com/docs/grafana/latest/administration/provisioning/#alert-notification-channels): - -```yaml -notifiers: - - name: notification-channel-1 - type: slack - uid: notifier1 - # either - org_id: 2 - # or - org_name: Main Org. - is_default: true - send_reminder: true - frequency: 1h - disable_resolve_message: false - # See `Supported Settings` section for settings supporter for each - # alert notification type. - settings: - recipient: 'XXX' - token: 'xoxb' - uploadImage: true - url: https://slack.com - -delete_notifiers: - - name: notification-channel-1 - uid: notifier1 - org_id: 2 - - name: notification-channel-2 - # default org_id: 1 -``` - -## How to serve Grafana with a path prefix (/grafana) - -In order to serve Grafana with a prefix (e.g., ), add the following to your values.yaml. - -```yaml -ingress: - enabled: true - annotations: - kubernetes.io/ingress.class: "nginx" - nginx.ingress.kubernetes.io/rewrite-target: /$1 - nginx.ingress.kubernetes.io/use-regex: "true" - - path: /grafana/?(.*) - hosts: - - k8s.example.dev - -grafana.ini: - server: - root_url: http://localhost:3000/grafana # this host can be localhost -``` - -## How to securely reference secrets in grafana.ini - -This example uses Grafana uses [file providers](https://grafana.com/docs/grafana/latest/administration/configuration/#file-provider) for secret values and the `extraSecretMounts` configuration flag (Additional grafana server secret mounts) to mount the secrets. - -In grafana.ini: - -```yaml -grafana.ini: - [auth.generic_oauth] - enabled = true - client_id = $__file{/etc/secrets/auth_generic_oauth/client_id} - client_secret = $__file{/etc/secrets/auth_generic_oauth/client_secret} -``` - -Existing secret, or created along with helm: - -```yaml ---- -apiVersion: v1 -kind: Secret -metadata: - name: auth-generic-oauth-secret -type: Opaque -stringData: - client_id: - client_secret: -``` - -Include in the `extraSecretMounts` configuration flag: - -```yaml -- extraSecretMounts: - - name: auth-generic-oauth-secret-mount - secretName: auth-generic-oauth-secret - defaultMode: 0440 - mountPath: /etc/secrets/auth_generic_oauth - readOnly: true -``` - -### extraSecretMounts using a Container Storage Interface (CSI) provider - -This example uses a CSI driver e.g. retrieving secrets using [Azure Key Vault Provider](https://github.com/Azure/secrets-store-csi-driver-provider-azure) - -```yaml -- extraSecretMounts: - - name: secrets-store-inline - mountPath: /run/secrets - readOnly: true - csi: - driver: secrets-store.csi.k8s.io - readOnly: true - volumeAttributes: - secretProviderClass: "my-provider" - nodePublishSecretRef: - name: akv-creds -``` - -## Image Renderer Plug-In - -This chart supports enabling [remote image rendering](https://github.com/grafana/grafana-image-renderer/blob/master/docs/remote_rendering_using_docker.md) - -```yaml -imageRenderer: - enabled: true -``` - -### Image Renderer NetworkPolicy - -By default the image-renderer pods will have a network policy which only allows ingress traffic from the created grafana instance diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/dashboards/custom-dashboard.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/dashboards/custom-dashboard.json deleted file mode 100644 index 9e26dfeeb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/dashboards/custom-dashboard.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/NOTES.txt b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/NOTES.txt deleted file mode 100644 index 1fc8436d9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/NOTES.txt +++ /dev/null @@ -1,54 +0,0 @@ -1. Get your '{{ .Values.adminUser }}' user password by running: - - kubectl get secret --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath="{.data.admin-password}" | base64 --decode ; echo - -2. The Grafana server can be accessed via port {{ .Values.service.port }} on the following DNS name from within your cluster: - - {{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}.svc.cluster.local -{{ if .Values.ingress.enabled }} - If you bind grafana to 80, please update values in values.yaml and reinstall: - ``` - securityContext: - runAsUser: 0 - runAsGroup: 0 - fsGroup: 0 - - command: - - "setcap" - - "'cap_net_bind_service=+ep'" - - "/usr/sbin/grafana-server &&" - - "sh" - - "/run.sh" - ``` - Details refer to https://grafana.com/docs/installation/configuration/#http-port. - Or grafana would always crash. - - From outside the cluster, the server URL(s) are: -{{- range .Values.ingress.hosts }} - http://{{ . }} -{{- end }} -{{ else }} - Get the Grafana URL to visit by running these commands in the same shell: -{{ if contains "NodePort" .Values.service.type -}} - export NODE_PORT=$(kubectl get --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "grafana.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ template "grafana.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{ else if contains "LoadBalancer" .Values.service.type -}} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get svc --namespace {{ template "grafana.namespace" . }} -w {{ template "grafana.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ template "grafana.namespace" . }} {{ template "grafana.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - http://$SERVICE_IP:{{ .Values.service.port -}} -{{ else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ template "grafana.namespace" . }} -l "app.kubernetes.io/name={{ template "grafana.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - kubectl --namespace {{ template "grafana.namespace" . }} port-forward $POD_NAME 3000 -{{- end }} -{{- end }} - -3. Login with the password from step 1 and the username: {{ .Values.adminUser }} - -{{- if not .Values.persistence.enabled }} -################################################################################# -###### WARNING: Persistence is disabled!!! You will lose your data when ##### -###### the Grafana pod is terminated. ##### -################################################################################# -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_helpers.tpl deleted file mode 100644 index 76ad78876..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_helpers.tpl +++ /dev/null @@ -1,145 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "grafana.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "grafana.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "grafana.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account -*/}} -{{- define "grafana.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "grafana.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{- define "grafana.serviceAccountNameTest" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (print (include "grafana.fullname" .) "-test") .Values.serviceAccount.nameTest }} -{{- else -}} - {{ default "default" .Values.serviceAccount.nameTest }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "grafana.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- if .Values.extraLabels }} -{{ toYaml .Values.extraLabels }} -{{- end }} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "grafana.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "grafana.imageRenderer.labels" -}} -helm.sh/chart: {{ include "grafana.chart" . }} -{{ include "grafana.imageRenderer.selectorLabels" . }} -{{- if or .Chart.AppVersion .Values.image.tag }} -app.kubernetes.io/version: {{ .Values.image.tag | default .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Selector labels ImageRenderer -*/}} -{{- define "grafana.imageRenderer.selectorLabels" -}} -app.kubernetes.io/name: {{ include "grafana.name" . }}-image-renderer -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Return the appropriate apiVersion for rbac. -*/}} -{{- define "rbac.apiVersion" -}} -{{- if .Capabilities.APIVersions.Has "rbac.authorization.k8s.io/v1" }} -{{- print "rbac.authorization.k8s.io/v1" -}} -{{- else -}} -{{- print "rbac.authorization.k8s.io/v1beta1" -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_pod.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_pod.tpl deleted file mode 100644 index 2ba9f115c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/_pod.tpl +++ /dev/null @@ -1,496 +0,0 @@ -{{- define "grafana.pod" -}} -{{- if .Values.schedulerName }} -schedulerName: "{{ .Values.schedulerName }}" -{{- end }} -serviceAccountName: {{ template "grafana.serviceAccountName" . }} -{{- if .Values.securityContext }} -securityContext: -{{ toYaml .Values.securityContext | indent 2 }} -{{- end }} -{{- if .Values.hostAliases }} -hostAliases: -{{ toYaml .Values.hostAliases | indent 2 }} -{{- end }} -{{- if .Values.priorityClassName }} -priorityClassName: {{ .Values.priorityClassName }} -{{- end }} -{{- if ( or .Values.persistence.enabled .Values.dashboards .Values.sidecar.datasources.enabled .Values.sidecar.notifiers.enabled .Values.extraInitContainers) }} -initContainers: -{{- end }} -{{- if ( and .Values.persistence.enabled .Values.initChownData.enabled ) }} - - name: init-chown-data - {{- if .Values.initChownData.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}@sha256:{{ .Values.initChownData.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.initChownData.image.repository }}:{{ .Values.initChownData.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.initChownData.image.pullPolicy }} - securityContext: - runAsNonRoot: false - runAsUser: 0 - command: ["chown", "-R", "{{ .Values.securityContext.runAsUser }}:{{ .Values.securityContext.runAsGroup }}", "/var/lib/grafana"] - resources: -{{ toYaml .Values.initChownData.resources | indent 6 }} - volumeMounts: - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- end }} -{{- if .Values.dashboards }} - - name: download-dashboards - {{- if .Values.downloadDashboardsImage.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}@sha256:{{ .Values.downloadDashboardsImage.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.downloadDashboardsImage.repository }}:{{ .Values.downloadDashboardsImage.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.downloadDashboardsImage.pullPolicy }} - command: ["/bin/sh"] - args: [ "-c", "mkdir -p /var/lib/grafana/dashboards/default && /bin/sh /etc/grafana/download_dashboards.sh" ] - resources: -{{ toYaml .Values.downloadDashboards.resources | indent 6 }} - env: -{{- range $key, $value := .Values.downloadDashboards.env }} - - name: "{{ $key }}" - value: "{{ $value }}" -{{- end }} -{{- if .Values.downloadDashboards.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.downloadDashboards.envFromSecret . }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/download_dashboards.sh" - subPath: download_dashboards.sh - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - {{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: {{ template "grafana.name" . }}-sc-datasources - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - {{- if .Values.sidecar.datasources.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.sidecar.datasources.envFromSecret . }} - {{- end }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.datasources.label }}" - {{- if .Values.sidecar.datasources.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.datasources.labelValue }} - {{- end }} - - name: FOLDER - value: "/etc/grafana/provisioning/datasources" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.datasources.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.datasources.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: {{ template "grafana.name" . }}-sc-notifiers - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: LIST - - name: LABEL - value: "{{ .Values.sidecar.notifiers.label }}" - - name: FOLDER - value: "/etc/grafana/provisioning/notifiers" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.notifiers.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.notifiers.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} -{{- if .Values.extraInitContainers }} -{{ toYaml .Values.extraInitContainers | indent 2 }} -{{- end }} -{{- if .Values.image.pullSecrets }} -imagePullSecrets: -{{- range .Values.image.pullSecrets }} - - name: {{ . }} -{{- end}} -{{- end }} -containers: -{{- if .Values.sidecar.dashboards.enabled }} - - name: {{ template "grafana.name" . }}-sc-dashboard - {{- if .Values.sidecar.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}@sha256:{{ .Values.sidecar.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.sidecar.image.repository }}:{{ .Values.sidecar.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.sidecar.imagePullPolicy }} - env: - - name: METHOD - value: {{ .Values.sidecar.dashboards.watchMethod }} - - name: LABEL - value: "{{ .Values.sidecar.dashboards.label }}" - {{- if .Values.sidecar.dashboards.labelValue }} - - name: LABEL_VALUE - value: {{ quote .Values.sidecar.dashboards.labelValue }} - {{- end }} - - name: FOLDER - value: "{{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }}" - - name: RESOURCE - value: "both" - {{- if .Values.sidecar.enableUniqueFilenames }} - - name: UNIQUE_FILENAMES - value: "{{ .Values.sidecar.enableUniqueFilenames }}" - {{- end }} - {{- if .Values.sidecar.dashboards.searchNamespace }} - - name: NAMESPACE - value: "{{ .Values.sidecar.dashboards.searchNamespace }}" - {{- end }} - {{- if .Values.sidecar.skipTlsVerify }} - - name: SKIP_TLS_VERIFY - value: "{{ .Values.sidecar.skipTlsVerify }}" - {{- end }} - {{- if .Values.sidecar.dashboards.folderAnnotation }} - - name: FOLDER_ANNOTATION - value: "{{ .Values.sidecar.dashboards.folderAnnotation }}" - {{- end }} - resources: -{{ toYaml .Values.sidecar.resources | indent 6 }} - volumeMounts: - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{- end}} - - name: {{ .Chart.Name }} - {{- if .Values.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}@sha256:{{ .Values.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - {{- if .Values.command }} - command: - {{- range .Values.command }} - - {{ . }} - {{- end }} - {{- end}} -{{- if .Values.containerSecurityContext }} - securityContext: -{{- toYaml .Values.containerSecurityContext | nindent 6 }} -{{- end }} - volumeMounts: - - name: config - mountPath: "/etc/grafana/grafana.ini" - subPath: grafana.ini - {{- if .Values.ldap.enabled }} - - name: ldap - mountPath: "/etc/grafana/ldap.toml" - subPath: ldap.toml - {{- end }} - {{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - - name: storage - mountPath: "/var/lib/grafana" -{{- if .Values.persistence.subPath }} - subPath: {{ .Values.persistence.subPath }} -{{- end }} -{{- if .Values.dashboards }} -{{- range $provider, $dashboards := .Values.dashboards }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} - - name: dashboards-{{ $provider }} - mountPath: "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - subPath: "{{ $key }}.json" -{{- end }} -{{- end }} -{{- end }} -{{- end -}} -{{- if .Values.dashboardsConfigMaps }} -{{- range (keys .Values.dashboardsConfigMaps | sortAlpha) }} - - name: dashboards-{{ . }} - mountPath: "/var/lib/grafana/dashboards/{{ . }}" -{{- end }} -{{- end }} -{{- if .Values.datasources }} - - name: config - mountPath: "/etc/grafana/provisioning/datasources/datasources.yaml" - subPath: datasources.yaml -{{- end }} -{{- if .Values.notifiers }} - - name: config - mountPath: "/etc/grafana/provisioning/notifiers/notifiers.yaml" - subPath: notifiers.yaml -{{- end }} -{{- if .Values.dashboardProviders }} - - name: config - mountPath: "/etc/grafana/provisioning/dashboards/dashboardproviders.yaml" - subPath: dashboardproviders.yaml -{{- end }} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - mountPath: {{ .Values.sidecar.dashboards.folder | quote }} -{{ if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - mountPath: "/etc/grafana/provisioning/dashboards/sc-dashboardproviders.yaml" - subPath: provider.yaml -{{- end}} -{{- end}} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - mountPath: "/etc/grafana/provisioning/datasources" -{{- end}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - mountPath: "/etc/grafana/provisioning/notifiers" -{{- end}} - {{- range .Values.extraSecretMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - readOnly: {{ .readOnly }} - subPath: {{ .subPath | default "" }} - {{- end }} - {{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - subPath: {{ .subPath | default "" }} - readOnly: {{ .readOnly }} - {{- end }} - {{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - ports: - - name: {{ .Values.service.portName }} - containerPort: {{ .Values.service.targetPort }} - protocol: TCP - - name: {{ .Values.podPortName }} - containerPort: 3000 - protocol: TCP - env: - {{- if not .Values.env.GF_SECURITY_ADMIN_USER }} - - name: GF_SECURITY_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.userKey | default "admin-user" }} - {{- end }} - {{- if and (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) }} - - name: GF_SECURITY_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.admin.existingSecret | default (include "grafana.fullname" .) }} - key: {{ .Values.admin.passwordKey | default "admin-password" }} - {{- end }} - {{- if .Values.plugins }} - - name: GF_INSTALL_PLUGINS - valueFrom: - configMapKeyRef: - name: {{ template "grafana.fullname" . }} - key: plugins - {{- end }} - {{- if .Values.smtp.existingSecret }} - - name: GF_SMTP_USER - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.userKey | default "user" }} - - name: GF_SMTP_PASSWORD - valueFrom: - secretKeyRef: - name: {{ .Values.smtp.existingSecret }} - key: {{ .Values.smtp.passwordKey | default "password" }} - {{- end }} - {{ if .Values.imageRenderer.enabled }} - - name: GF_RENDERING_SERVER_URL - value: http://{{ template "grafana.fullname" . }}-image-renderer.{{ template "grafana.namespace" . }}:{{ .Values.imageRenderer.service.port }}/render - - name: GF_RENDERING_CALLBACK_URL - value: http://{{ template "grafana.fullname" . }}.{{ template "grafana.namespace" . }}:{{ .Values.service.port }}/{{ .Values.imageRenderer.grafanaSubPath }} - {{ end }} - {{- range $key, $value := .Values.envValueFrom }} - - name: {{ $key | quote }} - valueFrom: -{{ toYaml $value | indent 10 }} - {{- end }} -{{- range $key, $value := .Values.env }} - - name: "{{ tpl $key $ }}" - value: "{{ tpl (print $value) $ }}" -{{- end }} - {{- if .Values.envFromSecret }} - envFrom: - - secretRef: - name: {{ tpl .Values.envFromSecret . }} - {{- end }} - {{- if .Values.envRenderSecret }} - envFrom: - - secretRef: - name: {{ template "grafana.fullname" . }}-env - {{- end }} - livenessProbe: -{{ toYaml .Values.livenessProbe | indent 6 }} - readinessProbe: -{{ toYaml .Values.readinessProbe | indent 6 }} - resources: -{{ toYaml .Values.resources | indent 6 }} -{{- with .Values.extraContainers }} -{{ tpl . $ | indent 2 }} -{{- end }} -nodeSelector: {{ include "linux-node-selector" . | nindent 2 }} -{{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 2 }} -{{- end }} -{{- with .Values.affinity }} -affinity: -{{ toYaml . | indent 2 }} -{{- end }} -tolerations: {{ include "linux-node-tolerations" . | nindent 2 }} -{{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 2 }} -{{- end }} -volumes: - - name: config - configMap: - name: {{ template "grafana.fullname" . }} -{{- range .Values.extraConfigmapMounts }} - - name: {{ .name }} - configMap: - name: {{ .configMap }} -{{- end }} - {{- if .Values.dashboards }} - {{- range (keys .Values.dashboards | sortAlpha) }} - - name: dashboards-{{ . }} - configMap: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ . }} - {{- end }} - {{- end }} - {{- if .Values.dashboardsConfigMaps }} - {{ $root := . }} - {{- range $provider, $name := .Values.dashboardsConfigMaps }} - - name: dashboards-{{ $provider }} - configMap: - name: {{ tpl $name $root }} - {{- end }} - {{- end }} - {{- if .Values.ldap.enabled }} - - name: ldap - secret: - {{- if .Values.ldap.existingSecret }} - secretName: {{ .Values.ldap.existingSecret }} - {{- else }} - secretName: {{ template "grafana.fullname" . }} - {{- end }} - items: - - key: ldap-toml - path: ldap.toml - {{- end }} -{{- if and .Values.persistence.enabled (eq .Values.persistence.type "pvc") }} - - name: storage - persistentVolumeClaim: - claimName: {{ .Values.persistence.existingClaim | default (include "grafana.fullname" .) }} -{{- else if and .Values.persistence.enabled (eq .Values.persistence.type "statefulset") }} -# nothing -{{- else }} - - name: storage -{{- if .Values.persistence.inMemory.enabled }} - emptyDir: - medium: Memory -{{- if .Values.persistence.inMemory.sizeLimit }} - sizeLimit: {{ .Values.persistence.inMemory.sizeLimit }} -{{- end -}} -{{- else }} - emptyDir: {} -{{- end -}} -{{- end -}} -{{- if .Values.sidecar.dashboards.enabled }} - - name: sc-dashboard-volume - emptyDir: {} -{{- if .Values.sidecar.dashboards.SCProvider }} - - name: sc-dashboard-provider - configMap: - name: {{ template "grafana.fullname" . }}-config-dashboards -{{- end }} -{{- end }} -{{- if .Values.sidecar.datasources.enabled }} - - name: sc-datasources-volume - emptyDir: {} -{{- end -}} -{{- if .Values.sidecar.notifiers.enabled }} - - name: sc-notifiers-volume - emptyDir: {} -{{- end -}} -{{- range .Values.extraSecretMounts }} -{{- if .secretName }} - - name: {{ .name }} - secret: - secretName: {{ .secretName }} - defaultMode: {{ .defaultMode }} -{{- else if .projected }} - - name: {{ .name }} - projected: {{- toYaml .projected | nindent 6 }} -{{- else if .csi }} - - name: {{ .name }} - csi: {{- toYaml .csi | nindent 6 }} -{{- end }} -{{- end }} -{{- range .Values.extraVolumeMounts }} - - name: {{ .name }} - persistentVolumeClaim: - claimName: {{ .existingClaim }} -{{- end }} -{{- range .Values.extraEmptyDirMounts }} - - name: {{ .name }} - emptyDir: {} -{{- end -}} -{{- if .Values.extraContainerVolumes }} -{{ toYaml .Values.extraContainerVolumes | indent 2 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrole.yaml deleted file mode 100644 index f09e06563..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrole.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) (not .Values.rbac.useExistingRole) }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- if or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraClusterRoleRules) }} -rules: -{{- if or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end}} -{{- with .Values.rbac.extraClusterRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end}} -{{- end}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrolebinding.yaml deleted file mode 100644 index 4accbfac0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.namespaced) }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "grafana.fullname" . }}-clusterrolebinding - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -subjects: - - kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -roleRef: - kind: ClusterRole -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }}-clusterrole -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} - apiGroup: rbac.authorization.k8s.io -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap-dashboard-provider.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap-dashboard-provider.yaml deleted file mode 100644 index 65d73858e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap-dashboard-provider.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if .Values.sidecar.dashboards.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.fullname" . }}-config-dashboards - namespace: {{ template "grafana.namespace" . }} -data: - provider.yaml: |- - apiVersion: 1 - providers: - - name: '{{ .Values.sidecar.dashboards.provider.name }}' - orgId: {{ .Values.sidecar.dashboards.provider.orgid }} - {{- if not .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - folder: '{{ .Values.sidecar.dashboards.provider.folder }}' - {{- end}} - type: {{ .Values.sidecar.dashboards.provider.type }} - disableDeletion: {{ .Values.sidecar.dashboards.provider.disableDelete }} - allowUiUpdates: {{ .Values.sidecar.dashboards.provider.allowUiUpdates }} - updateIntervalSeconds: {{ .Values.sidecar.dashboards.provider.updateIntervalSeconds | default 30 }} - options: - foldersFromFilesStructure: {{ .Values.sidecar.dashboards.provider.foldersFromFilesStructure }} - path: {{ .Values.sidecar.dashboards.folder }}{{- with .Values.sidecar.dashboards.defaultFolderName }}/{{ . }}{{- end }} -{{- end}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap.yaml deleted file mode 100644 index de32b7ab2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/configmap.yaml +++ /dev/null @@ -1,80 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -data: -{{- if .Values.plugins }} - plugins: {{ join "," .Values.plugins }} -{{- end }} - grafana.ini: | -{{- range $key, $value := index .Values "grafana.ini" }} - [{{ $key }}] - {{- range $elem, $elemVal := $value }} - {{- if kindIs "invalid" $elemVal }} - {{ $elem }} = - {{- else }} - {{ $elem }} = {{ tpl (toYaml $elemVal) $ }} - {{- end }} - {{- end }} -{{- end }} - -{{- if .Values.datasources }} -{{ $root := . }} - {{- range $key, $value := .Values.datasources }} - {{ $key }}: | -{{ tpl (toYaml $value | indent 4) $root }} - {{- end -}} -{{- end -}} - -{{- if .Values.notifiers }} - {{- range $key, $value := .Values.notifiers }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{ $key }}: | -{{ toYaml $value | indent 4 }} - {{- end -}} -{{- end -}} - -{{- if .Values.dashboards }} - download_dashboards.sh: | - #!/usr/bin/env sh - set -euf - {{- if .Values.dashboardProviders }} - {{- range $key, $value := .Values.dashboardProviders }} - {{- range $value.providers }} - mkdir -p {{ .options.path }} - {{- end }} - {{- end }} - {{- end }} - - {{- range $provider, $dashboards := .Values.dashboards }} - {{- range $key, $value := $dashboards }} - {{- if (or (hasKey $value "gnetId") (hasKey $value "url")) }} - curl -skf \ - --connect-timeout 60 \ - --max-time 60 \ - {{- if not $value.b64content }} - -H "Accept: application/json" \ - {{- if $value.token }} - -H "Authorization: token {{ $value.token }}" \ - {{- end }} - -H "Content-Type: application/json;charset=UTF-8" \ - {{ end }} - {{- if $value.url -}}"{{ $value.url }}"{{- else -}}"https://grafana.com/api/dashboards/{{ $value.gnetId }}/revisions/{{- if $value.revision -}}{{ $value.revision }}{{- else -}}1{{- end -}}/download"{{- end -}}{{ if $value.datasource }} | sed '/-- .* --/! s/"datasource":.*,/"datasource": "{{ $value.datasource }}",/g'{{ end }}{{- if $value.b64content -}} | base64 -d {{- end -}} \ - > "/var/lib/grafana/dashboards/{{ $provider }}/{{ $key }}.json" - {{- end -}} - {{- end }} - {{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/dashboards-json-configmap.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/dashboards-json-configmap.yaml deleted file mode 100644 index 59e0be641..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/dashboards-json-configmap.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if .Values.dashboards }} -{{ $files := .Files }} -{{- range $provider, $dashboards := .Values.dashboards }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" $ }}-dashboards-{{ $provider }} - namespace: {{ template "grafana.namespace" $ }} - labels: - {{- include "grafana.labels" $ | nindent 4 }} - dashboard-provider: {{ $provider }} -{{- if $dashboards }} -data: -{{- $dashboardFound := false }} -{{- range $key, $value := $dashboards }} -{{- if (or (hasKey $value "json") (hasKey $value "file")) }} -{{- $dashboardFound = true }} -{{ print $key | indent 2 }}.json: -{{- if hasKey $value "json" }} - |- -{{ $value.json | indent 6 }} -{{- end }} -{{- if hasKey $value "file" }} -{{ toYaml ( $files.Get $value.file ) | indent 4}} -{{- end }} -{{- end }} -{{- end }} -{{- if not $dashboardFound }} - {} -{{- end }} -{{- end }} ---- -{{- end }} - -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/deployment.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/deployment.yaml deleted file mode 100644 index 4d77794cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/deployment.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{ if (or (not .Values.persistence.enabled) (eq .Values.persistence.type "pvc")) }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- with .Values.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- if .Values.envRenderSecret }} - checksum/secret-env: {{ include (print $.Template.BasePath "/secret-env.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/headless-service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/headless-service.yaml deleted file mode 100644 index 2fa816e04..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/headless-service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-headless - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - clusterIP: None - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - type: ClusterIP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-deployment.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-deployment.yaml deleted file mode 100644 index d17b9dfed..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-deployment.yaml +++ /dev/null @@ -1,117 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.labels }} -{{ toYaml .Values.imageRenderer.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.imageRenderer.replicas }} - revisionHistoryLimit: {{ .Values.imageRenderer.revisionHistoryLimit }} - selector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} -{{- with .Values.imageRenderer.deploymentStrategy }} - strategy: -{{ toYaml . | trim | indent 4 }} -{{- end }} - template: - metadata: - labels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 8 }} -{{- with .Values.imageRenderer.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} -{{- with .Values.imageRenderer.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - - {{- if .Values.imageRenderer.schedulerName }} - schedulerName: "{{ .Values.imageRenderer.schedulerName }}" - {{- end }} - {{- if .Values.imageRenderer.serviceAccountName }} - serviceAccountName: "{{ .Values.imageRenderer.serviceAccountName }}" - {{- else }} - serviceAccountName: {{ template "grafana.serviceAccountName" . }} - {{- end }} - {{- if .Values.imageRenderer.securityContext }} - securityContext: - {{ toYaml .Values.imageRenderer.securityContext | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.hostAliases }} - hostAliases: - {{ toYaml .Values.imageRenderer.hostAliases | indent 2 }} - {{- end }} - {{- if .Values.imageRenderer.priorityClassName }} - priorityClassName: {{ .Values.imageRenderer.priorityClassName }} - {{- end }} - {{- if .Values.imageRenderer.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.imageRenderer.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - containers: - - name: {{ .Chart.Name }}-image-renderer - {{- if .Values.imageRenderer.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}@sha256:{{ .Values.imageRenderer.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.imageRenderer.image.repository }}:{{ .Values.imageRenderer.image.tag }}" - {{- end }} - imagePullPolicy: {{ .Values.imageRenderer.image.pullPolicy }} - {{- if .Values.imageRenderer.command }} - command: - {{- range .Values.imageRenderer.command }} - - {{ . }} - {{- end }} - {{- end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - containerPort: {{ .Values.imageRenderer.service.port }} - protocol: TCP - env: - - name: HTTP_PORT - value: {{ .Values.imageRenderer.service.port | quote }} - {{- range $key, $value := .Values.imageRenderer.env }} - - name: {{ $key | quote }} - value: {{ $value | quote }} - {{- end }} - securityContext: - capabilities: - drop: ['all'] - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true - volumeMounts: - - mountPath: /tmp - name: image-renderer-tmpfs - {{- with .Values.imageRenderer.resources }} - resources: -{{ toYaml . | indent 12 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - {{- if .Values.imageRenderer.nodeSelector }} -{{ toYaml . | indent 8 }} - {{- end }} - {{- with .Values.imageRenderer.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - {{- if .Values.imageRenderer.tolerations }} -{{ toYaml . | indent 8 }} - {{- end }} - volumes: - - name: image-renderer-tmpfs - emptyDir: {} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-network-policy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-network-policy.yaml deleted file mode 100644 index f8ca73aab..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-network-policy.yaml +++ /dev/null @@ -1,76 +0,0 @@ -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitIngress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-ingress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer ingress traffic from grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Ingress - ingress: - - ports: - - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - from: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} - -{{- if and (.Values.imageRenderer.enabled) (.Values.imageRenderer.networkPolicy.limitEgress) }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer-egress - namespace: {{ template "grafana.namespace" . }} - annotations: - comment: Limit image-renderer egress traffic to grafana -spec: - podSelector: - matchLabels: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 6 }} - {{- if .Values.imageRenderer.podLabels }} - {{ toYaml .Values.imageRenderer.podLabels | nindent 6 }} - {{- end }} - - policyTypes: - - Egress - egress: - # allow dns resolution - - ports: - - port: 53 - protocol: UDP - - port: 53 - protocol: TCP - # talk only to grafana - - ports: - - port: {{ .Values.service.port }} - protocol: TCP - to: - - namespaceSelector: - matchLabels: - name: {{ template "grafana.namespace" . }} - podSelector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 14 }} - {{- if .Values.podLabels }} - {{ toYaml .Values.podLabels | nindent 14 }} - {{- end }} -{{ end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-service.yaml deleted file mode 100644 index f5d3eb02f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/image-renderer-service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{ if .Values.imageRenderer.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }}-image-renderer - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.imageRenderer.labels" . | nindent 4 }} -{{- if .Values.imageRenderer.service.labels }} -{{ toYaml .Values.imageRenderer.service.labels | indent 4 }} -{{- end }} -{{- with .Values.imageRenderer.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - type: ClusterIP - {{- if .Values.imageRenderer.service.clusterIP }} - clusterIP: {{ .Values.imageRenderer.service.clusterIP }} - {{end}} - ports: - - name: {{ .Values.imageRenderer.service.portName }} - port: {{ .Values.imageRenderer.service.port }} - protocol: TCP - targetPort: {{ .Values.imageRenderer.service.targetPort }} - selector: - {{- include "grafana.imageRenderer.selectorLabels" . | nindent 4 }} -{{ end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/ingress.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/ingress.yaml deleted file mode 100644 index 44ebfc950..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/ingress.yaml +++ /dev/null @@ -1,80 +0,0 @@ -{{- if .Values.ingress.enabled -}} -{{- $fullName := include "grafana.fullname" . -}} -{{- $servicePort := .Values.service.port -}} -{{- $ingressPath := .Values.ingress.path -}} -{{- $ingressPathType := .Values.ingress.pathType -}} -{{- $extraPaths := .Values.ingress.extraPaths -}} -{{- $newAPI := .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}} -{{- if $newAPI -}} -apiVersion: networking.k8s.io/v1 -{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" }} -apiVersion: networking.k8s.io/v1beta1 -{{- else }} -apiVersion: extensions/v1beta1 -{{- end }} -kind: Ingress -metadata: - name: {{ $fullName }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.ingress.labels }} -{{ toYaml .Values.ingress.labels | indent 4 }} -{{- end }} - {{- if .Values.ingress.annotations }} - annotations: - {{- range $key, $value := .Values.ingress.annotations }} - {{ $key }}: {{ tpl $value $ | quote }} - {{- end }} - {{- end }} -spec: - {{- if .Values.ingress.ingressClassName }} - ingressClassName: {{ .Values.ingress.ingressClassName }} - {{- end -}} -{{- if .Values.ingress.tls }} - tls: -{{ tpl (toYaml .Values.ingress.tls) $ | indent 4 }} -{{- end }} - rules: - {{- if .Values.ingress.hosts }} - {{- range .Values.ingress.hosts }} - - host: {{ tpl . $}} - http: - paths: -{{ if $extraPaths }} -{{ toYaml $extraPaths | indent 10 }} -{{- end }} - - path: {{ $ingressPath }} - {{- if $newAPI }} - pathType: {{ $ingressPathType }} - {{- end }} - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- end }} - {{- else }} - - http: - paths: - - backend: - {{- if $newAPI }} - service: - name: {{ $fullName }} - port: - number: {{ $servicePort }} - pathType: {{ $ingressPathType }} - {{- else }} - serviceName: {{ $fullName }} - servicePort: {{ $servicePort }} - {{- end }} - {{- if $ingressPath }} - path: {{ $ingressPath }} - {{- end }} - {{- end -}} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/nginx-config.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/nginx-config.yaml deleted file mode 100644 index f847c51ce..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/nginx-config.yaml +++ /dev/null @@ -1,75 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: grafana-nginx-proxy-config - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - nginx.conf: |- - worker_processes auto; - error_log /dev/stdout warn; - pid /var/cache/nginx/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - log_format main '[$time_local - $status] $remote_addr - $remote_user $request ($http_referer)'; - - proxy_connect_timeout 10; - proxy_read_timeout 180; - proxy_send_timeout 5; - proxy_buffering off; - proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my_zone:100m inactive=1d max_size=10g; - - server { - listen 8080; - access_log off; - - gzip on; - gzip_min_length 1k; - gzip_comp_level 2; - gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png; - gzip_vary on; - gzip_disable "MSIE [1-6]\."; - - proxy_set_header Host $host; - - location /api/dashboards { - proxy_pass http://localhost:3000; - } - - location /api/search { - proxy_pass http://localhost:3000; - - sub_filter_types application/json; - sub_filter_once off; - sub_filter '"url":"/d' '"url":"d'; - } - - location / { - proxy_cache my_zone; - proxy_cache_valid 200 302 1d; - proxy_cache_valid 301 30d; - proxy_cache_valid any 5m; - proxy_cache_bypass $http_cache_control; - add_header X-Proxy-Cache $upstream_cache_status; - add_header Cache-Control "public"; - - proxy_pass http://localhost:3000/; - - sub_filter_types text/html; - sub_filter_once off; - sub_filter '"appSubUrl":""' '"appSubUrl":"."'; - sub_filter '"url":"/' '"url":"./'; - sub_filter ':"/avatar/' ':"avatar/'; - - if ($request_filename ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) { - expires 90d; - } - } - } - } diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/poddisruptionbudget.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/poddisruptionbudget.yaml deleted file mode 100644 index 61813a436..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/poddisruptionbudget.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.podDisruptionBudget }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.labels }} -{{ toYaml .Values.labels | indent 4 }} -{{- end }} -spec: -{{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} -{{- end }} -{{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} -{{- end }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/podsecuritypolicy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/podsecuritypolicy.yaml deleted file mode 100644 index 19da50791..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- if .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.rbac.pspAnnotations }} - annotations: {{ toYaml .Values.rbac.pspAnnotations | nindent 4 }} -{{- end }} -spec: - privileged: false - allowPrivilegeEscalation: false - requiredDropCapabilities: - # Default set from Docker, without DAC_OVERRIDE or CHOWN - - FOWNER - - FSETID - - KILL - - SETGID - - SETUID - - SETPCAP - - NET_BIND_SERVICE - - NET_RAW - - SYS_CHROOT - - MKNOD - - AUDIT_WRITE - - SETFCAP - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'csi' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'RunAsAny' - fsGroup: - rule: 'RunAsAny' - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/pvc.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/pvc.yaml deleted file mode 100644 index 8a3ee1222..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/pvc.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "pvc")}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- with .Values.persistence.annotations }} - annotations: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.persistence.finalizers }} - finalizers: -{{ toYaml . | indent 4 }} - {{- end }} -spec: - accessModes: -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" .Values.persistence.accessModes }} -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" (first .Values.persistence.accessModes) }} - {{- range .Values.persistence.accessModes }} - - {{ . | quote }} - {{- end }} - resources: - requests: - storage: {{ required "Must provide size for persistent volumes used by Grafana" .Values.persistence.size | quote }} - {{- if .Values.persistence.storageClassName }} - storageClassName: {{ .Values.persistence.storageClassName }} - {{- end -}} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 6 }} - {{- end }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/role.yaml deleted file mode 100644 index 54c3fb0b2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/role.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.rbac.create (not .Values.rbac.useExistingRole) -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: Role -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -{{- if or .Values.rbac.pspEnabled (and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled (or .Values.sidecar.datasources.enabled .Values.rbac.extraRoleRules))) }} -rules: -{{- if .Values.rbac.pspEnabled }} -- apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}] -{{- end }} -{{- if and .Values.rbac.namespaced (or .Values.sidecar.dashboards.enabled .Values.sidecar.datasources.enabled) }} -- apiGroups: [""] # "" indicates the core API group - resources: ["configmaps", "secrets"] - verbs: ["get", "watch", "list"] -{{- end }} -{{- with .Values.rbac.extraRoleRules }} -{{ toYaml . | indent 0 }} -{{- end}} -{{- else }} -rules: [] -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/rolebinding.yaml deleted file mode 100644 index 34f1ad6f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/rolebinding.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: {{ template "rbac.apiVersion" . }} -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role -{{- if (not .Values.rbac.useExistingRole) }} - name: {{ template "grafana.fullname" . }} -{{- else }} - name: {{ .Values.rbac.useExistingRole }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret-env.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret-env.yaml deleted file mode 100644 index 5c09313e6..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret-env.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if .Values.envRenderSecret }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }}-env - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: -{{- range $key, $val := .Values.envRenderSecret }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end -}} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret.yaml deleted file mode 100644 index 4fdd817da..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/secret.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -type: Opaque -data: - {{- if and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD) }} - admin-user: {{ .Values.adminUser | b64enc | quote }} - {{- if .Values.adminPassword }} - admin-password: {{ .Values.adminPassword | b64enc | quote }} - {{- else }} - admin-password: {{ randAlphaNum 40 | b64enc | quote }} - {{- end }} - {{- end }} - {{- if not .Values.ldap.existingSecret }} - ldap-toml: {{ tpl .Values.ldap.config $ | b64enc | quote }} - {{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/service.yaml deleted file mode 100644 index 276456698..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/service.yaml +++ /dev/null @@ -1,50 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- if .Values.service.labels }} -{{ toYaml .Values.service.labels | indent 4 }} -{{- end }} -{{- with .Values.service.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: -{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }} - type: ClusterIP - {{- if .Values.service.clusterIP }} - clusterIP: {{ .Values.service.clusterIP }} - {{end}} -{{- else if eq .Values.service.type "LoadBalancer" }} - type: {{ .Values.service.type }} - {{- if .Values.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.service.loadBalancerIP }} - {{- end }} - {{- if .Values.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: -{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }} - {{- end -}} -{{- else }} - type: {{ .Values.service.type }} -{{- end }} -{{- if .Values.service.externalIPs }} - externalIPs: -{{ toYaml .Values.service.externalIPs | indent 4 }} -{{- end }} - ports: - - name: {{ .Values.service.portName }} - port: {{ .Values.service.port }} - protocol: TCP - targetPort: {{ .Values.service.targetPort }} -{{ if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }} - nodePort: {{.Values.service.nodePort}} -{{ end }} - {{- if .Values.extraExposePorts }} - {{- tpl (toYaml .Values.extraExposePorts) . | indent 4 }} - {{- end }} - selector: - {{- include "grafana.selectorLabels" . | nindent 4 }} - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/serviceaccount.yaml deleted file mode 100644 index 7576eeef0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/serviceaccount.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.serviceAccount.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} - name: {{ template "grafana.serviceAccountName" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/servicemonitor.yaml deleted file mode 100644 index 23288523f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/servicemonitor.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if .Values.serviceMonitor.enabled }} ---- -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "grafana.fullname" . }} - {{- if .Values.serviceMonitor.namespace }} - namespace: {{ .Values.serviceMonitor.namespace }} - {{- end }} - labels: - {{- include "grafana.labels" . | nindent 4 }} - {{- if .Values.serviceMonitor.labels }} - {{- toYaml .Values.serviceMonitor.labels | nindent 4 }} - {{- end }} -spec: - endpoints: - - interval: {{ .Values.serviceMonitor.interval }} - {{- if .Values.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: true - port: {{ .Values.service.portName }} - path: {{ .Values.serviceMonitor.path }} - scheme: {{ .Values.serviceMonitor.scheme }} - {{- if .Values.serviceMonitor.tlsConfig }} - tlsConfig: - {{- toYaml .Values.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - {{- if .Values.serviceMonitor.relabelings }} - relabelings: - {{- toYaml .Values.serviceMonitor.relabelings | nindent 4 }} - {{- end }} - jobLabel: "{{ .Release.Name }}" - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 8 }} - namespaceSelector: - matchNames: - - {{ .Release.Namespace }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/statefulset.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/statefulset.yaml deleted file mode 100644 index 55c159c9f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/statefulset.yaml +++ /dev/null @@ -1,54 +0,0 @@ -{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) (eq .Values.persistence.type "statefulset")}} -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: {{ template "grafana.fullname" . }} - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -{{- with .Values.annotations }} - annotations: -{{ toYaml . | indent 4 }} -{{- end }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - {{- include "grafana.selectorLabels" . | nindent 6 }} - serviceName: {{ template "grafana.fullname" . }}-headless - template: - metadata: - labels: - {{- include "grafana.selectorLabels" . | nindent 8 }} -{{- with .Values.podLabels }} -{{ toYaml . | indent 8 }} -{{- end }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - checksum/dashboards-json-config: {{ include (print $.Template.BasePath "/dashboards-json-configmap.yaml") . | sha256sum }} - checksum/sc-dashboard-provider-config: {{ include (print $.Template.BasePath "/configmap-dashboard-provider.yaml") . | sha256sum }} - {{- if or (and (not .Values.admin.existingSecret) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD__FILE) (not .Values.env.GF_SECURITY_ADMIN_PASSWORD)) (and .Values.ldap.enabled (not .Values.ldap.existingSecret)) }} - checksum/secret: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} -{{- end }} -{{- with .Values.podAnnotations }} -{{ toYaml . | indent 8 }} -{{- end }} - spec: - {{- include "grafana.pod" . | nindent 6 }} - volumeClaimTemplates: - - metadata: - name: storage - spec: -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" .Values.persistence.accessModes }} -{{- $_ := required "Must provide at least one access mode for persistent volumes used by Grafana" (first .Values.persistence.accessModes) }} - accessModes: {{ .Values.persistence.accessModes }} - storageClassName: {{ .Values.persistence.storageClassName }} - resources: - requests: - storage: {{ required "Must provide size for persistent volumes used by Grafana" .Values.persistence.size }} - {{- with .Values.persistence.selectorLabels }} - selector: - matchLabels: -{{ toYaml . | indent 10 }} - {{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-configmap.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-configmap.yaml deleted file mode 100644 index ff53aaf1b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-configmap.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -data: - run.sh: |- - @test "Test Health" { - url="http://{{ template "grafana.fullname" . }}/api/health" - - code=$(wget --server-response --spider --timeout 10 --tries 1 ${url} 2>&1 | awk '/^ HTTP/{print $2}') - [ "$code" == "200" ] - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-podsecuritypolicy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-podsecuritypolicy.yaml deleted file mode 100644 index 1acd65128..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-podsecuritypolicy.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -spec: - allowPrivilegeEscalation: true - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - fsGroup: - rule: RunAsAny - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - runAsUser: - rule: RunAsAny - volumes: - - configMap - - downwardAPI - - emptyDir - - projected - - csi - - secret -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-role.yaml deleted file mode 100644 index 6b10677ae..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-role.yaml +++ /dev/null @@ -1,14 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: [{{ template "grafana.fullname" . }}-test] -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-rolebinding.yaml deleted file mode 100644 index 58fa5e78b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-rolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.rbac.pspEnabled -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "grafana.fullname" . }}-test - namespace: {{ template "grafana.namespace" . }} - labels: - {{- include "grafana.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "grafana.fullname" . }}-test -subjects: -- kind: ServiceAccount - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-serviceaccount.yaml deleted file mode 100644 index 5c3350733..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test-serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ -{{- if and .Values.testFramework.enabled .Values.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - {{- include "grafana.labels" . | nindent 4 }} - name: {{ template "grafana.serviceAccountNameTest" . }} - namespace: {{ template "grafana.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test.yaml deleted file mode 100644 index cdc86e5f2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/templates/tests/test.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.testFramework.enabled }} -apiVersion: v1 -kind: Pod -metadata: - name: {{ template "grafana.fullname" . }}-test - labels: - {{- include "grafana.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": test-success - namespace: {{ template "grafana.namespace" . }} -spec: - serviceAccountName: {{ template "grafana.serviceAccountNameTest" . }} - {{- if .Values.testFramework.securityContext }} - securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }} - {{- end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - {{- with .Values.nodeSelector }} - nodeSelector: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.affinity }} - affinity: -{{ toYaml . | indent 4 }} - {{- end }} - {{- with .Values.tolerations }} - tolerations: -{{ toYaml . | indent 4 }} - {{- end }} - containers: - - name: {{ .Release.Name }}-test - image: "{{ .Values.testFramework.image}}:{{ .Values.testFramework.tag }}" - imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}" - command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"] - volumeMounts: - - mountPath: /tests - name: tests - readOnly: true - volumes: - - name: tests - configMap: - name: {{ template "grafana.fullname" . }}-test - restartPolicy: Never -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/values.yaml deleted file mode 100644 index 9491c1a1f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/grafana/values.yaml +++ /dev/null @@ -1,732 +0,0 @@ -global: - cattle: - systemDefaultRegistry: "" - -autoscaling: - enabled: false -rbac: - create: true - ## Use an existing ClusterRole/Role (depending on rbac.namespaced false/true) - # useExistingRole: name-of-some-(cluster)role - pspEnabled: true - pspAnnotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default,runtime/default' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - namespaced: false - extraRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] - extraClusterRoleRules: [] - # - apiGroups: [] - # resources: [] - # verbs: [] -serviceAccount: - create: true - name: - nameTest: -# annotations: -# eks.amazonaws.com/role-arn: arn:aws:iam::123456789000:role/iam-role-name-here - -replicas: 1 - -## See `kubectl explain poddisruptionbudget.spec` for more -## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} -# minAvailable: 1 -# maxUnavailable: 1 - -## See `kubectl explain deployment.spec.strategy` for more -## ref: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy -deploymentStrategy: - type: RollingUpdate - -readinessProbe: - httpGet: - path: /api/health - port: 3000 - -livenessProbe: - httpGet: - path: /api/health - port: 3000 - initialDelaySeconds: 60 - timeoutSeconds: 30 - failureThreshold: 10 - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: "default-scheduler" - -image: - repository: rancher/mirrored-grafana-grafana - tag: 7.4.5 - sha: "" - pullPolicy: IfNotPresent - - ## Optionally specify an array of imagePullSecrets. - ## Secrets must be manually created in the namespace. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - # pullSecrets: - # - myRegistrKeySecretName - -testFramework: - enabled: true - image: "rancher/mirrored-bats-bats" - tag: "v1.1.0" - imagePullPolicy: IfNotPresent - securityContext: - runAsNonRoot: true - runAsUser: 1000 - -securityContext: - runAsNonRoot: true - runAsUser: 472 - runAsGroup: 472 - fsGroup: 472 - -containerSecurityContext: - {} - -extraConfigmapMounts: [] - # - name: certs-configmap - # mountPath: /etc/grafana/ssl/ - # subPath: certificates.crt # (optional) - # configMap: certs-configmap - # readOnly: true - - -extraEmptyDirMounts: [] - # - name: provisioning-notifiers - # mountPath: /etc/grafana/provisioning/notifiers - - -# Apply extra labels to common labels. -extraLabels: {} - -## Assign a PriorityClassName to pods if set -# priorityClassName: - -downloadDashboardsImage: - repository: rancher/mirrored-curlimages-curl - tag: 7.73.0 - sha: "" - pullPolicy: IfNotPresent - -downloadDashboards: - env: {} - envFromSecret: "" - resources: {} - -## Pod Annotations -# podAnnotations: {} - -## Pod Labels -# podLabels: {} - -podPortName: grafana - -## Deployment annotations -# annotations: {} - -## Expose the grafana service to be accessed from outside the cluster (LoadBalancer service). -## or access it from within the cluster (ClusterIP service). Set the service type and the port to serve it. -## ref: http://kubernetes.io/docs/user-guide/services/ -## -service: - type: ClusterIP - port: 80 - targetPort: 3000 - # targetPort: 4181 To be used with a proxy extraContainer - annotations: {} - labels: {} - portName: service - -serviceMonitor: - ## If true, a ServiceMonitor CRD is created for a prometheus operator - ## https://github.com/coreos/prometheus-operator - ## - enabled: false - path: /metrics - # namespace: monitoring (defaults to use the namespace this chart is deployed to) - labels: {} - interval: 1m - scheme: http - tlsConfig: {} - scrapeTimeout: 30s - relabelings: [] - -extraExposePorts: [] - # - name: keycloak - # port: 8080 - # targetPort: 8080 - # type: ClusterIP - -# overrides pod.spec.hostAliases in the grafana deployment's pods -hostAliases: [] - # - ip: "1.2.3.4" - # hostnames: - # - "my.host.com" - -ingress: - enabled: false - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - # Values can be templated - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - labels: {} - path: / - - # pathType is only for k8s > 1.19 - pathType: Prefix - - hosts: - - chart-example.local - ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services. - extraPaths: [] - # - path: /* - # backend: - # serviceName: ssl-redirect - # servicePort: use-annotation - ## Or for k8s > 1.19 - # - path: /* - # pathType: Prefix - # backend: - # service: - # name: ssl-redirect - # port: - # name: service - - - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - -resources: {} -# limits: -# cpu: 100m -# memory: 128Mi -# requests: -# cpu: 100m -# memory: 128Mi - -## Node labels for pod assignment -## ref: https://kubernetes.io/docs/user-guide/node-selection/ -# -nodeSelector: {} - -## Tolerations for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -## -tolerations: [] - -## Affinity for pod assignment -## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -## -affinity: {} - -extraInitContainers: [] - -## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod -extraContainers: | -# - name: proxy -# image: quay.io/gambol99/keycloak-proxy:latest -# args: -# - -provider=github -# - -client-id= -# - -client-secret= -# - -github-org= -# - -email-domain=* -# - -cookie-secret= -# - -http-address=http://0.0.0.0:4181 -# - -upstream-url=http://127.0.0.1:3000 -# ports: -# - name: proxy-web -# containerPort: 4181 - -## Volumes that can be used in init containers that will not be mounted to deployment pods -extraContainerVolumes: [] -# - name: volume-from-secret -# secret: -# secretName: secret-to-mount -# - name: empty-dir-volume -# emptyDir: {} - -## Enable persistence using Persistent Volume Claims -## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/ -## -persistence: - type: pvc - enabled: false - # storageClassName: default - accessModes: - - ReadWriteOnce - size: 10Gi - # annotations: {} - finalizers: - - kubernetes.io/pvc-protection - # selectorLabels: {} - # subPath: "" - # existingClaim: - - ## If persistence is not enabled, this allows to mount the - ## local storage in-memory to improve performance - ## - inMemory: - enabled: false - ## The maximum usage on memory medium EmptyDir would be - ## the minimum value between the SizeLimit specified - ## here and the sum of memory limits of all containers in a pod - ## - # sizeLimit: 300Mi - -initChownData: - ## If false, data ownership will not be reset at startup - ## This allows the prometheus-server to be run with an arbitrary user - ## - enabled: true - - ## initChownData container image - ## - image: - repository: rancher/mirrored-library-busybox - tag: "1.31.1" - sha: "" - pullPolicy: IfNotPresent - - ## initChownData resource requests and limits - ## Ref: http://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: {} - # limits: - # cpu: 100m - # memory: 128Mi - # requests: - # cpu: 100m - # memory: 128Mi - - -# Administrator credentials when not using an existing secret (see below) -adminUser: admin -# adminPassword: strongpassword - -# Use an existing secret for the admin user. -admin: - existingSecret: "" - userKey: admin-user - passwordKey: admin-password - -## Define command to be executed at startup by grafana container -## Needed if using `vault-env` to manage secrets (ref: https://banzaicloud.com/blog/inject-secrets-into-pods-vault/) -## Default is "run.sh" as defined in grafana's Dockerfile -# command: -# - "sh" -# - "/run.sh" - -## Use an alternate scheduler, e.g. "stork". -## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ -## -# schedulerName: - -## Extra environment variables that will be pass onto deployment pods -## -## to provide grafana with access to CloudWatch on AWS EKS: -## 1. create an iam role of type "Web identity" with provider oidc.eks.* (note the provider for later) -## 2. edit the "Trust relationships" of the role, add a line inside the StringEquals clause using the -## same oidc eks provider as noted before (same as the existing line) -## also, replace NAMESPACE and prometheus-operator-grafana with the service account namespace and name -## -## "oidc.eks.us-east-1.amazonaws.com/id/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:sub": "system:serviceaccount:NAMESPACE:prometheus-operator-grafana", -## -## 3. attach a policy to the role, you can use a built in policy called CloudWatchReadOnlyAccess -## 4. use the following env: (replace 123456789000 and iam-role-name-here with your aws account number and role name) -## -## env: -## AWS_ROLE_ARN: arn:aws:iam::123456789000:role/iam-role-name-here -## AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token -## AWS_REGION: us-east-1 -## -## 5. uncomment the EKS section in extraSecretMounts: below -## 6. uncomment the annotation section in the serviceAccount: above -## make sure to replace arn:aws:iam::123456789000:role/iam-role-name-here with your role arn - -env: {} - -## "valueFrom" environment variable references that will be added to deployment pods -## ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#envvarsource-v1-core -## Renders in container spec as: -## env: -## ... -## - name: -## valueFrom: -## -envValueFrom: {} - -## The name of a secret in the same kubernetes namespace which contain values to be added to the environment -## This can be useful for auth tokens, etc. Value is templated. -envFromSecret: "" - -## Sensible environment variables that will be rendered as new secret object -## This can be useful for auth tokens, etc -envRenderSecret: {} - -## Additional grafana server secret mounts -# Defines additional mounts with secrets. Secrets must be manually created in the namespace. -extraSecretMounts: [] - # - name: secret-files - # mountPath: /etc/secrets - # secretName: grafana-secret-files - # readOnly: true - # subPath: "" - # - # for AWS EKS (cloudwatch) use the following (see also instruction in env: above) - # - name: aws-iam-token - # mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount - # readOnly: true - # projected: - # defaultMode: 420 - # sources: - # - serviceAccountToken: - # audience: sts.amazonaws.com - # expirationSeconds: 86400 - # path: token - # - # for CSI e.g. Azure Key Vault use the following - # - name: secrets-store-inline - # mountPath: /run/secrets - # readOnly: true - # csi: - # driver: secrets-store.csi.k8s.io - # readOnly: true - # volumeAttributes: - # secretProviderClass: "akv-grafana-spc" - # nodePublishSecretRef: # Only required when using service principal mode - # name: grafana-akv-creds # Only required when using service principal mode - -## Additional grafana server volume mounts -# Defines additional volume mounts. -extraVolumeMounts: [] - # - name: extra-volume - # mountPath: /mnt/volume - # readOnly: true - # existingClaim: volume-claim - -## Pass the plugins you want installed as a list. -## -plugins: [] - # - digrich-bubblechart-panel - # - grafana-clock-panel - -## Configure grafana datasources -## ref: http://docs.grafana.org/administration/provisioning/#datasources -## -datasources: {} -# datasources.yaml: -# apiVersion: 1 -# datasources: -# - name: Prometheus -# type: prometheus -# url: http://prometheus-prometheus-server -# access: proxy -# isDefault: true -# - name: CloudWatch -# type: cloudwatch -# access: proxy -# uid: cloudwatch -# editable: false -# jsonData: -# authType: credentials -# defaultRegion: us-east-1 - -## Configure notifiers -## ref: http://docs.grafana.org/administration/provisioning/#alert-notification-channels -## -notifiers: {} -# notifiers.yaml: -# notifiers: -# - name: email-notifier -# type: email -# uid: email1 -# # either: -# org_id: 1 -# # or -# org_name: Main Org. -# is_default: true -# settings: -# addresses: an_email_address@example.com -# delete_notifiers: - -## Configure grafana dashboard providers -## ref: http://docs.grafana.org/administration/provisioning/#dashboards -## -## `path` must be /var/lib/grafana/dashboards/ -## -dashboardProviders: {} -# dashboardproviders.yaml: -# apiVersion: 1 -# providers: -# - name: 'default' -# orgId: 1 -# folder: '' -# type: file -# disableDeletion: false -# editable: true -# options: -# path: /var/lib/grafana/dashboards/default - -## Configure grafana dashboard to import -## NOTE: To use dashboards you must also enable/configure dashboardProviders -## ref: https://grafana.com/dashboards -## -## dashboards per provider, use provider name as key. -## -dashboards: {} - # default: - # some-dashboard: - # json: | - # $RAW_JSON - # custom-dashboard: - # file: dashboards/custom-dashboard.json - # prometheus-stats: - # gnetId: 2 - # revision: 2 - # datasource: Prometheus - # local-dashboard: - # url: https://example.com/repository/test.json - # token: '' - # local-dashboard-base64: - # url: https://example.com/repository/test-b64.json - # token: '' - # b64content: true - -## Reference to external ConfigMap per provider. Use provider name as key and ConfigMap name as value. -## A provider dashboards must be defined either by external ConfigMaps or in values.yaml, not in both. -## ConfigMap data example: -## -## data: -## example-dashboard.json: | -## RAW_JSON -## -dashboardsConfigMaps: {} -# default: "" - -## Grafana's primary configuration -## NOTE: values in map will be converted to ini format -## ref: http://docs.grafana.org/installation/configuration/ -## -grafana.ini: - paths: - data: /var/lib/grafana/data - logs: /var/log/grafana - plugins: /var/lib/grafana/plugins - provisioning: /etc/grafana/provisioning - analytics: - check_for_updates: true - log: - mode: console - grafana_net: - url: https://grafana.net -## grafana Authentication can be enabled with the following values on grafana.ini - # server: - # The full public facing url you use in browser, used for redirects and emails - # root_url: - # https://grafana.com/docs/grafana/latest/auth/github/#enable-github-in-grafana - # auth.github: - # enabled: false - # allow_sign_up: false - # scopes: user:email,read:org - # auth_url: https://github.com/login/oauth/authorize - # token_url: https://github.com/login/oauth/access_token - # api_url: https://api.github.com/user - # team_ids: - # allowed_organizations: - # client_id: - # client_secret: -## LDAP Authentication can be enabled with the following values on grafana.ini -## NOTE: Grafana will fail to start if the value for ldap.toml is invalid - # auth.ldap: - # enabled: true - # allow_sign_up: true - # config_file: /etc/grafana/ldap.toml - -## Grafana's LDAP configuration -## Templated by the template in _helpers.tpl -## NOTE: To enable the grafana.ini must be configured with auth.ldap.enabled -## ref: http://docs.grafana.org/installation/configuration/#auth-ldap -## ref: http://docs.grafana.org/installation/ldap/#configuration -ldap: - enabled: false - # `existingSecret` is a reference to an existing secret containing the ldap configuration - # for Grafana in a key `ldap-toml`. - existingSecret: "" - # `config` is the content of `ldap.toml` that will be stored in the created secret - config: "" - # config: |- - # verbose_logging = true - - # [[servers]] - # host = "my-ldap-server" - # port = 636 - # use_ssl = true - # start_tls = false - # ssl_skip_verify = false - # bind_dn = "uid=%s,ou=users,dc=myorg,dc=com" - -## Grafana's SMTP configuration -## NOTE: To enable, grafana.ini must be configured with smtp.enabled -## ref: http://docs.grafana.org/installation/configuration/#smtp -smtp: - # `existingSecret` is a reference to an existing secret containing the smtp configuration - # for Grafana. - existingSecret: "" - userKey: "user" - passwordKey: "password" - -## Sidecars that collect the configmaps with specified label and stores the included files them into the respective folders -## Requires at least Grafana 5 to work and can't be used together with parameters dashboardProviders, datasources and dashboards -sidecar: - image: - repository: rancher/mirrored-kiwigrid-k8s-sidecar - tag: 1.10.7 - sha: "" - imagePullPolicy: IfNotPresent - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi - # skipTlsVerify Set to true to skip tls verification for kube api calls - # skipTlsVerify: true - enableUniqueFilenames: false - dashboards: - enabled: false - SCProvider: true - # label that the configmaps with dashboards are marked with - label: grafana_dashboard - # value of label that the configmaps with dashboards are set to - labelValue: null - # folder in the pod that should hold the collected dashboards (unless `defaultFolderName` is set) - folder: /tmp/dashboards - # The default folder name, it will create a subfolder under the `folder` and put dashboards in there instead - defaultFolderName: null - # If specified, the sidecar will search for dashboard config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - # If specified, the sidecar will look for annotation with this name to create folder and put graph here. - # You can use this parameter together with `provider.foldersFromFilesStructure`to annotate configmaps and create folder structure. - folderAnnotation: null - # provider configuration that lets grafana manage the dashboards - provider: - # name of the provider, should be unique - name: sidecarProvider - # orgid as configured in grafana - orgid: 1 - # folder in which the dashboards should be imported in grafana - folder: '' - # type of the provider - type: file - # disableDelete to activate a import-only behaviour - disableDelete: false - # allow updating provisioned dashboards from the UI - allowUiUpdates: false - # allow Grafana to replicate dashboard structure from filesystem - foldersFromFilesStructure: false - datasources: - enabled: false - # label that the configmaps with datasources are marked with - label: grafana_datasource - # value of label that the configmaps with datasources are set to - labelValue: null - # If specified, the sidecar will search for datasource config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - - ## The name of a secret in the same kubernetes namespace which contain values to be added to the environment - ## This can be useful for database passwords, etc. Value is templated. - envFromSecret: "" - notifiers: - enabled: false - # label that the configmaps with notifiers are marked with - label: grafana_notifier - # If specified, the sidecar will search for notifier config-maps inside this namespace. - # Otherwise the namespace in which the sidecar is running will be used. - # It's also possible to specify ALL to search in all namespaces - searchNamespace: null - -## Override the deployment namespace -## -namespaceOverride: "" - -## Number of old ReplicaSets to retain -## -revisionHistoryLimit: 10 - -## Add a seperate remote image renderer deployment/service -imageRenderer: - # Enable the image-renderer deployment & service - enabled: false - replicas: 1 - image: - # image-renderer Image repository - repository: rancher/mirrored-grafana-grafana-image-renderer - # image-renderer Image tag - tag: 2.0.1 - # image-renderer Image sha (optional) - sha: "" - # image-renderer ImagePullPolicy - pullPolicy: Always - # extra environment variables - env: - HTTP_HOST: "0.0.0.0" - # RENDERING_ARGS: --disable-gpu,--window-size=1280x758 - # RENDERING_MODE: clustered - # image-renderer deployment serviceAccount - serviceAccountName: "" - # image-renderer deployment securityContext - securityContext: {} - # image-renderer deployment Host Aliases - hostAliases: [] - # image-renderer deployment priority class - priorityClassName: '' - service: - # image-renderer service port name - portName: 'http' - # image-renderer service port used by both service and deployment - port: 8081 - targetPort: 8081 - # In case a sub_path is used this needs to be added to the image renderer callback - grafanaSubPath: "" - # name of the image-renderer port on the pod - podPortName: http - # number of image-renderer replica sets to keep - revisionHistoryLimit: 10 - networkPolicy: - # Enable a NetworkPolicy to limit inbound traffic to only the created grafana pods - limitIngress: true - # Enable a NetworkPolicy to limit outbound traffic to only the created grafana pods - limitEgress: false - resources: {} -# limits: -# cpu: 100m -# memory: 100Mi -# requests: -# cpu: 50m -# memory: 50Mi diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/Chart.yaml deleted file mode 100644 index 5d1f3a478..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: hardenedKubelet -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedKubelet/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/Chart.yaml deleted file mode 100644 index 4d6899cff..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: hardenedNodeExporter -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/hardenedNodeExporter/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/Chart.yaml deleted file mode 100644 index 9cff4227c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: k3sServer -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/k3sServer/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/Chart.yaml deleted file mode 100644 index 1e90053e9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/Chart.yaml +++ /dev/null @@ -1,24 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-kube-state-metrics -apiVersion: v1 -appVersion: 1.9.8 -description: Install kube-state-metrics to generate and expose cluster-level metrics -home: https://github.com/kubernetes/kube-state-metrics/ -keywords: -- metric -- monitoring -- prometheus -- kubernetes -maintainers: -- email: tariq.ibrahim@mulesoft.com - name: tariq1890 -- email: manuel@rueg.eu - name: mrueg -name: kube-state-metrics -sources: -- https://github.com/kubernetes/kube-state-metrics/ -version: 2.13.1 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/LICENSE b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/LICENSE deleted file mode 100644 index 393b7a33b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright The Helm Authors. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/README.md deleted file mode 100644 index e93a3d252..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/README.md +++ /dev/null @@ -1,66 +0,0 @@ -# kube-state-metrics Helm Chart - -Installs the [kube-state-metrics agent](https://github.com/kubernetes/kube-state-metrics). - -## Get Repo Info - -```console -helm repo add kube-state-metrics https://kubernetes.github.io/kube-state-metrics -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Install Chart - -```console -# Helm 3 -$ helm install [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] - -# Helm 2 -$ helm install --name [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -# Helm 3 -$ helm uninstall [RELEASE_NAME] - -# Helm 2 -# helm delete --purge [RELEASE_NAME] -``` - -This removes all the Kubernetes components associated with the chart and deletes the release. - -_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ - -## Upgrading Chart - -```console -# Helm 3 or 2 -$ helm upgrade [RELEASE_NAME] kube-state-metrics/kube-state-metrics [flags] -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -### From stable/kube-state-metrics - -You can upgrade in-place: - -1. [get repo info](#get-repo-info) -1. [upgrade](#upgrading-chart) your existing release name using the new chart repo - -## Configuration - -See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments: - -```console -helm show values kube-state-metrics/kube-state-metrics -``` - -You may also `helm show values` on this chart's [dependencies](#dependencies) for additional options. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/NOTES.txt b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/NOTES.txt deleted file mode 100644 index 5a646e0cc..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/NOTES.txt +++ /dev/null @@ -1,10 +0,0 @@ -kube-state-metrics is a simple service that listens to the Kubernetes API server and generates metrics about the state of the objects. -The exposed metrics can be found here: -https://github.com/kubernetes/kube-state-metrics/blob/master/docs/README.md#exposed-metrics - -The metrics are exported on the HTTP endpoint /metrics on the listening port. -In your case, {{ template "kube-state-metrics.fullname" . }}.{{ template "kube-state-metrics.namespace" . }}.svc.cluster.local:{{ .Values.service.port }}/metrics - -They are served either as plaintext or protobuf depending on the Accept header. -They are designed to be consumed either by Prometheus itself or by a scraper that is compatible with scraping a Prometheus client endpoint. - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/_helpers.tpl deleted file mode 100644 index 4f76b188b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/_helpers.tpl +++ /dev/null @@ -1,76 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "kube-state-metrics.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "kube-state-metrics.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "kube-state-metrics.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "kube-state-metrics.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "kube-state-metrics.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/clusterrolebinding.yaml deleted file mode 100644 index af158c512..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/clusterrolebinding.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if and .Values.rbac.create .Values.rbac.useClusterRole -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: {{ template "kube-state-metrics.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole -{{- if .Values.rbac.useExistingRole }} - name: {{ .Values.rbac.useExistingRole }} -{{- else }} - name: {{ template "kube-state-metrics.fullname" . }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/deployment.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/deployment.yaml deleted file mode 100644 index 4ab55291b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/deployment.yaml +++ /dev/null @@ -1,217 +0,0 @@ -apiVersion: apps/v1 -{{- if .Values.autosharding.enabled }} -kind: StatefulSet -{{- else }} -kind: Deployment -{{- end }} -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" - app.kubernetes.io/version: "{{ .Chart.AppVersion }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - replicas: {{ .Values.replicas }} -{{- if .Values.autosharding.enabled }} - serviceName: {{ template "kube-state-metrics.fullname" . }} - volumeClaimTemplates: [] -{{- end }} - template: - metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: "{{ .Release.Name }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 8 }} -{{- end }} -{{- if .Values.podAnnotations }} - annotations: -{{ toYaml .Values.podAnnotations | indent 8 }} -{{- end }} - spec: - hostNetwork: {{ .Values.hostNetwork }} - serviceAccountName: {{ template "kube-state-metrics.serviceAccountName" . }} - {{- if .Values.securityContext.enabled }} - securityContext: - fsGroup: {{ .Values.securityContext.fsGroup }} - runAsGroup: {{ .Values.securityContext.runAsGroup }} - runAsUser: {{ .Values.securityContext.runAsUser }} - runAsNonRoot: {{ .Values.securityContext.runAsNonRoot }} - {{- end }} - {{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} - {{- end }} - containers: - - name: {{ .Chart.Name }} -{{- if .Values.autosharding.enabled }} - env: - - name: POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: POD_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace -{{- end }} - args: -{{ if .Values.extraArgs }} - {{- range .Values.extraArgs }} - - {{ . }} - {{- end }} -{{ end }} -{{ if .Values.collectors.certificatesigningrequests }} - - --collectors=certificatesigningrequests -{{ end }} -{{ if .Values.collectors.configmaps }} - - --collectors=configmaps -{{ end }} -{{ if .Values.collectors.cronjobs }} - - --collectors=cronjobs -{{ end }} -{{ if .Values.collectors.daemonsets }} - - --collectors=daemonsets -{{ end }} -{{ if .Values.collectors.deployments }} - - --collectors=deployments -{{ end }} -{{ if .Values.collectors.endpoints }} - - --collectors=endpoints -{{ end }} -{{ if .Values.collectors.horizontalpodautoscalers }} - - --collectors=horizontalpodautoscalers -{{ end }} -{{ if .Values.collectors.ingresses }} - - --collectors=ingresses -{{ end }} -{{ if .Values.collectors.jobs }} - - --collectors=jobs -{{ end }} -{{ if .Values.collectors.limitranges }} - - --collectors=limitranges -{{ end }} -{{ if .Values.collectors.mutatingwebhookconfigurations }} - - --collectors=mutatingwebhookconfigurations -{{ end }} -{{ if .Values.collectors.namespaces }} - - --collectors=namespaces -{{ end }} -{{ if .Values.collectors.networkpolicies }} - - --collectors=networkpolicies -{{ end }} -{{ if .Values.collectors.nodes }} - - --collectors=nodes -{{ end }} -{{ if .Values.collectors.persistentvolumeclaims }} - - --collectors=persistentvolumeclaims -{{ end }} -{{ if .Values.collectors.persistentvolumes }} - - --collectors=persistentvolumes -{{ end }} -{{ if .Values.collectors.poddisruptionbudgets }} - - --collectors=poddisruptionbudgets -{{ end }} -{{ if .Values.collectors.pods }} - - --collectors=pods -{{ end }} -{{ if .Values.collectors.replicasets }} - - --collectors=replicasets -{{ end }} -{{ if .Values.collectors.replicationcontrollers }} - - --collectors=replicationcontrollers -{{ end }} -{{ if .Values.collectors.resourcequotas }} - - --collectors=resourcequotas -{{ end }} -{{ if .Values.collectors.secrets }} - - --collectors=secrets -{{ end }} -{{ if .Values.collectors.services }} - - --collectors=services -{{ end }} -{{ if .Values.collectors.statefulsets }} - - --collectors=statefulsets -{{ end }} -{{ if .Values.collectors.storageclasses }} - - --collectors=storageclasses -{{ end }} -{{ if .Values.collectors.validatingwebhookconfigurations }} - - --collectors=validatingwebhookconfigurations -{{ end }} -{{ if .Values.collectors.verticalpodautoscalers }} - - --collectors=verticalpodautoscalers -{{ end }} -{{ if .Values.collectors.volumeattachments }} - - --collectors=volumeattachments -{{ end }} -{{ if .Values.namespace }} - - --namespace={{ .Values.namespace | join "," }} -{{ end }} -{{ if .Values.autosharding.enabled }} - - --pod=$(POD_NAME) - - --pod-namespace=$(POD_NAMESPACE) -{{ end }} -{{ if .Values.kubeconfig.enabled }} - - --kubeconfig=/opt/k8s/.kube/config -{{ end }} -{{ if .Values.selfMonitor.telemetryHost }} - - --telemetry-host={{ .Values.selfMonitor.telemetryHost }} -{{ end }} - - --telemetry-port=8081 -{{- if .Values.kubeconfig.enabled }} - volumeMounts: - - name: kubeconfig - mountPath: /opt/k8s/.kube/ - readOnly: true -{{- end }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - ports: - - containerPort: 8080 - livenessProbe: - httpGet: - path: /healthz - port: 8080 - initialDelaySeconds: 5 - timeoutSeconds: 5 - readinessProbe: - httpGet: - path: / - port: 8080 - initialDelaySeconds: 5 - timeoutSeconds: 5 -{{- if .Values.resources }} - resources: -{{ toYaml .Values.resources | indent 10 }} -{{- end }} -{{- if .Values.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.imagePullSecrets | indent 8 }} -{{- end }} -{{- if .Values.affinity }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.nodeSelector }} -{{ toYaml .Values.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.tolerations }} -{{ toYaml .Values.tolerations | indent 8 }} -{{- end }} -{{- if .Values.kubeconfig.enabled}} - volumes: - - name: kubeconfig - secret: - secretName: {{ template "kube-state-metrics.fullname" . }}-kubeconfig -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/kubeconfig-secret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/kubeconfig-secret.yaml deleted file mode 100644 index a7800d7ad..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/kubeconfig-secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.kubeconfig.enabled -}} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-state-metrics.fullname" . }}-kubeconfig - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -type: Opaque -data: - config: '{{ .Values.kubeconfig.secret }}' -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/pdb.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/pdb.yaml deleted file mode 100644 index d3ef8104e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/pdb.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.podDisruptionBudget -}} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} -{{ toYaml .Values.podDisruptionBudget | indent 2 }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/podsecuritypolicy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/podsecuritypolicy.yaml deleted file mode 100644 index e822ba0e7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/podsecuritypolicy.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if .Values.podSecurityPolicy.enabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -{{- if .Values.podSecurityPolicy.annotations }} - annotations: -{{ toYaml .Values.podSecurityPolicy.annotations | indent 4 }} -{{- end }} -spec: - privileged: false - volumes: - - 'secret' -{{- if .Values.podSecurityPolicy.additionalVolumes }} -{{ toYaml .Values.podSecurityPolicy.additionalVolumes | indent 4 }} -{{- end }} - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 1 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrole.yaml deleted file mode 100644 index 217abc950..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrole.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.podSecurityPolicy.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: psp-{{ template "kube-state-metrics.fullname" . }} -rules: -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} -- apiGroups: ['policy'] -{{- else }} -- apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-state-metrics.fullname" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml deleted file mode 100644 index feb97f228..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.podSecurityPolicy.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: psp-{{ template "kube-state-metrics.fullname" . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: psp-{{ template "kube-state-metrics.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/role.yaml deleted file mode 100644 index 6259d2f61..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/role.yaml +++ /dev/null @@ -1,192 +0,0 @@ -{{- if and (eq $.Values.rbac.create true) (not .Values.rbac.useExistingRole) -}} -{{- if eq .Values.rbac.useClusterRole false }} -{{- range (split "," $.Values.namespace) }} -{{- end }} -{{- end -}} ---- -apiVersion: rbac.authorization.k8s.io/v1 -{{- if eq .Values.rbac.useClusterRole false }} -kind: Role -{{- else }} -kind: ClusterRole -{{- end }} -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" $ }} - helm.sh/chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - app.kubernetes.io/managed-by: {{ $.Release.Service }} - app.kubernetes.io/instance: {{ $.Release.Name }} - name: {{ template "kube-state-metrics.fullname" $ }} -{{- if eq .Values.rbac.useClusterRole false }} - namespace: {{ . }} -{{- end }} -rules: -{{ if $.Values.collectors.certificatesigningrequests }} -- apiGroups: ["certificates.k8s.io"] - resources: - - certificatesigningrequests - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.configmaps }} -- apiGroups: [""] - resources: - - configmaps - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.cronjobs }} -- apiGroups: ["batch"] - resources: - - cronjobs - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.daemonsets }} -- apiGroups: ["extensions", "apps"] - resources: - - daemonsets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.deployments }} -- apiGroups: ["extensions", "apps"] - resources: - - deployments - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.endpoints }} -- apiGroups: [""] - resources: - - endpoints - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.horizontalpodautoscalers }} -- apiGroups: ["autoscaling"] - resources: - - horizontalpodautoscalers - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.ingresses }} -- apiGroups: ["extensions", "networking.k8s.io"] - resources: - - ingresses - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.jobs }} -- apiGroups: ["batch"] - resources: - - jobs - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.limitranges }} -- apiGroups: [""] - resources: - - limitranges - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.mutatingwebhookconfigurations }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - mutatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.namespaces }} -- apiGroups: [""] - resources: - - namespaces - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.networkpolicies }} -- apiGroups: ["networking.k8s.io"] - resources: - - networkpolicies - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.nodes }} -- apiGroups: [""] - resources: - - nodes - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.persistentvolumeclaims }} -- apiGroups: [""] - resources: - - persistentvolumeclaims - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.persistentvolumes }} -- apiGroups: [""] - resources: - - persistentvolumes - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.poddisruptionbudgets }} -- apiGroups: ["policy"] - resources: - - poddisruptionbudgets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.pods }} -- apiGroups: [""] - resources: - - pods - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.replicasets }} -- apiGroups: ["extensions", "apps"] - resources: - - replicasets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.replicationcontrollers }} -- apiGroups: [""] - resources: - - replicationcontrollers - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.resourcequotas }} -- apiGroups: [""] - resources: - - resourcequotas - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.secrets }} -- apiGroups: [""] - resources: - - secrets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.services }} -- apiGroups: [""] - resources: - - services - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.statefulsets }} -- apiGroups: ["apps"] - resources: - - statefulsets - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.storageclasses }} -- apiGroups: ["storage.k8s.io"] - resources: - - storageclasses - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.validatingwebhookconfigurations }} -- apiGroups: ["admissionregistration.k8s.io"] - resources: - - validatingwebhookconfigurations - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.volumeattachments }} -- apiGroups: ["storage.k8s.io"] - resources: - - volumeattachments - verbs: ["list", "watch"] -{{ end -}} -{{ if $.Values.collectors.verticalpodautoscalers }} -- apiGroups: ["autoscaling.k8s.io"] - resources: - - verticalpodautoscalers - verbs: ["list", "watch"] -{{ end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/rolebinding.yaml deleted file mode 100644 index 732174a33..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/rolebinding.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and (eq .Values.rbac.create true) (eq .Values.rbac.useClusterRole false) -}} -{{- range (split "," $.Values.namespace) }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" $ }} - helm.sh/chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - app.kubernetes.io/managed-by: {{ $.Release.Service }} - app.kubernetes.io/instance: {{ $.Release.Name }} - name: {{ template "kube-state-metrics.fullname" $ }} - namespace: {{ . }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role -{{- if (not $.Values.rbac.useExistingRole) }} - name: {{ template "kube-state-metrics.fullname" $ }} -{{- else }} - name: {{ $.Values.rbac.useExistingRole }} -{{- end }} -subjects: -- kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" $ }} - namespace: {{ template "kube-state-metrics.namespace" $ }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/service.yaml deleted file mode 100644 index 4f8e4a497..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/service.yaml +++ /dev/null @@ -1,42 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} - annotations: - {{- if .Values.prometheusScrape }} - prometheus.io/scrape: '{{ .Values.prometheusScrape }}' - {{- end }} - {{- if .Values.service.annotations }} - {{- toYaml .Values.service.annotations | nindent 4 }} - {{- end }} -spec: - type: "{{ .Values.service.type }}" - ports: - - name: "http" - protocol: TCP - port: {{ .Values.service.port }} - {{- if .Values.service.nodePort }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - targetPort: 8080 - {{ if .Values.selfMonitor.enabled }} - - name: "metrics" - protocol: TCP - port: {{ .Values.selfMonitor.telemetryPort | default 8081 }} - targetPort: 8081 - {{ end }} -{{- if .Values.service.loadBalancerIP }} - loadBalancerIP: "{{ .Values.service.loadBalancerIP }}" -{{- end }} - selector: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/serviceaccount.yaml deleted file mode 100644 index 2e8a1ee38..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/serviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- if .Values.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.serviceAccount.annotations | indent 4 }} -{{- end }} -imagePullSecrets: -{{ toYaml .Values.serviceAccount.imagePullSecrets | indent 2 }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/servicemonitor.yaml deleted file mode 100644 index 7d1cd7aa1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/servicemonitor.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if .Values.prometheus.monitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app.kubernetes.io/instance: "{{ .Release.Name }}" - app.kubernetes.io/managed-by: "{{ .Release.Service }}" - {{- if .Values.prometheus.monitor.additionalLabels }} -{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }} - {{- end }} -{{- if .Values.customLabels }} -{{ toYaml .Values.customLabels | indent 4 }} -{{- end }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - endpoints: - - port: http - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - {{ if .Values.selfMonitor.enabled }} - - port: metrics - {{- if .Values.prometheus.monitor.honorLabels }} - honorLabels: true - {{- end }} - {{ end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-role.yaml deleted file mode 100644 index 9770b0498..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-role.yaml +++ /dev/null @@ -1,29 +0,0 @@ -{{- if and .Values.autosharding.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -rules: -- apiGroups: - - "" - resources: - - pods - verbs: - - get -- apiGroups: - - apps - resourceNames: - - {{ template "kube-state-metrics.fullname" . }} - resources: - - statefulsets - verbs: - - get - - list - - watch -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml deleted file mode 100644 index 6a2e5bfe7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/templates/stsdiscovery-rolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.autosharding.enabled .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} - labels: - app.kubernetes.io/name: {{ template "kube-state-metrics.name" . }} - helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/instance: {{ .Release.Name }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: stsdiscovery-{{ template "kube-state-metrics.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "kube-state-metrics.fullname" . }} - namespace: {{ template "kube-state-metrics.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/values.yaml deleted file mode 100644 index f64645690..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kube-state-metrics/values.yaml +++ /dev/null @@ -1,184 +0,0 @@ -global: - cattle: - systemDefaultRegistry: "" - -# Default values for kube-state-metrics. -prometheusScrape: true -image: - repository: rancher/mirrored-kube-state-metrics-kube-state-metrics - tag: v1.9.8 - pullPolicy: IfNotPresent - -imagePullSecrets: [] -# - name: "image-pull-secret" - -# If set to true, this will deploy kube-state-metrics as a StatefulSet and the data -# will be automatically sharded across <.Values.replicas> pods using the built-in -# autodiscovery feature: https://github.com/kubernetes/kube-state-metrics#automated-sharding -# This is an experimental feature and there are no stability guarantees. -autosharding: - enabled: false - -replicas: 1 - -# List of additional cli arguments to configure kube-state-metrics -# for example: --enable-gzip-encoding, --log-file, etc. -# all the possible args can be found here: https://github.com/kubernetes/kube-state-metrics/blob/master/docs/cli-arguments.md -extraArgs: [] - -service: - port: 8080 - # Default to clusterIP for backward compatibility - type: ClusterIP - nodePort: 0 - loadBalancerIP: "" - annotations: {} - -customLabels: {} - -hostNetwork: false - -rbac: - # If true, create & use RBAC resources - create: true - - # Set to a rolename to use existing role - skipping role creating - but still doing serviceaccount and rolebinding to it, rolename set here. - # useExistingRole: your-existing-role - - # If set to false - Run without Cluteradmin privs needed - ONLY works if namespace is also set (if useExistingRole is set this name is used as ClusterRole or Role to bind to) - useClusterRole: true - -serviceAccount: - # Specifies whether a ServiceAccount should be created, require rbac true - create: true - # The name of the ServiceAccount to use. - # If not set and create is true, a name is generated using the fullname template - name: - # Reference to one or more secrets to be used when pulling images - # ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - imagePullSecrets: [] - # ServiceAccount annotations. - # Use case: AWS EKS IAM roles for service accounts - # ref: https://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html - annotations: {} - -prometheus: - monitor: - enabled: false - additionalLabels: {} - namespace: "" - honorLabels: false - -## Specify if a Pod Security Policy for kube-state-metrics must be created -## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ -## -podSecurityPolicy: - enabled: false - annotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - additionalVolumes: [] - -securityContext: - enabled: true - runAsNonRoot: true - runAsGroup: 65534 - runAsUser: 65534 - fsGroup: 65534 - -## Node labels for pod assignment -## Ref: https://kubernetes.io/docs/user-guide/node-selection/ -nodeSelector: {} - -## Affinity settings for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ -affinity: {} - -## Tolerations for pod assignment -## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ -tolerations: [] - -# Annotations to be added to the pod -podAnnotations: {} - -## Assign a PriorityClassName to pods if set -# priorityClassName: "" - -# Ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/ -podDisruptionBudget: {} - -# Available collectors for kube-state-metrics. By default all available -# collectors are enabled. -collectors: - certificatesigningrequests: true - configmaps: true - cronjobs: true - daemonsets: true - deployments: true - endpoints: true - horizontalpodautoscalers: true - ingresses: true - jobs: true - limitranges: true - mutatingwebhookconfigurations: true - namespaces: true - networkpolicies: true - nodes: true - persistentvolumeclaims: true - persistentvolumes: true - poddisruptionbudgets: true - pods: true - replicasets: true - replicationcontrollers: true - resourcequotas: true - secrets: true - services: true - statefulsets: true - storageclasses: true - validatingwebhookconfigurations: true - verticalpodautoscalers: false - volumeattachments: true - -# Enabling kubeconfig will pass the --kubeconfig argument to the container -kubeconfig: - enabled: false - # base64 encoded kube-config file - secret: - -# Namespace to be enabled for collecting resources. By default all namespaces are collected. -# namespace: "" - -## Override the deployment namespace -## -namespaceOverride: "" - -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:'. - # limits: - # cpu: 100m - # memory: 64Mi - # requests: - # cpu: 10m - # memory: 32Mi - -## Provide a k8s version to define apiGroups for podSecurityPolicy Cluster Role. -## For example: kubeTargetVersionOverride: 1.14.9 -## -kubeTargetVersionOverride: "" - -# Enable self metrics configuration for service and Service Monitor -# Default values for telemetry configuration can be overriden -selfMonitor: - enabled: false - # telemetryHost: 0.0.0.0 - # telemetryPort: 8081 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/Chart.yaml deleted file mode 100644 index cf16381b1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: kubeAdmControllerManager -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmControllerManager/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/Chart.yaml deleted file mode 100644 index c221ee5d3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: kubeAdmEtcd -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmEtcd/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/Chart.yaml deleted file mode 100644 index 174b9ede2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: kubeAdmProxy -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmProxy/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/Chart.yaml deleted file mode 100644 index 02be8ce62..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: kubeAdmScheduler -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/kubeAdmScheduler/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/Chart.yaml deleted file mode 100644 index 194f0877b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/Chart.yaml +++ /dev/null @@ -1,26 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-prometheus-adapter -apiVersion: v1 -appVersion: v0.8.3 -description: A Helm chart for k8s prometheus adapter -home: https://github.com/DirectXMan12/k8s-prometheus-adapter -keywords: -- hpa -- metrics -- prometheus -- adapter -maintainers: -- email: mattias.gees@jetstack.io - name: mattiasgees -- name: steven-sheehy -- email: hfernandez@mesosphere.com - name: hectorj2f -name: prometheus-adapter -sources: -- https://github.com/kubernetes/charts -- https://github.com/DirectXMan12/k8s-prometheus-adapter -version: 2.12.1 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/README.md deleted file mode 100644 index 1fe1fad66..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/README.md +++ /dev/null @@ -1,147 +0,0 @@ -# Prometheus Adapter - -Installs the [Prometheus Adapter](https://github.com/DirectXMan12/k8s-prometheus-adapter) for the Custom Metrics API. Custom metrics are used in Kubernetes by [Horizontal Pod Autoscalers](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) to scale workloads based upon your own metric pulled from an external metrics provider like Prometheus. This chart complements the [metrics-server](https://github.com/helm/charts/tree/master/stable/metrics-server) chart that provides resource only metrics. - -## Prerequisites - -Kubernetes 1.14+ - -## Get Repo Info - -```console -helm repo add prometheus-community https://prometheus-community.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Install Chart - -```console -# Helm 3 -$ helm install [RELEASE_NAME] prometheus-community/prometheus-adapter - -# Helm 2 -$ helm install --name [RELEASE_NAME] prometheus-community/prometheus-adapter -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -# Helm 3 -$ helm uninstall [RELEASE_NAME] - -# Helm 2 -# helm delete --purge [RELEASE_NAME] -``` - -This removes all the Kubernetes components associated with the chart and deletes the release. - -_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ - -## Upgrading Chart - -```console -# Helm 3 or 2 -$ helm upgrade [RELEASE_NAME] [CHART] --install -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -## Configuration - -See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands: - -```console -# Helm 2 -$ helm inspect values prometheus-community/prometheus-adapter - -# Helm 3 -$ helm show values prometheus-community/prometheus-adapter -``` - -### Prometheus Service Endpoint - -To use the chart, ensure the `prometheus.url` and `prometheus.port` are configured with the correct Prometheus service endpoint. If Prometheus is exposed under HTTPS the host's CA Bundle must be exposed to the container using `extraVolumes` and `extraVolumeMounts`. - -### Adapter Rules - -Additionally, the chart comes with a set of default rules out of the box but they may pull in too many metrics or not map them correctly for your needs. Therefore, it is recommended to populate `rules.custom` with a list of rules (see the [config document](https://github.com/DirectXMan12/k8s-prometheus-adapter/blob/master/docs/config.md) for the proper format). - -### Horizontal Pod Autoscaler Metrics - -Finally, to configure your Horizontal Pod Autoscaler to use the custom metric, see the custom metrics section of the [HPA walkthrough](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/#autoscaling-on-multiple-metrics-and-custom-metrics). - -The Prometheus Adapter can serve three different [metrics APIs](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-metrics-apis): - -### Custom Metrics - -Enabling this option will cause custom metrics to be served at `/apis/custom.metrics.k8s.io/v1beta1`. Enabled by default when `rules.default` is true, but can be customized by populating `rules.custom`: - -```yaml -rules: - custom: - - seriesQuery: '{__name__=~"^some_metric_count$"}' - resources: - template: <<.Resource>> - name: - matches: "" - as: "my_custom_metric" - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) -``` - -### External Metrics - -Enabling this option will cause external metrics to be served at `/apis/external.metrics.k8s.io/v1beta1`. Can be enabled by populating `rules.external`: - -```yaml -rules: - external: - - seriesQuery: '{__name__=~"^some_metric_count$"}' - resources: - template: <<.Resource>> - name: - matches: "" - as: "my_external_metric" - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) -``` - -### Resource Metrics - -Enabling this option will cause resource metrics to be served at `/apis/metrics.k8s.io/v1beta1`. Resource metrics will allow pod CPU and Memory metrics to be used in [Horizontal Pod Autoscalers](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) as well as the `kubectl top` command. Can be enabled by populating `rules.resource`: - -```yaml -rules: - resource: - cpu: - containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>}[3m])) by (<<.GroupBy>>) - nodeQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>, id='/'}[3m])) by (<<.GroupBy>>) - resources: - overrides: - instance: - resource: node - namespace: - resource: namespace - pod: - resource: pod - containerLabel: container - memory: - containerQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>}) by (<<.GroupBy>>) - nodeQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>,id='/'}) by (<<.GroupBy>>) - resources: - overrides: - instance: - resource: node - namespace: - resource: namespace - pod: - resource: pod - containerLabel: container - window: 3m -``` - -**NOTE:** Setting a value for `rules.resource` will also deploy the resource metrics API service, providing the same functionality as [metrics-server](https://github.com/helm/charts/tree/master/stable/metrics-server). As such it is not possible to deploy them both in the same cluster. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/NOTES.txt b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/NOTES.txt deleted file mode 100644 index b7b9b9932..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/NOTES.txt +++ /dev/null @@ -1,9 +0,0 @@ -{{ template "k8s-prometheus-adapter.fullname" . }} has been deployed. -In a few minutes you should be able to list metrics using the following command(s): -{{ if .Values.rules.resource }} - kubectl get --raw /apis/metrics.k8s.io/v1beta1 -{{- end }} - kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 -{{ if .Values.rules.external }} - kubectl get --raw /apis/external.metrics.k8s.io/v1beta1 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/_helpers.tpl deleted file mode 100644 index 35c38b621..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/_helpers.tpl +++ /dev/null @@ -1,72 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "k8s-prometheus-adapter.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "k8s-prometheus-adapter.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "k8s-prometheus-adapter.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "k8s-prometheus-adapter.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "k8s-prometheus-adapter.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/certmanager.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/certmanager.yaml deleted file mode 100644 index 7999e3c21..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/certmanager.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if .Values.certManager.enabled -}} ---- -# Create a selfsigned Issuer, in order to create a root CA certificate for -# signing webhook serving certificates -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-self-signed-issuer -spec: - selfSigned: {} ---- -# Generate a CA Certificate used to sign certificates for the webhook -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-root-cert -spec: - secretName: {{ template "k8s-prometheus-adapter.fullname" . }}-root-cert - duration: {{ .Values.certManager.caCertDuration }} - issuerRef: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-self-signed-issuer - commonName: "ca.webhook.prometheus-adapter" - isCA: true ---- -# Create an Issuer that uses the above generated CA certificate to issue certs -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-root-issuer -spec: - ca: - secretName: {{ template "k8s-prometheus-adapter.fullname" . }}-root-cert ---- -# Finally, generate a serving certificate for the apiservices to use -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-cert -spec: - secretName: {{ template "k8s-prometheus-adapter.fullname" . }} - duration: {{ .Values.certManager.certDuration }} - issuerRef: - name: {{ template "k8s-prometheus-adapter.fullname" . }}-root-issuer - dnsNames: - - {{ template "k8s-prometheus-adapter.fullname" . }} - - {{ template "k8s-prometheus-adapter.fullname" . }}.{{ .Release.Namespace }} - - {{ template "k8s-prometheus-adapter.fullname" . }}.{{ .Release.Namespace }}.svc -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml deleted file mode 100644 index 2bc9eb740..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-auth-delegator.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-system-auth-delegator -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: system:auth-delegator -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml deleted file mode 100644 index ec7e5e476..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-binding-resource-reader.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-resource-reader -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "k8s-prometheus-adapter.name" . }}-resource-reader -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml deleted file mode 100644 index 319460a33..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/cluster-role-resource-reader.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-resource-reader -rules: -- apiGroups: - - "" - resources: - - namespaces - - pods - - services - - configmaps - verbs: - - get - - list - - watch -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/configmap.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/configmap.yaml deleted file mode 100644 index fbc155dc8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/configmap.yaml +++ /dev/null @@ -1,96 +0,0 @@ -{{- if not .Values.rules.existing -}} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -data: - config.yaml: | -{{- if or .Values.rules.default .Values.rules.custom }} - rules: -{{- if .Values.rules.default }} - - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}' - seriesFilters: [] - resources: - overrides: - namespace: - resource: namespace - pod: - resource: pod - name: - matches: ^container_(.*)_seconds_total$ - as: "" - metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[5m])) - by (<<.GroupBy>>) - - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}' - seriesFilters: - - isNot: ^container_.*_seconds_total$ - resources: - overrides: - namespace: - resource: namespace - pod: - resource: pod - name: - matches: ^container_(.*)_total$ - as: "" - metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>,container!="POD"}[5m])) - by (<<.GroupBy>>) - - seriesQuery: '{__name__=~"^container_.*",container!="POD",namespace!="",pod!=""}' - seriesFilters: - - isNot: ^container_.*_total$ - resources: - overrides: - namespace: - resource: namespace - pod: - resource: pod - name: - matches: ^container_(.*)$ - as: "" - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>,container!="POD"}) by (<<.GroupBy>>) - - seriesQuery: '{namespace!="",__name__!~"^container_.*"}' - seriesFilters: - - isNot: .*_total$ - resources: - template: <<.Resource>> - name: - matches: "" - as: "" - metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) - - seriesQuery: '{namespace!="",__name__!~"^container_.*"}' - seriesFilters: - - isNot: .*_seconds_total - resources: - template: <<.Resource>> - name: - matches: ^(.*)_total$ - as: "" - metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>) - - seriesQuery: '{namespace!="",__name__!~"^container_.*"}' - seriesFilters: [] - resources: - template: <<.Resource>> - name: - matches: ^(.*)_seconds_total$ - as: "" - metricsQuery: sum(rate(<<.Series>>{<<.LabelMatchers>>}[5m])) by (<<.GroupBy>>) -{{- end -}} -{{- if .Values.rules.custom }} -{{ toYaml .Values.rules.custom | indent 4 }} -{{- end -}} -{{- end -}} -{{- if .Values.rules.external }} - externalRules: -{{ toYaml .Values.rules.external | indent 4 }} -{{- end -}} -{{- if .Values.rules.resource }} - resourceRules: -{{ toYaml .Values.rules.resource | indent 6 }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml deleted file mode 100644 index 9bc1cbda1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-apiservice.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if or .Values.rules.default .Values.rules.custom }} -{{- if .Capabilities.APIVersions.Has "apiregistration.k8s.io/v1" }} -apiVersion: apiregistration.k8s.io/v1 -{{- else }} -apiVersion: apiregistration.k8s.io/v1beta1 -{{- end }} -kind: APIService -metadata: -{{- if .Values.certManager.enabled }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: v1beta1.custom.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: custom.metrics.k8s.io - version: v1beta1 - insecureSkipTLSVerify: {{ if or .Values.tls.enable .Values.certManager.enabled }}false{{ else }}true{{ end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml deleted file mode 100644 index 93ade6f8f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role-binding-hpa.yaml +++ /dev/null @@ -1,23 +0,0 @@ -{{- /* -This if must be aligned with custom-metrics-cluster-role.yaml -as otherwise this binding will point to not existing role. -*/ -}} -{{- if and .Values.rbac.create (or .Values.rules.default .Values.rules.custom) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-hpa-controller -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "k8s-prometheus-adapter.name" . }}-server-resources -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml deleted file mode 100644 index 33daf7113..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/custom-metrics-cluster-role.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.rbac.create (or .Values.rules.default .Values.rules.custom) -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-server-resources -rules: -- apiGroups: - - custom.metrics.k8s.io - resources: ["*"] - verbs: ["*"] -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/deployment.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/deployment.yaml deleted file mode 100644 index 43fb65dc8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/deployment.yaml +++ /dev/null @@ -1,135 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - replicas: {{ .Values.replicas }} - selector: - matchLabels: - app: {{ template "k8s-prometheus-adapter.name" . }} - release: {{ .Release.Name }} - template: - metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - {{- with .Values.podLabels }} - {{- toYaml . | trim | nindent 8 }} - {{- end }} - name: {{ template "k8s-prometheus-adapter.name" . }} - annotations: - checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} - {{- with .Values.podAnnotations }} - {{- toYaml . | trim | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - {{- if .Values.hostNetwork.enabled }} - hostNetwork: true - {{- end }} - {{- if .Values.dnsPolicy }} - dnsPolicy: {{ .Values.dnsPolicy }} - {{- end}} - containers: - - name: {{ .Chart.Name }} - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - args: - - /adapter - - --secure-port={{ .Values.listenPort }} - {{- if or .Values.tls.enable .Values.certManager.enabled }} - - --tls-cert-file=/var/run/serving-cert/tls.crt - - --tls-private-key-file=/var/run/serving-cert/tls.key - {{- end }} - - --cert-dir=/tmp/cert - - --logtostderr=true - - --prometheus-url={{ tpl .Values.prometheus.url . }}{{ if .Values.prometheus.port }}:{{ .Values.prometheus.port }}{{end}}{{ .Values.prometheus.path }} - - --metrics-relist-interval={{ .Values.metricsRelistInterval }} - - --v={{ .Values.logLevel }} - - --config=/etc/adapter/config.yaml - {{- if .Values.extraArguments }} - {{- toYaml .Values.extraArguments | trim | nindent 8 }} - {{- end }} - ports: - - containerPort: {{ .Values.listenPort }} - name: https - livenessProbe: - httpGet: - path: /healthz - port: https - scheme: HTTPS - initialDelaySeconds: 30 - readinessProbe: - httpGet: - path: /healthz - port: https - scheme: HTTPS - initialDelaySeconds: 30 - {{- if .Values.resources }} - resources: - {{- toYaml .Values.resources | nindent 10 }} - {{- end }} - {{- with .Values.dnsConfig }} - dnsConfig: - {{ toYaml . | indent 8 }} - {{- end }} - securityContext: - allowPrivilegeEscalation: false - capabilities: - drop: ["all"] - readOnlyRootFilesystem: true - runAsNonRoot: true - runAsUser: 10001 - volumeMounts: - {{- if .Values.extraVolumeMounts }} - {{ toYaml .Values.extraVolumeMounts | trim | nindent 8 }} - {{ end }} - - mountPath: /etc/adapter/ - name: config - readOnly: true - - mountPath: /tmp - name: tmp - {{- if or .Values.tls.enable .Values.certManager.enabled }} - - mountPath: /var/run/serving-cert - name: volume-serving-cert - readOnly: true - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.nodeSelector }} -{{- toYaml .Values.nodeSelector | nindent 8 }} -{{- end }} - affinity: - {{- toYaml .Values.affinity | nindent 8 }} - priorityClassName: {{ .Values.priorityClassName }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.tolerations }} -{{- toYaml .Values.tolerations | nindent 8 }} -{{- end }} - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end }} - {{- end }} - volumes: - {{- if .Values.extraVolumes }} - {{ toYaml .Values.extraVolumes | trim | nindent 6 }} - {{ end }} - - name: config - configMap: - name: {{ .Values.rules.existing | default (include "k8s-prometheus-adapter.fullname" . ) }} - - name: tmp - emptyDir: {} - {{- if or .Values.tls.enable .Values.certManager.enabled }} - - name: volume-serving-cert - secret: - secretName: {{ template "k8s-prometheus-adapter.fullname" . }} - {{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml deleted file mode 100644 index 035f24694..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-apiservice.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.rules.external }} -{{- if .Capabilities.APIVersions.Has "apiregistration.k8s.io/v1" }} -apiVersion: apiregistration.k8s.io/v1 -{{- else }} -apiVersion: apiregistration.k8s.io/v1beta1 -{{- end }} -kind: APIService -metadata: -{{- if .Values.certManager.enabled }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: v1beta1.external.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: external.metrics.k8s.io - version: v1beta1 - insecureSkipTLSVerify: {{ if or .Values.tls.enable .Values.certManager.enabled }}false{{ else }}true{{ end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml deleted file mode 100644 index 0776029af..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role-binding-hpa.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.external -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-hpa-controller-external-metrics -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "k8s-prometheus-adapter.name" . }}-external-metrics -subjects: -- kind: ServiceAccount - name: horizontal-pod-autoscaler - namespace: kube-system -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml deleted file mode 100644 index 4adbd6537..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/external-metrics-cluster-role.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.external -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-external-metrics -rules: -- apiGroups: - - "external.metrics.k8s.io" - resources: - - "*" - verbs: - - list - - get - - watch -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/pdb.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/pdb.yaml deleted file mode 100644 index b70309f6f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/pdb.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.podDisruptionBudget.enabled }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - {{- if .Values.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - app: {{ template "k8s-prometheus-adapter.name" . }} - release: {{ .Release.Name }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/psp.yaml deleted file mode 100644 index a88c9c2f2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/psp.yaml +++ /dev/null @@ -1,68 +0,0 @@ -{{- if .Values.psp.create -}} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - {{- if .Values.hostNetwork.enabled }} - hostNetwork: true - {{- end }} - fsGroup: - rule: RunAsAny - runAsGroup: - rule: RunAsAny - runAsUser: - rule: MustRunAs - ranges: - - min: 1024 - max: 65535 - seLinux: - rule: RunAsAny - supplementalGroups: - rule: RunAsAny - volumes: - - secret - - emptyDir - - configMap ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-psp -rules: -- apiGroups: - - 'policy' - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "k8s-prometheus-adapter.fullname" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-psp -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "k8s-prometheus-adapter.name" . }}-psp -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml deleted file mode 100644 index ab75b2f6c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-apiservice.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.rules.resource}} -{{- if .Capabilities.APIVersions.Has "apiregistration.k8s.io/v1" }} -apiVersion: apiregistration.k8s.io/v1 -{{- else }} -apiVersion: apiregistration.k8s.io/v1beta1 -{{- end }} -kind: APIService -metadata: -{{- if .Values.certManager.enabled }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "k8s-prometheus-adapter.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: v1beta1.metrics.k8s.io -spec: - service: - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace | quote }} - {{- if .Values.tls.enable }} - caBundle: {{ b64enc .Values.tls.ca }} - {{- end }} - group: metrics.k8s.io - version: v1beta1 - insecureSkipTLSVerify: {{ if or .Values.tls.enable .Values.certManager.enabled }}false{{ else }}true{{ end }} - groupPriorityMinimum: 100 - versionPriority: 100 -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml deleted file mode 100644 index 0534af11e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role-binding.yaml +++ /dev/null @@ -1,19 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.resource -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-hpa-controller-metrics -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "k8s-prometheus-adapter.name" . }}-metrics -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml deleted file mode 100644 index 01a307d69..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/resource-metrics-cluster-role.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.rbac.create .Values.rules.resource -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-metrics -rules: -- apiGroups: - - "" - resources: - - pods - - nodes - - nodes/stats - verbs: - - get - - list - - watch -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml deleted file mode 100644 index 60f18f2b3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/role-binding-auth-reader.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if .Values.rbac.create -}} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.name" . }}-auth-reader - namespace: kube-system -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: extension-apiserver-authentication-reader -subjects: -- kind: ServiceAccount - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace | quote }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/secret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/secret.yaml deleted file mode 100644 index 38e7cb624..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.tls.enable -}} -apiVersion: v1 -kind: Secret -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} -type: kubernetes.io/tls -data: - tls.crt: {{ b64enc .Values.tls.certificate }} - tls.key: {{ b64enc .Values.tls.key }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/service.yaml deleted file mode 100644 index 6bccda911..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/service.yaml +++ /dev/null @@ -1,22 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - annotations: -{{ toYaml .Values.service.annotations | indent 4 }} - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.fullname" . }} - namespace: {{ .Release.Namespace }} -spec: - ports: - - port: {{ .Values.service.port }} - protocol: TCP - targetPort: https - selector: - app: {{ template "k8s-prometheus-adapter.name" . }} - release: {{ .Release.Name }} - type: {{ .Values.service.type }} - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/serviceaccount.yaml deleted file mode 100644 index 42ef0267e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/templates/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - labels: - app: {{ template "k8s-prometheus-adapter.name" . }} - chart: {{ template "k8s-prometheus-adapter.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} - name: {{ template "k8s-prometheus-adapter.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/values.yaml deleted file mode 100644 index d9108cb9a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-adapter/values.yaml +++ /dev/null @@ -1,180 +0,0 @@ -# Default values for k8s-prometheus-adapter.. -global: - cattle: - systemDefaultRegistry: "" - -affinity: {} - -image: - repository: rancher/mirrored-directxman12-k8s-prometheus-adapter - tag: v0.8.3 - pullPolicy: IfNotPresent - -logLevel: 4 - -metricsRelistInterval: 1m - -listenPort: 6443 - -nodeSelector: {} - -priorityClassName: "" - -# Url to access prometheus -prometheus: - # Value is templated - url: http://prometheus.default.svc - port: 9090 - path: "" - -replicas: 1 - -rbac: - # Specifies whether RBAC resources should be created - create: true - -psp: - # Specifies whether PSP resources should be created - create: false - -serviceAccount: - # Specifies whether a service account should be created - create: true - # The name of the service account to use. - # If not set and create is true, a name is generated using the fullname template - name: -# Custom DNS configuration to be added to prometheus-adapter pods -dnsConfig: {} -# nameservers: -# - 1.2.3.4 -# searches: -# - ns1.svc.cluster-domain.example -# - my.dns.search.suffix -# options: -# - name: ndots -# value: "2" -# - name: edns0 -resources: {} - # requests: - # cpu: 100m - # memory: 128Mi - # limits: - # cpu: 100m - # memory: 128Mi - -rules: - default: true - custom: [] -# - seriesQuery: '{__name__=~"^some_metric_count$"}' -# resources: -# template: <<.Resource>> -# name: -# matches: "" -# as: "my_custom_metric" -# metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) - # Mounts a configMap with pre-generated rules for use. Overrides the - # default, custom, external and resource entries - existing: - external: [] -# - seriesQuery: '{__name__=~"^some_metric_count$"}' -# resources: -# template: <<.Resource>> -# name: -# matches: "" -# as: "my_external_metric" -# metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (<<.GroupBy>>) - resource: {} -# cpu: -# containerQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>}[3m])) by (<<.GroupBy>>) -# nodeQuery: sum(rate(container_cpu_usage_seconds_total{<<.LabelMatchers>>, id='/'}[3m])) by (<<.GroupBy>>) -# resources: -# overrides: -# instance: -# resource: node -# namespace: -# resource: namespace -# pod: -# resource: pod -# containerLabel: container -# memory: -# containerQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>}) by (<<.GroupBy>>) -# nodeQuery: sum(container_memory_working_set_bytes{<<.LabelMatchers>>,id='/'}) by (<<.GroupBy>>) -# resources: -# overrides: -# instance: -# resource: node -# namespace: -# resource: namespace -# pod: -# resource: pod -# containerLabel: container -# window: 3m - -service: - annotations: {} - port: 443 - type: ClusterIP - -tls: - enable: false - ca: |- - # Public CA file that signed the APIService - key: |- - # Private key of the APIService - certificate: |- - # Public key of the APIService - -# Any extra arguments -extraArguments: [] - # - --tls-private-key-file=/etc/tls/tls.key - # - --tls-cert-file=/etc/tls/tls.crt - -# Any extra volumes -extraVolumes: [] - # - name: example-name - # hostPath: - # path: /path/on/host - # type: DirectoryOrCreate - # - name: ssl-certs - # hostPath: - # path: /etc/ssl/certs/ca-bundle.crt - # type: File - -# Any extra volume mounts -extraVolumeMounts: [] - # - name: example-name - # mountPath: /path/in/container - # - name: ssl-certs - # mountPath: /etc/ssl/certs/ca-certificates.crt - # readOnly: true - -tolerations: [] - -# Labels added to the pod -podLabels: {} - -# Annotations added to the pod -podAnnotations: {} - -hostNetwork: - # Specifies if prometheus-adapter should be started in hostNetwork mode. - # - # You would require this enabled if you use alternate overlay networking for pods and - # API server unable to communicate with metrics-server. As an example, this is required - # if you use Weave network on EKS. See also dnsPolicy - enabled: false - -# When hostNetwork is enabled, you probably want to set this to ClusterFirstWithHostNet -# dnsPolicy: ClusterFirstWithHostNet - -podDisruptionBudget: - # Specifies if PodDisruptionBudget should be enabled - # When enabled, minAvailable or maxUnavailable should also be defined. - enabled: false - minAvailable: - maxUnavailable: 1 - -certManager: - enabled: false - caCertDuration: 43800h - certDuration: 8760h diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/.helmignore deleted file mode 100644 index f0c131944..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/.helmignore +++ /dev/null @@ -1,21 +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 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/Chart.yaml deleted file mode 100644 index 887a6d5da..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/Chart.yaml +++ /dev/null @@ -1,23 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-node-exporter -apiVersion: v1 -appVersion: 1.1.2 -description: A Helm chart for prometheus node-exporter -home: https://github.com/prometheus/node_exporter/ -keywords: -- node-exporter -- prometheus -- exporter -maintainers: -- email: gianrubio@gmail.com - name: gianrubio -- name: vsliouniaev -- name: bismarck -name: prometheus-node-exporter -sources: -- https://github.com/prometheus/node_exporter/ -version: 1.16.2 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/README.md deleted file mode 100644 index babde05e0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/README.md +++ /dev/null @@ -1,63 +0,0 @@ -# Prometheus Node Exporter - -Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors. - -This chart bootstraps a prometheus [Node Exporter](http://github.com/prometheus/node_exporter) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - -## Get Repo Info - -```console -helm repo add prometheus-community https://prometheus-community.github.io/helm-charts -helm repo update -``` - -_See [helm repo](https://helm.sh/docs/helm/helm_repo/) for command documentation._ - -## Install Chart - -```console -# Helm 3 -$ helm install [RELEASE_NAME] prometheus-community/prometheus-node-exporter - -# Helm 2 -$ helm install --name [RELEASE_NAME] prometheus-community/prometheus-node-exporter -``` - -_See [configuration](#configuration) below._ - -_See [helm install](https://helm.sh/docs/helm/helm_install/) for command documentation._ - -## Uninstall Chart - -```console -# Helm 3 -$ helm uninstall [RELEASE_NAME] - -# Helm 2 -# helm delete --purge [RELEASE_NAME] -``` - -This removes all the Kubernetes components associated with the chart and deletes the release. - -_See [helm uninstall](https://helm.sh/docs/helm/helm_uninstall/) for command documentation._ - -## Upgrading Chart - -```console -# Helm 3 or 2 -$ helm upgrade [RELEASE_NAME] [CHART] --install -``` - -_See [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) for command documentation._ - -## Configuring - -See [Customizing the Chart Before Installing](https://helm.sh/docs/intro/using_helm/#customizing-the-chart-before-installing). To see all configurable options with detailed comments, visit the chart's [values.yaml](./values.yaml), or run these configuration commands: - -```console -# Helm 2 -$ helm inspect values prometheus-community/prometheus-node-exporter - -# Helm 3 -$ helm show values prometheus-community/prometheus-node-exporter -``` diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/NOTES.txt b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/NOTES.txt deleted file mode 100644 index dc272fa99..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/NOTES.txt +++ /dev/null @@ -1,15 +0,0 @@ -1. Get the application URL by running these commands: -{{- if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "prometheus-node-exporter.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ template "prometheus-node-exporter.namespace" . }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch the status of by running 'kubectl get svc -w {{ template "prometheus-node-exporter.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ template "prometheus-node-exporter.namespace" . }} {{ template "prometheus-node-exporter.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ template "prometheus-node-exporter.namespace" . }} -l "app={{ template "prometheus-node-exporter.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - echo "Visit http://127.0.0.1:9100 to use your application" - kubectl port-forward --namespace {{ template "prometheus-node-exporter.namespace" . }} $POD_NAME 9100 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/_helpers.tpl deleted file mode 100644 index 9fd0d600b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/_helpers.tpl +++ /dev/null @@ -1,95 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "prometheus-node-exporter.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "prometheus-node-exporter.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 63 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* Generate basic labels */}} -{{- define "prometheus-node-exporter.labels" }} -app: {{ template "prometheus-node-exporter.name" . }} -heritage: {{.Release.Service }} -release: {{.Release.Name }} -chart: {{ template "prometheus-node-exporter.chart" . }} -{{- if .Values.podLabels}} -{{ toYaml .Values.podLabels }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "prometheus-node-exporter.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{/* -Create the name of the service account to use -*/}} -{{- define "prometheus-node-exporter.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "prometheus-node-exporter.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "prometheus-node-exporter.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/daemonset.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/daemonset.yaml deleted file mode 100644 index a3a1bc885..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/daemonset.yaml +++ /dev/null @@ -1,183 +0,0 @@ -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} -spec: - selector: - matchLabels: - app: {{ template "prometheus-node-exporter.name" . }} - release: {{ .Release.Name }} - {{- if .Values.updateStrategy }} - updateStrategy: -{{ toYaml .Values.updateStrategy | indent 4 }} - {{- end }} - template: - metadata: - labels: {{ include "prometheus-node-exporter.labels" . | indent 8 }} - {{- if .Values.podAnnotations }} - annotations: - {{- toYaml .Values.podAnnotations | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ template "prometheus-node-exporter.serviceAccountName" . }} -{{- if .Values.securityContext }} - securityContext: -{{ toYaml .Values.securityContext | indent 8 }} -{{- end }} -{{- if .Values.priorityClassName }} - priorityClassName: {{ .Values.priorityClassName }} -{{- end }} - containers: - - name: node-exporter - image: "{{ template "system_default_registry" . }}{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - args: - - --path.procfs=/host/proc - - --path.sysfs=/host/sys - {{- if .Values.hostRootFsMount }} - - --path.rootfs=/host/root - {{- end }} - - --web.listen-address=$(HOST_IP):{{ .Values.service.port }} -{{- if .Values.extraArgs }} -{{ toYaml .Values.extraArgs | indent 12 }} -{{- end }} - {{- with .Values.containerSecurityContext }} - securityContext: {{ toYaml . | nindent 12 }} - {{- end }} - env: - - name: HOST_IP - {{- if .Values.service.listenOnAllInterfaces }} - value: 0.0.0.0 - {{- else }} - valueFrom: - fieldRef: - apiVersion: v1 - fieldPath: status.hostIP - {{- end }} - ports: - - name: metrics - containerPort: {{ .Values.service.port }} - protocol: TCP - livenessProbe: - httpGet: - path: / - port: {{ .Values.service.port }} - readinessProbe: - httpGet: - path: / - port: {{ .Values.service.port }} - resources: -{{ toYaml .Values.resources | indent 12 }} - volumeMounts: - - name: proc - mountPath: /host/proc - readOnly: true - - name: sys - mountPath: /host/sys - readOnly: true - {{- if .Values.hostRootFsMount }} - - name: root - mountPath: /host/root - mountPropagation: HostToContainer - readOnly: true - {{- end }} - {{- if .Values.extraHostVolumeMounts }} - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- if $mount.mountPropagation }} - mountPropagation: {{ $mount.mountPropagation }} - {{- end }} - {{- end }} - {{- end }} - {{- if .Values.sidecarVolumeMount }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: true - {{- end }} - {{- end }} - {{- if .Values.configmaps }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - {{- end }} - {{- if .Values.secrets }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ .name }} - mountPath: {{ .mountPath }} - {{- end }} - {{- end }} - {{- end }} -{{- if .Values.sidecars }} -{{ toYaml .Values.sidecars | indent 8 }} - {{- if .Values.sidecarVolumeMount }} - volumeMounts: - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - mountPath: {{ $mount.mountPath }} - readOnly: {{ $mount.readOnly }} - {{- end }} - {{- end }} -{{- end }} - hostNetwork: {{ .Values.hostNetwork }} - hostPID: true -{{- if .Values.affinity }} - affinity: -{{ toYaml .Values.affinity | indent 8 }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- with .Values.dnsConfig }} - dnsConfig: -{{ toYaml . | indent 8 }} -{{- end }} -{{- if .Values.nodeSelector }} -{{- toYaml .Values.Selector | nindent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.tolerations }} -{{- toYaml .Values.tolerations | nindent 8 }} -{{- end }} - volumes: - - name: proc - hostPath: - path: /proc - - name: sys - hostPath: - path: /sys - {{- if .Values.hostRootFsMount }} - - name: root - hostPath: - path: / - {{- end }} - {{- if .Values.extraHostVolumeMounts }} - {{- range $_, $mount := .Values.extraHostVolumeMounts }} - - name: {{ $mount.name }} - hostPath: - path: {{ $mount.hostPath }} - {{- end }} - {{- end }} - {{- if .Values.sidecarVolumeMount }} - {{- range $_, $mount := .Values.sidecarVolumeMount }} - - name: {{ $mount.name }} - emptyDir: - medium: Memory - {{- end }} - {{- end }} - {{- if .Values.configmaps }} - {{- range $_, $mount := .Values.configmaps }} - - name: {{ $mount.name }} - configMap: - name: {{ $mount.name }} - {{- end }} - {{- end }} - {{- if .Values.secrets }} - {{- range $_, $mount := .Values.secrets }} - - name: {{ $mount.name }} - secret: - secretName: {{ $mount.name }} - {{- end }} - {{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/endpoints.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/endpoints.yaml deleted file mode 100644 index 8daaeaaff..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/endpoints.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} - labels: -{{ include "prometheus-node-exporter.labels" . | indent 4 }} -subsets: - - addresses: - {{- range .Values.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: metrics - port: 9100 - protocol: TCP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/monitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/monitor.yaml deleted file mode 100644 index 2f7b6ae9e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/monitor.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if .Values.prometheus.monitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} - {{- if .Values.prometheus.monitor.additionalLabels }} -{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }} - {{- end }} -spec: - selector: - matchLabels: - app: {{ template "prometheus-node-exporter.name" . }} - release: {{ .Release.Name }} - endpoints: - - port: metrics - scheme: {{ $.Values.prometheus.monitor.scheme }} - {{- if $.Values.prometheus.monitor.bearerTokenFile }} - bearerTokenFile: {{ $.Values.prometheus.monitor.bearerTokenFile }} - {{- end }} - {{- if $.Values.prometheus.monitor.tlsConfig }} - tlsConfig: {{ toYaml $.Values.prometheus.monitor.tlsConfig | nindent 8 }} - {{- end }} - {{- if .Values.prometheus.monitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }} - {{- end }} -{{- if .Values.prometheus.monitor.relabelings }} - relabelings: -{{ toYaml .Values.prometheus.monitor.relabelings | indent 6 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml deleted file mode 100644 index cb433369c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrole.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if .Values.rbac.create }} -{{- if .Values.rbac.pspEnabled }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: psp-{{ template "prometheus-node-exporter.fullname" . }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} -rules: -- apiGroups: ['extensions'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "prometheus-node-exporter.fullname" . }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml deleted file mode 100644 index d36d93ecf..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.rbac.create }} -{{- if .Values.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: psp-{{ template "prometheus-node-exporter.fullname" . }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: psp-{{ template "prometheus-node-exporter.fullname" . }} -subjects: - - kind: ServiceAccount - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp.yaml deleted file mode 100644 index f00506c98..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/psp.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if .Values.rbac.create }} -{{- if .Values.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} -spec: - privileged: false - # Required to prevent escalations to root. - # allowPrivilegeEscalation: false - # This is redundant with non-root + disallow privilege escalation, - # but we can provide it for defense in depth. - #requiredDropCapabilities: - # - ALL - # Allow core volume types. - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - - 'hostPath' - hostNetwork: true - hostIPC: false - hostPID: true - hostPorts: - - min: 0 - max: 65535 - runAsUser: - # Permits the container to run with root privileges as well. - rule: 'RunAsAny' - seLinux: - # This policy assumes the nodes are using AppArmor rather than SELinux. - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/service.yaml deleted file mode 100644 index b0a447fe3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/service.yaml +++ /dev/null @@ -1,23 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "prometheus-node-exporter.fullname" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} -{{- if .Values.service.annotations }} - annotations: -{{ toYaml .Values.service.annotations | indent 4 }} -{{- end }} - labels: {{ include "prometheus-node-exporter.labels" . | indent 4 }} -spec: - type: {{ .Values.service.type }} - ports: - - port: {{ .Values.service.port }} - {{- if ( and (eq .Values.service.type "NodePort" ) (not (empty .Values.service.nodePort)) ) }} - nodePort: {{ .Values.service.nodePort }} - {{- end }} - targetPort: {{ .Values.service.targetPort }} - protocol: TCP - name: metrics - selector: - app: {{ template "prometheus-node-exporter.name" . }} - release: {{ .Release.Name }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/serviceaccount.yaml deleted file mode 100644 index 07e9f0d94..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/templates/serviceaccount.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if .Values.rbac.create -}} -{{- if .Values.serviceAccount.create -}} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "prometheus-node-exporter.serviceAccountName" . }} - namespace: {{ template "prometheus-node-exporter.namespace" . }} - labels: - app: {{ template "prometheus-node-exporter.name" . }} - chart: {{ template "prometheus-node-exporter.chart" . }} - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" - annotations: -{{ toYaml .Values.serviceAccount.annotations | indent 4 }} -imagePullSecrets: -{{ toYaml .Values.serviceAccount.imagePullSecrets | indent 2 }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/values.yaml deleted file mode 100644 index 47dedd4d2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/prometheus-node-exporter/values.yaml +++ /dev/null @@ -1,177 +0,0 @@ -# Default values for prometheus-node-exporter. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -global: - cattle: - systemDefaultRegistry: "" - -image: - repository: rancher/mirrored-prometheus-node-exporter - tag: v1.1.2 - pullPolicy: IfNotPresent - -service: - type: ClusterIP - port: 9100 - targetPort: 9100 - nodePort: - listenOnAllInterfaces: true - annotations: - prometheus.io/scrape: "true" - -prometheus: - monitor: - enabled: false - additionalLabels: {} - namespace: "" - scheme: http - bearerTokenFile: - tlsConfig: {} - - relabelings: [] - scrapeTimeout: 10s - -## Customize the updateStrategy if set -updateStrategy: - type: RollingUpdate - rollingUpdate: - maxUnavailable: 1 - -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:'. - # limits: - # cpu: 200m - # memory: 50Mi - # requests: - # cpu: 100m - # memory: 30Mi - -serviceAccount: - # Specifies whether a ServiceAccount should be created - create: true - # The name of the ServiceAccount to use. - # If not set and create is true, a name is generated using the fullname template - name: - annotations: {} - imagePullSecrets: [] - -securityContext: - fsGroup: 65534 - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - -containerSecurityContext: {} - # capabilities: - # add: - # - SYS_TIME - -rbac: - ## If true, create & use RBAC resources - ## - create: true - ## If true, create & use Pod Security Policy resources - ## https://kubernetes.io/docs/concepts/policy/pod-security-policy/ - pspEnabled: true - -# for deployments that have node_exporter deployed outside of the cluster, list -# their addresses here -endpoints: [] - -# Expose the service to the host network -hostNetwork: true - -## If true, node-exporter pods mounts host / at /host/root -## -hostRootFsMount: true - -## Assign a group of affinity scheduling rules -## -affinity: {} -# nodeAffinity: -# requiredDuringSchedulingIgnoredDuringExecution: -# nodeSelectorTerms: -# - matchFields: -# - key: metadata.name -# operator: In -# values: -# - target-host-name - -# Annotations to be added to node exporter pods -podAnnotations: - # Fix for very slow GKE cluster upgrades - cluster-autoscaler.kubernetes.io/safe-to-evict: "true" - -# Extra labels to be added to node exporter pods -podLabels: {} - -# Custom DNS configuration to be added to prometheus-node-exporter pods -dnsConfig: {} -# nameservers: -# - 1.2.3.4 -# searches: -# - ns1.svc.cluster-domain.example -# - my.dns.search.suffix -# options: -# - name: ndots -# value: "2" -# - name: edns0 - -## Assign a nodeSelector if operating a hybrid cluster -## -nodeSelector: {} -# beta.kubernetes.io/arch: amd64 -# beta.kubernetes.io/os: linux - -tolerations: - - effect: NoSchedule - operator: Exists - - effect: NoExecute - operator: Exists - -## Assign a PriorityClassName to pods if set -# priorityClassName: "" - -## Additional container arguments -## -extraArgs: [] -# - --collector.diskstats.ignored-devices=^(ram|loop|fd|(h|s|v)d[a-z]|nvme\\d+n\\d+p)\\d+$ -# - --collector.textfile.directory=/run/prometheus - -## Additional mounts from the host -## -extraHostVolumeMounts: [] -# - name: -# hostPath: -# mountPath: -# readOnly: true|false -# mountPropagation: None|HostToContainer|Bidirectional - -## Additional configmaps to be mounted. -## -configmaps: [] -# - name: -# mountPath: -secrets: [] -# - name: -# mountPath: -## Override the deployment namespace -## -namespaceOverride: "" - -## Additional containers for export metrics to text file -## -sidecars: [] -## - name: nvidia-dcgm-exporter -## image: nvidia/dcgm-exporter:1.4.3 - -## Volume for sidecar containers -## -sidecarVolumeMount: [] -## - name: collector-textfiles -## mountPath: /run/prometheus -## readOnly: false diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/Chart.yaml deleted file mode 100644 index fc6be3941..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rke2ControllerManager -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2ControllerManager/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/Chart.yaml deleted file mode 100644 index 11a2ee23a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rke2Etcd -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Etcd/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/Chart.yaml deleted file mode 100644 index e506f7552..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rke2IngressNginx -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2IngressNginx/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/Chart.yaml deleted file mode 100644 index 2f9a2c86e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rke2Proxy -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Proxy/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/Chart.yaml deleted file mode 100644 index a20d2f6fd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rke2Scheduler -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rke2Scheduler/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/Chart.yaml deleted file mode 100644 index 76395f890..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rkeControllerManager -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeControllerManager/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/Chart.yaml deleted file mode 100644 index a1360886d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rkeEtcd -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeEtcd/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/Chart.yaml deleted file mode 100644 index 835ee8a83..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rkeIngressNginx -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeIngressNginx/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/Chart.yaml deleted file mode 100644 index 3a5213344..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rkeProxy -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeProxy/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/Chart.yaml deleted file mode 100644 index 56021a2d9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/Chart.yaml +++ /dev/null @@ -1,13 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: linux - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-pushprox -apiVersion: v1 -appVersion: 0.1.0 -description: Sets up a deployment of the PushProx proxy and a DaemonSet of PushProx - clients. -name: rkeScheduler -type: application -version: 0.1.4 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/README.md deleted file mode 100644 index 0530c56aa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# rancher-pushprox - -A Rancher chart based on Rancher [PushProx](https://github.com/rancher/PushProx) that sets up a Deployment of a PushProx proxy and a DaemonSet of PushProx clients on a Kubernetes cluster. - -Installs [rancher-pushprox](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-pushprox) to create PushProx clients that can access their host's network and register with a PushProx proxy. A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR is also included that is configured to scrape the metrics from each of the clients through the proxy. - -Using an instance of this chart is suitable for the following scenarios: -- You need to scrape metrics from a port that should not be accessible outside of the host (e.g. scraping `etcd` metrics in a hardened cluster) -- You need to scrape metrics on a host that are not exposed outside of 127.0.0.1 (e.g. scraping `kube-proxy` metrics) -- You need to scrape metrics through HTTPS using certs hosted directly on `hostPath` -- You need to scrape metrics from Kubernetes components that require authorization via a service account (e.g. permissions to make request to `/metrics`) -- You need to scrape metrics without access to cacerts (i.e. enable `insecureSkipVerify`) - -The clients and proxy are created based on a Rancher fork of the [prometheus-community/PushProx](https://github.com/prometheus-community/PushProx) project. - -## Configuration - -The following tables list the configurable parameters of the rancher-pushprox chart and their default values. - -### General - -#### Required -| Parameter | Description | Example | -| ----- | ----------- | ------ | -| `component` | The component that is being monitored | `kube-etcd` -| `metricsPort` | The port on the host that contains the metrics you want to scrape (e.g. `http://:/metrics`) | `2379` | -| `namespaceOverride` | The namespace to install the chart | `""` - -#### Optional -| Parameter | Description | Default | -| ----- | ----------- | ------ | -| `serviceMonitor.enabled` | Deploys a [Prometheus Operator](https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#servicemonitor) ServiceMonitor CR that is configured to scrape metrics on the hosts that the clients are deployed on via the proxy. Also deploys a Service that points to all pods with the expected client name that exposes the `metricsPort` selected | `true` | -| `serviceMonitor.endpoints` | A list of endpoints that will be added to the ServiceMonitor based on the [Endpoint spec](https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint) | `[{port: metrics}]` | -| `clients.enabled` | Deploys a DaemonSet of clients that are each capable of scraping endpoints on the hostNetwork it is deployed on | `true` | -| `clients.port` | The port where the client will publish PushProx client-specific metrics. If deploying multiple clients onto the same node, the clients should not have conflicting ports | `9369` | -| `clients.proxyUrl` | Overrides the default proxyUrl setting of `http://pushprox-{{ .Values.component }}-proxy.{{ . Release.Namespace }}.svc.cluster.local:{{ .Values.proxy.port }}"` with the `proxyUrl` specified | `""` | -| `clients.useLocalhost` | Sets a flag on each client deployment to redirect scrapes directed to `HOST_IP` to `127.0.0.1` | `false` | -| `clients.https.enabled` | Enables scraping metrics via HTTPS using the provided TLS certs that exist on each host | `false` | -| `clients.https.useServiceAccountCredentials` | If set to true, the client will create a service account with permissions to scrape `/metrics` endpoint of Kubernetes components. The client will use the service account token provided to make authorized scrape requests to the Kubernetes API | `false` | -| `clients.https.insecureSkipVerify` | If set to true, the client will disable SSL security checks | `false` | -| `clients.https.certDir` | A `hostPath` where TLS certs can be found. This path is mounted as a volume on an `initContainer` which copies only the necessary files over to an EmptyDir volume used by each client. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.certFile` | The path to the TLS cert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.keyFile` | The path to the TLS key file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.https.caCertFile` | The path to the TLS cacert file located within `clients.https.certDir`. Required and only used if `clients.https.enabled` is set | `""` | -| `clients.rbac.additionalRules` | Additional permissions to provide to the ServiceAccount bound to the client. This can be used to provide additional permissions for the client to scrape metrics from the k8s API. Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true | `[]` | -| `clients.deployment.enabled` | Deploys the client as a Deployment (generally used if the underlying hostNetwork Pod that is being scraped is managed by a Deployment) | `false` | -| `clients.deployment.replicas` | The number of pods the Deployment has, it should match the number of pod the hostNetwork Deployment has. Required and only used if `client.deployment.enable` is set | `0` | -| `clients.deployment.affinity` | The affinity rules that allocate the pod to the node in which the hostNetwork Deployment's pods run. Required and only used if `client.deployment.enable` is set | `{}` | -| `clients.resources` | Set resource limits and requests for the client container | `{}` | -| `clients.nodeSelector` | Select which nodes to deploy the clients on | `{}` | -| `clients.tolerations` | Specify tolerations for clients | `[]` | -| `proxy.enabled` | Deploys the proxy that each client will register with | `true` | -| `proxy.port` | The port exposed by the proxy that each client will register with to allow metrics to be scraped from the host | `8080` | -| `proxy.resources` | Set resource limits and requests for the proxy container | `{}` | -| `proxy.nodeSelector` | Select which nodes the proxy can be deployed on | `{}` | -| `proxy.tolerations` | Specify tolerations (if necessary) to allow the proxy to be deployed on the selected node | `[]` | - -*Tip: The filepaths set in `clients.https.File` can include wildcard characters*. - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for examples of how this chart can be used. \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/_helpers.tpl deleted file mode 100644 index 458ad21cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/_helpers.tpl +++ /dev/null @@ -1,104 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# General - -{{- define "pushprox.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} - -{{- define "pushProxy.commonLabels" -}} -release: {{ .Release.Name }} -component: {{ .Values.component | quote }} -provider: kubernetes -{{- end -}} - -{{- define "pushProxy.proxyUrl" -}} -{{- $_ := (required "Template requires either .Values.proxy.port or .Values.client.proxyUrl to set proxyUrl for client" (or .Values.clients.proxyUrl .Values.proxy.port)) -}} -{{- if .Values.clients.proxyUrl -}} -{{ printf "%s" .Values.clients.proxyUrl }} -{{- else -}} -{{ printf "http://%s.%s.svc:%d" (include "pushProxy.proxy.name" .) (include "pushprox.namespace" .) (int .Values.proxy.port) }} -{{- end -}}{{- end -}} - -# Client - -{{- define "pushProxy.client.name" -}} -{{- printf "pushprox-%s-client" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.client.labels" -}} -k8s-app: {{ template "pushProxy.client.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# Proxy - -{{- define "pushProxy.proxy.name" -}} -{{- printf "pushprox-%s-proxy" (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.proxy.labels" -}} -k8s-app: {{ template "pushProxy.proxy.name" . }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -# ServiceMonitor - -{{- define "pushprox.serviceMonitor.name" -}} -{{- printf "%s-%s" .Release.Name (required ".Values.component is required" .Values.component) -}} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.labels" -}} -app: {{ template "pushprox.serviceMonitor.name" . }} -release: {{ .Release.Name | quote }} -{{ template "pushProxy.commonLabels" . }} -{{- end -}} - -{{- define "pushProxy.serviceMonitor.endpoints" -}} -{{- $proxyURL := (include "pushProxy.proxyUrl" .) -}} -{{- $useHTTPS := .Values.clients.https.enabled -}} -{{- $endpoints := .Values.serviceMonitor.endpoints }} -{{- range $endpoints }} -{{- $_ := set . "proxyUrl" $proxyURL }} -{{- if $useHTTPS -}} -{{- if (hasKey . "params") }} -{{- $_ := set (get . "params") "_scheme" (list "https") }} -{{- else }} -{{- $_ := set . "params" (dict "_scheme" (list "https")) }} -{{- end }} -{{- end }} -{{- end }} -{{- toYaml $endpoints }} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml deleted file mode 100644 index f1a8e7232..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients-rbac.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.client.name" . }} -{{- if and .Values.clients.https.enabled .Values.clients.https.useServiceAccountCredentials }} -- nonResourceURLs: ["/metrics"] - verbs: ["get"] -{{- if .Values.clients.rbac.additionalRules }} -{{ toYaml .Values.clients.rbac.additionalRules }} -{{- end }} -{{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.client.name" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.client.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: true - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - - 'emptyDir' - - 'hostPath' - allowedHostPaths: - - pathPrefix: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - readOnly: true -{{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients.yaml deleted file mode 100644 index 3775d17b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-clients.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- if .Values.clients }}{{- if .Values.clients.enabled }} -apiVersion: apps/v1 -{{- if .Values.clients.deployment.enabled }} -kind: Deployment -{{- else }} -kind: DaemonSet -{{- end }} -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} - pushprox-exporter: "client" -spec: - {{- if .Values.clients.deployment.enabled }} - replicas: {{ .Values.clients.deployment.replicas }} - {{- end }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.client.labels" . | nindent 8 }} - spec: - {{- if .Values.clients.affinity }} - affinity: {{ toYaml .Values.clients.affinity | nindent 8 }} - {{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.clients.tolerations }} -{{ toYaml .Values.clients.tolerations | indent 8 }} -{{- end }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet - serviceAccountName: {{ template "pushProxy.client.name" . }} - containers: - - name: pushprox-client - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: - {{- range .Values.clients.command }} - - {{ . | quote }} - {{- end }} - args: - - --fqdn=$(HOST_IP) - - --proxy-url=$(PROXY_URL) - - --metrics-addr=$(PORT) - - --allow-port={{ required "Need .Values.metricsPort to configure client to be allowed to scrape metrics at port" .Values.metricsPort}} - {{- if .Values.clients.useLocalhost }} - - --use-localhost - {{- end }} - {{- if .Values.clients.https.enabled }} - {{- if .Values.clients.https.insecureSkipVerify }} - - --insecure-skip-verify - {{- end }} - {{- if .Values.clients.https.useServiceAccountCredentials }} - - --token-path=/var/run/secrets/kubernetes.io/serviceaccount/token - {{- end }} - {{- if .Values.clients.https.certDir }} - - --tls.cert=/etc/ssl/push-proxy/push-proxy.pem - - --tls.key=/etc/ssl/push-proxy/push-proxy-key.pem - - --tls.cacert=/etc/ssl/push-proxy/push-proxy-ca-cert.pem - {{- end }} - {{- end }} - env: - - name: HOST_IP - valueFrom: - fieldRef: - fieldPath: status.hostIP - - name: PORT - value: :{{ .Values.clients.port }} - - name: PROXY_URL - value: {{ template "pushProxy.proxyUrl" . }} - securityContext: - runAsNonRoot: true - runAsUser: 1000 - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - volumeMounts: - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - {{- end }} - {{- if .Values.clients.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} - {{- end }} - {{- if and .Values.clients.https.enabled .Values.clients.https.certDir }} - initContainers: - - name: copy-certs - image: {{ template "system_default_registry" . }}{{ .Values.clients.copyCertsImage.repository }}:{{ .Values.clients.copyCertsImage.tag }} - command: - - sh - - -c - - | - echo "Searching for files to copy within the source volume" - echo "cert: ${CERT_FILE_NAME}" - echo "key: ${KEY_FILE_NAME}" - echo "cacert: ${CACERT_FILE_NAME}" - - CERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CERT_FILE_NAME}" | sort -r | head -n 1) - KEY_FILE_SOURCE=$(find /etc/source/ -type f -name "${KEY_FILE_NAME}" | sort -r | head -n 1) - CACERT_FILE_SOURCE=$(find /etc/source/ -type f -name "${CACERT_FILE_NAME}" | sort -r | head -n 1) - - test -z ${CERT_FILE_SOURCE} && echo "Failed to find cert file" && exit 1 - test -z ${KEY_FILE_SOURCE} && echo "Failed to find key file" && exit 1 - test -z ${CACERT_FILE_SOURCE} && echo "Failed to find cacert file" && exit 1 - - echo "Copying cert file from $CERT_FILE_SOURCE to $CERT_FILE_TARGET" - cp $CERT_FILE_SOURCE $CERT_FILE_TARGET || exit 1 - chmod 444 $CERT_FILE_TARGET || exit 1 - - echo "Copying key file from $KEY_FILE_SOURCE to $KEY_FILE_TARGET" - cp $KEY_FILE_SOURCE $KEY_FILE_TARGET || exit 1 - chmod 444 $KEY_FILE_TARGET || exit 1 - - echo "Copying cacert file from $CACERT_FILE_SOURCE to $CACERT_FILE_TARGET" - cp $CACERT_FILE_SOURCE $CACERT_FILE_TARGET || exit 1 - chmod 444 $CACERT_FILE_TARGET || exit 1 - env: - - name: CERT_FILE_NAME - value: {{ required "Need a TLS cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.certFile }} - - name: KEY_FILE_NAME - value: {{ required "Need a TLS key file for scraping metrics endpoint over HTTPs" .Values.clients.https.keyFile }} - - name: CACERT_FILE_NAME - value: {{ required "Need a TLS CA cert file for scraping metrics endpoint over HTTPs" .Values.clients.https.caCertFile }} - - name: CERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy.pem - - name: KEY_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-key.pem - - name: CACERT_FILE_TARGET - value: /etc/ssl/push-proxy/push-proxy-ca-cert.pem - securityContext: - runAsNonRoot: false - volumeMounts: - - name: metrics-cert-dir-source - mountPath: /etc/source - readOnly: true - - name: metrics-cert-dir - mountPath: /etc/ssl/push-proxy - volumes: - - name: metrics-cert-dir-source - hostPath: - path: {{ required "Need access to volume on host with the SSL cert files to use HTTPs" .Values.clients.https.certDir }} - - name: metrics-cert-dir - emptyDir: {} - {{- end }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml deleted file mode 100644 index 147eb4374..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy-rbac.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -rules: -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "pushProxy.proxy.name" . }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "pushProxy.proxy.name" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "pushProxy.proxy.name" . }} -subjects: - - kind: ServiceAccount - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ include "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy.yaml deleted file mode 100644 index 571e13138..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-proxy.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.proxy }}{{ if .Values.proxy.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} - pushprox-exporter: "proxy" -spec: - selector: - matchLabels: {{ include "pushProxy.proxy.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "pushProxy.proxy.labels" . | nindent 8 }} - spec: - securityContext: - runAsNonRoot: true - runAsUser: 1000 - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- if .Values.proxy.nodeSelector }} -{{ toYaml .Values.proxy.nodeSelector | indent 8 }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- if .Values.proxy.tolerations }} -{{ toYaml .Values.proxy.tolerations | indent 8 }} -{{- end }} - serviceAccountName: {{ template "pushProxy.proxy.name" . }} - containers: - - name: pushprox-proxy - image: {{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }} - command: - {{- range .Values.proxy.command }} - - {{ . | quote }} - {{- end }} - {{- if .Values.proxy.resources }} - resources: {{ toYaml .Values.proxy.resources | nindent 10 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.proxy.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -spec: - ports: - - name: pp-proxy - port: {{ required "Need .Values.proxy.port to configure proxy" .Values.proxy.port }} - protocol: TCP - targetPort: {{ .Values.proxy.port }} - selector: {{ include "pushProxy.proxy.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml deleted file mode 100644 index 7f961d6f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/templates/pushprox-servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.serviceMonitor }}{{- if .Values.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "pushprox.serviceMonitor.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.serviceMonitor.labels" . | nindent 4 }} -spec: - endpoints: {{include "pushProxy.serviceMonitor.endpoints" . | nindent 4 }} - jobLabel: component - podTargetLabels: - - component - - pushprox-exporter - namespaceSelector: - matchNames: - - {{ template "pushprox.namespace" . }} - selector: - matchLabels: {{ include "pushProxy.client.labels" . | nindent 6 }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ template "pushProxy.client.name" . }} - namespace: {{ template "pushprox.namespace" . }} - labels: {{ include "pushProxy.client.labels" . | nindent 4 }} -spec: - ports: - - name: metrics - port: {{ required "Need .Values.metricsPort to configure client to listen to metrics at port" .Values.metricsPort}} - protocol: TCP - targetPort: {{ .Values.metricsPort }} - selector: {{ include "pushProxy.client.labels" . | nindent 4 }} -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/values.yaml deleted file mode 100644 index 6ad1eab4d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/rkeScheduler/values.yaml +++ /dev/null @@ -1,111 +0,0 @@ -# Default values for rancher-pushprox. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Default image containing both the proxy and the client was generated from the following Dockerfile -# https://github.com/prometheus-community/PushProx/blob/eeadbe766641699129920ccfaaaa30a85c67fe81/Dockerfile#L1-L15 - -# Note: if using a cloud provider, the nodes that contain the PushProxy client must allow the node(s) that contain(s) -# the PushProxy proxy to communicate with it on port {{ .Values.clients.port }}. If you have special restrictions, -# (i.e. client should only run on etcd nodes and only control plane should have access to the port on the etcd node), -# you will need to set the clients / proxy nodeSelector and tolerations accordingly - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - -namespaceOverride: "" - -# The component that is being monitored (i.e. etcd) -component: "component" - -# The port containing the metrics that need to be scraped -metricsPort: 2739 - -# Configure ServiceMonitor that monitors metrics from the metricsPort endpoint -serviceMonitor: - enabled: true - # A list of endpoints that will be added to the ServiceMonitor based on the Endpoint spec - # Source: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#endpoint - # By default, proxyUrl and params._scheme will be overridden based on other values - endpoints: - - port: metrics - -clients: - enabled: true - # The port which the PushProx client will post PushProx metrics to - port: 9369 - # If unset, this will default to the URL for the proxy service: http://pushprox-{{component}}-proxy.{{namepsace}}.svc.cluster.local:{{proxy.port}} - # Should be modified if the clients are being deployed outside the cluster where the proxy rests, otherwise leave it null - proxyUrl: "" - # If set to true, the client will forward any requests from the host IP to 127.0.0.1 - # It will only allow proxy requests to the metricsPort specified - useLocalhost: false - # Configuration for accessing metrics via HTTPS - https: - # Does the client require https to access the metrics? - enabled: false - # If set to true, the client will create a service account with adequate permissions and set a flag - # on the client to use the service account token provided by it to make authorized scrape requests - useServiceAccountCredentials: false - # If set to true, the client will disable SSL security checks - insecureSkipVerify: false - # Directory on host where necessary TLS cert and key to scrape metrics can be found - certDir: "" - # Filenames for files located in .Values.clients.https.certDir that correspond to TLS settings - certFile: "" - keyFile: "" - caCertFile: "" - - rbac: - # Additional permissions to provide to the ServiceAccount bound to the client - # This can be used to provide additional permissions for the client to scrape metrics from the k8s API - # Only enabled if clients.https.enabled and clients.https.useServiceAccountCredentials are true - additionalRules: [] - - # Resource limits - resources: {} - - # Options to select all nodes to deploy client DaemonSet on - nodeSelector: {} - tolerations: [] - affinity: {} - - image: - repository: rancher/pushprox-client - tag: v0.1.0-rancher2-client - command: ["pushprox-client"] - - copyCertsImage: - repository: rancher/mirrored-library-busybox - tag: 1.31.1 - - # The default intention of rancher-pushprox clients is to scrape hostNetwork metrics across all nodes. - # This can be used to scrape internal Kubernetes components or DaemonSets of hostNetwork Pods in - # situations where a cloud provider firewall prevents Pod-To-Host communication but not Pod-To-Pod. - # However, if the underlying hostNetwork Pod that is being scraped is managed by a Deployment, - # this advanced option enables users to deploy the client as a Deployment instead of a DaemonSet. - # If a user deploys this feature and the underlying Deployment's number of replicas changes, the user will - # be responsible for upgrading this chart accordingly to the right number of replicas. - deployment: - enabled: false - replicas: 0 - -proxy: - enabled: true - # The port through which PushProx clients will communicate to the proxy - port: 8080 - - # Resource limits - resources: {} - - # Options to select a node to run a single proxy deployment on - nodeSelector: {} - tolerations: [] - - image: - repository: rancher/pushprox-proxy - tag: v0.1.0-rancher2-proxy - command: ["pushprox-proxy"] \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/.helmignore b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/.helmignore deleted file mode 100644 index 0e8a0eb36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/.helmignore +++ /dev/null @@ -1,23 +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 -*.orig -*~ -# Various IDEs -.project -.idea/ -*.tmproj -.vscode/ diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/Chart.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/Chart.yaml deleted file mode 100644 index fba9162f2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/Chart.yaml +++ /dev/null @@ -1,15 +0,0 @@ -annotations: - catalog.cattle.io/hidden: "true" - catalog.cattle.io/os: windows - catalog.rancher.io/certified: rancher - catalog.rancher.io/namespace: cattle-monitoring-system - catalog.rancher.io/release-name: rancher-windows-exporter -apiVersion: v1 -appVersion: 0.0.4 -description: Sets up monitoring metrics from Windows nodes via Prometheus windows-exporter -maintainers: -- email: arvind.iyengar@rancher.com - name: aiyengar2 -name: windowsExporter -type: application -version: 0.1.0 diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/README.md b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/README.md deleted file mode 100644 index 6115b6f25..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/README.md +++ /dev/null @@ -1,17 +0,0 @@ -# rancher-windows-exporter - -A Rancher chart based on the [prometheus-community/windows-exporter](https://github.com/prometheus-community/windows_exporter) project (previously called wmi-exporter) that sets up a DaemonSet of clients that can scrape windows-exporter metrics from Windows nodes on a Kubernetes cluster. - -A [Prometheus Operator](https://github.com/coreos/prometheus-operator) ServiceMonitor CR and PrometheusRule CR are also created by this chart to collect metrics and add some recording rules to map `windows_` series with their OS-agnostic counterparts. - -## Node Requirements - -Since Windows does not support privileged pods, this chart expects a Named Pipe (`\\.\pipe\rancher_wins`) to exist on the Windows host that allows containers to communicate with the host. This is done by deploying a [rancher/wins](https://github.com/rancher/wins) server on the host. - -The image used by the chart, [windows_exporter-package](https://github.com/rancher/windows_exporter-package), is configured to create a wins client that communicates with the wins server, alongside a running copy of a particular version of [windows-exporter](https://github.com/prometheus-community/windows_exporter). Through the wins client and wins server, the windows-exporter is able to communicate directly with the Windows host to collect metrics and expose them. - -If the cluster you are installing this chart on is a custom cluster that was created via RKE1 with Windows Support enabled, your nodes should already have the wins server running; this should have been added as part of [the bootstrapping process for adding the Windows node onto your RKE1 cluster](https://github.com/rancher/rancher/blob/master/package/windows/bootstrap.ps1). - -## Configuration - -See [rancher-monitoring](https://github.com/rancher/charts/tree/gh-pages/packages/rancher-monitoring) for an example of how this chart can be used. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/check-wins-version.ps1 b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/check-wins-version.ps1 deleted file mode 100644 index f8452bbef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/check-wins-version.ps1 +++ /dev/null @@ -1,20 +0,0 @@ -$ErrorActionPreference = 'Stop' - -$winsPath = "c:\Windows\wins.exe" -$minWinsVersion = [System.Version]"0.1.0" - -function Get-Wins-Version -{ - $winsAppInfo = Invoke-Expression "& $winsPath cli app info | ConvertFrom-Json" - return [System.Version]($winsAppInfo.Server.Version.substring(1)) -} - -# Wait till the wins version installed is at least v0.1.0 -$winsVersion = Get-Wins-Version -while ($winsVersion -lt $minWinsVersion) { - Write-Host $('wins on host must be at least v{0}, found v{1}. Checking again in 10 seconds...' -f $minWinsVersion, $winsVersion) - Start-Sleep -s 10 - $winsVersion = Get-Wins-Version -} - -Write-Host $('Detected wins version on host is v{0}, which is >v{1}. Continuing with installation...' -f $winsVersion, $minWinsVersion) diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/proxy-entry.ps1 b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/proxy-entry.ps1 deleted file mode 100644 index 9d0581b66..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/proxy-entry.ps1 +++ /dev/null @@ -1,11 +0,0 @@ -# default -$listenPort = "9796" - -if ($env:LISTEN_PORT) { - $listenPort = $env:LISTEN_PORT -} - -# format "UDP:4789 TCP:8080" -$winsPublish = $('TCP:{0}' -f $listenPort) - -wins.exe cli proxy --publish $winsPublish diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/run.ps1 b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/run.ps1 deleted file mode 100644 index c2e980a3f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/scripts/run.ps1 +++ /dev/null @@ -1,78 +0,0 @@ -$ErrorActionPreference = 'Stop' - -function Create-Directory -{ - param ( - [parameter(Mandatory = $false, ValueFromPipeline = $true)] [string]$Path - ) - - if (Test-Path -Path $Path) { - if (-not (Test-Path -Path $Path -PathType Container)) { - # clean the same path file - Remove-Item -Recurse -Force -Path $Path -ErrorAction Ignore | Out-Null - } - - return - } - - New-Item -Force -ItemType Directory -Path $Path | Out-Null -} - -function Transfer-File -{ - param ( - [parameter(Mandatory = $true)] [string]$Src, - [parameter(Mandatory = $true)] [string]$Dst - ) - - if (Test-Path -PathType leaf -Path $Dst) { - $dstHasher = Get-FileHash -Path $Dst - $srcHasher = Get-FileHash -Path $Src - if ($dstHasher.Hash -eq $srcHasher.Hash) { - return - } - } - - $null = Copy-Item -Force -Path $Src -Destination $Dst -} - -# Copy binary into host -Create-Directory -Path "c:\host\etc\windows-exporter" -Transfer-File -Src "c:\etc\windows-exporter\windows-exporter.exe" -Dst "c:\host\etc\windows-exporter\windows-exporter.exe" - -# Copy binary into prefix path, since wins expects the same path on the host and on the container -$prefixPath = 'c:\' -if ($env:CATTLE_PREFIX_PATH) { - $prefixPath = $env:CATTLE_PREFIX_PATH -} -$winsDirPath = $('{0}etc\windows-exporter' -f $prefixPath) -$winsPath = $('{0}\windows-exporter.exe' -f $winsDirPath) - -Create-Directory -Path $winsDirPath -Transfer-File -Src "c:\etc\windows-exporter\windows-exporter.exe" $winsPath - -# Run wins with defaults -$listenPort = "9796" -$enabledCollectors = "net,os,service,system,cpu,cs,logical_disk" -$maxRequests = "5" - -if ($env:LISTEN_PORT) { - $listenPort = $env:LISTEN_PORT -} - -if ($env:ENABLED_COLLECTORS) { - $enabledCollectors = $env:ENABLED_COLLECTORS -} - -if ($env:MAX_REQUESTS) { - $maxRequests = $env:MAX_REQUESTS -} - -# format "UDP:4789 TCP:8080" -$winsExposes = $('TCP:{0}' -f $listenPort) - -# format "--a=b --c=d" -$winsArgs = $('--collectors.enabled={0} --telemetry.addr=:{1} --telemetry.max-requests={2} --telemetry.path=/metrics' -f $enabledCollectors, $listenPort, $maxRequests) - - -wins.exe cli prc run --path $winsPath --exposes $winsExposes --args "$winsArgs" diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/_helpers.tpl deleted file mode 100644 index 4fc68cf97..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/_helpers.tpl +++ /dev/null @@ -1,73 +0,0 @@ -# Rancher - -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -# General - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -The components in this chart create additional resources that expand the longest created name strings. -The longest name that gets created adds and extra 37 characters, so truncation should be 63-35=26. -*/}} -{{- define "windowsExporter.name" -}} -{{ printf "%s-windows-exporter" .Release.Name }} -{{- end -}} - -{{- define "windowsExporter.namespace" -}} -{{- default .Release.Namespace .Values.namespaceOverride -}} -{{- end -}} - -{{- define "windowsExporter.labels" -}} -k8s-app: {{ template "windowsExporter.name" . }} -release: {{ .Release.Name }} -component: "windows-exporter" -provider: kubernetes -{{- end -}} - -# Client - -{{- define "windowsExporter.client.nodeSelector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: windows -{{- else -}} -kubernetes.io/os: windows -{{- end -}} -{{- if .Values.clients.nodeSelector }} -{{ toYaml .Values.clients.nodeSelector }} -{{- end }} -{{- end -}} - -{{- define "windowsExporter.client.tolerations" -}} -{{- if .Values.clients.tolerations -}} -{{ toYaml .Values.clients.tolerations }} -{{- else -}} -- operator: Exists -{{- end -}} -{{- end -}} - -{{- define "windowsExporter.client.env" -}} -- name: LISTEN_PORT - value: {{ required "Need .Values.clients.port to figure out where to get metrics from" .Values.clients.port | quote }} -{{- if .Values.clients.enabledCollectors }} -- name: ENABLED_COLLECTORS - value: {{ .Values.clients.enabledCollectors | quote }} -{{- end }} -{{- if .Values.clients.env }} -{{ toYaml .Values.clients.env }} -{{- end }} -{{- end -}} - -{{- define "windowsExporter.validatePathPrefix" -}} -{{- if .Values.global.cattle.rkeWindowsPathPrefix -}} -{{- $prefixPath := (.Values.global.cattle.rkeWindowsPathPrefix | replace "/" "\\") -}} -{{- if (not (hasSuffix "\\" $prefixPath)) -}} -{{- fail (printf ".Values.global.cattle.rkeWindowsPathPrefix must end in '/' or '\\', found %s" $prefixPath) -}} -{{- end -}} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/configmap.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/configmap.yaml deleted file mode 100644 index e7647a407..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/configmap.yaml +++ /dev/null @@ -1,10 +0,0 @@ -{{- if .Values.clients }}{{ if .Values.clients.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "windowsExporter.name" . }}-scripts - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -data: -{{ (.Files.Glob "scripts/*").AsConfig | indent 2 }} -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/daemonset.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/daemonset.yaml deleted file mode 100644 index a64d19a3e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/daemonset.yaml +++ /dev/null @@ -1,77 +0,0 @@ -{{- if .Values.clients }}{{ if .Values.clients.enabled }} -{{ include "windowsExporter.validatePathPrefix" . }} -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -spec: - selector: - matchLabels: {{ include "windowsExporter.labels" . | nindent 6 }} - template: - metadata: - labels: {{ include "windowsExporter.labels" . | nindent 8 }} - spec: - nodeSelector: {{ include "windowsExporter.client.nodeSelector" . | nindent 8 }} - tolerations: {{ include "windowsExporter.client.tolerations" . | nindent 8 }} - serviceAccountName: {{ template "windowsExporter.name" . }} - containers: - - name: exporter-node-proxy - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: ["pwsh", "-f", "c:/scripts/proxy-entry.ps1"] - ports: - - name: http - containerPort: {{ required "Need .Values.clients.port to figure out where to get metrics from" .Values.clients.port }} - env: {{ include "windowsExporter.client.env" . | nindent 10 }} -{{- if .Values.resources }} - resources: {{ toYaml .Values.clients.proxy.resources | nindent 10 }} -{{- end }} - volumeMounts: - - name: wins-pipe-proxy - mountPath: \\.\pipe\rancher_wins_proxy - - name: exporter-scripts - mountPath: c:/scripts/ - - name: exporter-node - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: ["pwsh", "-f", "c:/scripts/run.ps1"] -{{- if .Values.clients.args }} - args: {{ .Values.clients.args }} -{{- end }} - env: {{ include "windowsExporter.client.env" . | nindent 8 }} - - name: CATTLE_PREFIX_PATH - value: {{ default "c:\\" .Values.global.cattle.rkeWindowsPathPrefix | replace "/" "\\" }} -{{- if .Values.resources }} - resources: {{ toYaml .Values.clients.resources | nindent 10 }} -{{- end }} - volumeMounts: - - name: wins-pipe - mountPath: \\.\pipe\rancher_wins - - name: binary-host-path - mountPath: c:/host/etc/windows-exporter - - name: exporter-scripts - mountPath: c:/scripts/ - initContainers: - - name: check-wins-version - image: {{ template "system_default_registry" . }}{{ .Values.clients.image.repository }}:{{ .Values.clients.image.tag }} - command: ["pwsh", "-f", "c:/scripts/check-wins-version.ps1"] - volumeMounts: - - name: wins-pipe - mountPath: \\.\pipe\rancher_wins - - name: exporter-scripts - mountPath: c:/scripts/ - volumes: - - name: wins-pipe - hostPath: - path: \\.\pipe\rancher_wins - - name: wins-pipe-proxy - hostPath: - path: \\.\pipe\rancher_wins_proxy - - name: binary-host-path - hostPath: - path: {{ default "c:\\" .Values.global.cattle.rkeWindowsPathPrefix | replace "\\" "/" }}etc/windows-exporter - type: DirectoryOrCreate - - name: exporter-scripts - configMap: - name: {{ template "windowsExporter.name" . }}-scripts -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/rbac.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/rbac.yaml deleted file mode 100644 index ebec8f235..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/rbac.yaml +++ /dev/null @@ -1,78 +0,0 @@ -{{- if .Values.clients }}{{ if .Values.clients.enabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -rules: -- apiGroups: ['authentication.k8s.io'] - resources: ['tokenreviews'] - verbs: ['create'] -- apiGroups: ['authorization.k8s.io'] - resources: ['subjectaccessreviews'] - verbs: ['create'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: ['{{ template "windowsExporter.name" . }}'] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "windowsExporter.name" . }} -subjects: -- kind: ServiceAccount - name: {{ template "windowsExporter.name" . }} - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -{{- if .Values.clients.imagePullSecrets }} -imagePullSecrets: {{ toYaml .Values.clients.imagePullSecrets | nindent 2 }} -{{- end }} ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'RunAsAny' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 0 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' - - 'hostPath' - allowedHostPaths: - - pathPrefix: \\.\pipe\rancher_wins - - pathPrefix: \\.\pipe\rancher_wins_proxy - - pathPrefix: c:/etc/windows-exporter -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/service.yaml deleted file mode 100644 index 03b87faae..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/service.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.clients }}{{- if and .Values.clients.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} - labels: {{ include "windowsExporter.labels" . | nindent 4 }} -spec: - ports: - - name: windows-metrics - port: {{ required "Need .Values.clients.port to figure out where to get metrics from" .Values.clients.port }} - protocol: TCP - targetPort: {{ .Values.clients.port }} - selector: {{ include "windowsExporter.labels" . | nindent 4 }} -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/servicemonitor.yaml deleted file mode 100644 index a2c2f0b54..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/templates/servicemonitor.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and .Values.serviceMonitor .Values.clients }}{{- if and .Values.serviceMonitor.enabled .Values.clients.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - labels: {{ include "windowsExporter.labels" . | nindent 4 }} - name: {{ template "windowsExporter.name" . }} - namespace: {{ template "windowsExporter.namespace" . }} -spec: - selector: - matchLabels: {{ include "windowsExporter.labels" . | nindent 6 }} - namespaceSelector: - matchNames: - - {{ template "windowsExporter.namespace" . }} - jobLabel: component - podTargetLabels: - - component - endpoints: - - port: windows-metrics - metricRelabelings: - - sourceLabels: [__name__] - regex: 'wmi_(.*)' - replacement: 'windows_$1' - targetLabel: __name__ - - sourceLabels: [__name__] - regex: windows_mssql_transactions_active_total - replacement: 'windows_mssql_transactions_active' - targetLabel: __name__ - - sourceLabels: [volume, nic] - regex: (.*);(.*) - separator: '' - targetLabel: device - action: replace - replacement: $1$2 - - sourceLabels: [__name__] - regex: windows_cs_logical_processors - replacement: 'system' - targetLabel: mode - relabelings: - - separator: ':' - sourceLabels: - - __meta_kubernetes_pod_host_ip - - __meta_kubernetes_pod_container_port_number - targetLabel: instance -{{- end }}{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/values.yaml deleted file mode 100644 index 6130890bd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/charts/windowsExporter/values.yaml +++ /dev/null @@ -1,46 +0,0 @@ -# Default values for rancher-windows-exporter. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Configuration - -global: - cattle: - systemDefaultRegistry: "" - rkeWindowsPathPrefix: "c:\\" - -# Configure ServiceMonitor that monitors metrics -serviceMonitor: - enabled: true - -## Components scraping metrics from Windows nodes -## -clients: - enabled: true - - port: 9796 - image: - repository: rancher/windows_exporter-package - tag: v0.0.1 - os: "windows" - - # Specify the IP addresses of nodes that you want to collect metrics from - endpoints: [] - - # Get more details on https://github.com/prometheus-community/windows_exporter - args: [] - env: {} - enabledCollectors: "net,os,service,system,cpu,cs,logical_disk,tcp,memory,container" - - # Resource limits - resources: {} - - # Options to select nodes to target for scraping Windows metrics - nodeSelector: {} # Note: {kubernetes.io/os: windows} is default and cannot be overridden - tolerations: [] # Note: if not specified, the default option is to use [{operator: Exists}] - - # Image Pull Secrets for the service account used by the clients - imagePullSecrets: {} - - proxy: - resources: {} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/nginx.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/nginx.json deleted file mode 100644 index 347c9eb05..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/nginx.json +++ /dev/null @@ -1,1463 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "5.2.1" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "5.0.0" - }, - { - "type": "panel", - "id": "singlestat", - "name": "Singlestat", - "version": "5.0.0" - } - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - }, - { - "datasource": "${DS_PROMETHEUS}", - "enable": true, - "expr": "sum(changes(nginx_ingress_controller_config_last_reload_successful_timestamp_seconds{instance!=\"unknown\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[30s])) by (controller_class)", - "hide": false, - "iconColor": "rgba(255, 96, 96, 1)", - "limit": 100, - "name": "Config Reloads", - "showIn": 0, - "step": "30s", - "tagKeys": "controller_class", - "tags": [], - "titleFormat": "Config Reloaded", - "type": "tags" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "iteration": 1534359654832, - "links": [], - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "${DS_PROMETHEUS}", - "format": "ops", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 0, - "y": 0 - }, - "id": 20, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "round(sum(irate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[2m])), 0.001)", - "format": "time_series", - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Controller Request Volume", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "${DS_PROMETHEUS}", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 6, - "y": 0 - }, - "id": 82, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(avg_over_time(nginx_ingress_controller_nginx_process_connections{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",state=\"active\"}[2m]))", - "format": "time_series", - "instant": false, - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Controller Connections", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "${DS_PROMETHEUS}", - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 80, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": false - }, - "gridPos": { - "h": 3, - "w": 6, - "x": 12, - "y": 0 - }, - "id": 21, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",status!~\"[4-5].*\"}[2m])) / sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\"}[2m]))", - "format": "time_series", - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "95, 99, 99.5", - "title": "Controller Success Rate (non-4|5xx responses)", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "${DS_PROMETHEUS}", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 3, - "x": 18, - "y": 0 - }, - "id": 81, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "avg(irate(nginx_ingress_controller_success{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[1m])) * 60", - "format": "time_series", - "instant": false, - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Config Reloads", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "total" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "${DS_PROMETHEUS}", - "decimals": 0, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 3, - "x": 21, - "y": 0 - }, - "id": 83, - "interval": null, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": true, - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "count(nginx_ingress_controller_config_last_reload_successful{controller_pod=~\"$controller\",controller_namespace=~\"$namespace\"} == 0)", - "format": "time_series", - "instant": true, - "intervalFactor": 1, - "refId": "A", - "step": 4 - } - ], - "thresholds": "", - "title": "Last Config Failed", - "transparent": false, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "decimals": 2, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 3 - }, - "height": "200px", - "id": 86, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": false, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "repeatDirection": "h", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "round(sum(irate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress), 0.001)", - "format": "time_series", - "hide": false, - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "metric": "network", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Ingress Request Volume", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max - istio-proxy": "#890f02", - "max - master": "#bf1b00", - "max - prometheus": "#bf1b00" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "decimals": 2, - "editable": false, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 3 - }, - "id": 87, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": false, - "hideEmpty": true, - "hideZero": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": 300, - "sort": "avg", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",ingress=~\"$ingress\",status!~\"[4-5].*\"}[2m])) by (ingress) / sum(rate(nginx_ingress_controller_requests{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", - "format": "time_series", - "instant": false, - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "metric": "container_memory_usage:sort_desc", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Ingress Success Rate (non-4|5xx responses)", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 1, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "decimals": 2, - "editable": true, - "error": false, - "fill": 1, - "grid": {}, - "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 10 - }, - "height": "200px", - "id": 32, - "isNew": true, - "legend": { - "alignAsTable": false, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sideWidth": 200, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum (irate (nginx_ingress_controller_request_size_sum{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m]))", - "format": "time_series", - "instant": false, - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "Received", - "metric": "network", - "refId": "A", - "step": 10 - }, - { - "expr": "- sum (irate (nginx_ingress_controller_response_size_sum{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m]))", - "format": "time_series", - "hide": false, - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "Sent", - "metric": "network", - "refId": "B", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Network I/O pressure", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "transparent": false, - "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": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max - istio-proxy": "#890f02", - "max - master": "#bf1b00", - "max - prometheus": "#bf1b00" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "decimals": 2, - "editable": false, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 10 - }, - "id": 77, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sideWidth": 200, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(nginx_ingress_controller_nginx_process_resident_memory_bytes{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}) ", - "format": "time_series", - "instant": false, - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "nginx", - "metric": "container_memory_usage:sort_desc", - "refId": "A", - "step": 10 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Average Memory Usage", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "max - istio-proxy": "#890f02", - "max - master": "#bf1b00" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "decimals": 3, - "editable": false, - "error": false, - "fill": 0, - "grid": {}, - "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 10 - }, - "height": "", - "id": 79, - "isNew": true, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sort": null, - "sortDesc": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg (rate (nginx_ingress_controller_nginx_process_cpu_seconds_total{controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\"}[2m])) ", - "format": "time_series", - "interval": "10s", - "intervalFactor": 1, - "legendFormat": "nginx", - "metric": "container_cpu", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Average CPU Usage", - "tooltip": { - "msResolution": true, - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "transparent": false, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "none", - "label": "cores", - "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 - } - }, - { - "columns": [], - "datasource": "${DS_PROMETHEUS}", - "fontSize": "100%", - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 16 - }, - "hideTimeOverride": false, - "id": 75, - "links": [], - "pageSize": 7, - "repeat": null, - "repeatDirection": "h", - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": true - }, - "styles": [ - { - "alias": "Ingress", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "ingress", - "preserveFormat": false, - "sanitize": false, - "thresholds": [], - "type": "string", - "unit": "short" - }, - { - "alias": "Requests", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #A", - "thresholds": [ - "" - ], - "type": "number", - "unit": "ops" - }, - { - "alias": "Errors", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #B", - "thresholds": [], - "type": "number", - "unit": "ops" - }, - { - "alias": "P50 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": false, - "pattern": "Value #C", - "thresholds": [], - "type": "number", - "unit": "dtdurations" - }, - { - "alias": "P90 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value #D", - "thresholds": [], - "type": "number", - "unit": "dtdurations" - }, - { - "alias": "P99 Latency", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Value #E", - "thresholds": [], - "type": "number", - "unit": "dtdurations" - }, - { - "alias": "IN", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Value #F", - "thresholds": [ - "" - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "Time", - "thresholds": [], - "type": "hidden", - "unit": "short" - }, - { - "alias": "OUT", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "mappingType": 1, - "pattern": "Value #G", - "thresholds": [], - "type": "number", - "unit": "Bps" - } - ], - "targets": [ - { - "expr": "histogram_quantile(0.50, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.90, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "refId": "D" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(nginx_ingress_controller_request_duration_seconds_bucket{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (le, ingress))", - "format": "table", - "hide": false, - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ destination_service }}", - "refId": "E" - }, - { - "expr": "sum(irate(nginx_ingress_controller_request_size_sum{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", - "format": "table", - "hide": false, - "instant": true, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "refId": "F" - }, - { - "expr": "sum(irate(nginx_ingress_controller_response_size_sum{ingress!=\"\",controller_pod=~\"$controller\",controller_class=~\"$controller_class\",controller_namespace=~\"$namespace\",ingress=~\"$ingress\"}[2m])) by (ingress)", - "format": "table", - "instant": true, - "intervalFactor": 1, - "legendFormat": "{{ ingress }}", - "refId": "G" - } - ], - "timeFrom": null, - "title": "Ingress Percentile Response Times and Transfer Rates", - "transform": "table", - "transparent": false, - "type": "table" - }, - { - "columns": [ - { - "text": "Current", - "value": "current" - } - ], - "datasource": "${DS_PROMETHEUS}", - "fontSize": "100%", - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 24 - }, - "height": "1024", - "id": 85, - "links": [], - "pageSize": 7, - "scroll": true, - "showHeader": true, - "sort": { - "col": 1, - "desc": false - }, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "date" - }, - { - "alias": "TTL", - "colorMode": "cell", - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "pattern": "Current", - "thresholds": [ - "0", - "691200" - ], - "type": "number", - "unit": "s" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "decimals": 2, - "pattern": "/.*/", - "thresholds": [], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "avg(nginx_ingress_controller_ssl_expire_time_seconds{kubernetes_pod_name=~\"$controller\",namespace=~\"$namespace\",ingress=~\"$ingress\"}) by (host) - time()", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{ host }}", - "metric": "gke_letsencrypt_cert_expiration", - "refId": "A", - "step": 1 - } - ], - "title": "Ingress Certificate Expiry", - "transform": "timeseries_aggregations", - "type": "table" - } - ], - "refresh": "5s", - "schemaVersion": 16, - "style": "dark", - "tags": [ - "nginx" - ], - "templating": { - "list": [ - { - "hide": 0, - "label": "datasource", - "name": "DS_PROMETHEUS", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": ".*", - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "${DS_PROMETHEUS}", - "hide": 0, - "includeAll": true, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [], - "query": "label_values(nginx_ingress_controller_config_hash, controller_namespace)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "${DS_PROMETHEUS}", - "hide": 0, - "includeAll": true, - "label": "Controller Class", - "multi": false, - "name": "controller_class", - "options": [], - "query": "label_values(nginx_ingress_controller_config_hash{namespace=~\"$namespace\"}, controller_class) ", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": { - "text": "All", - "value": "$__all" - }, - "datasource": "${DS_PROMETHEUS}", - "hide": 0, - "includeAll": true, - "label": "Controller", - "multi": false, - "name": "controller", - "options": [], - "query": "label_values(nginx_ingress_controller_config_hash{namespace=~\"$namespace\",controller_class=~\"$controller_class\"}, controller_pod) ", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".*", - "current": { - "tags": [], - "text": "All", - "value": "$__all" - }, - "datasource": "${DS_PROMETHEUS}", - "hide": 0, - "includeAll": true, - "label": "Ingress", - "multi": false, - "name": "ingress", - "options": [], - "query": "label_values(nginx_ingress_controller_requests{namespace=~\"$namespace\",controller_class=~\"$controller_class\",controller=~\"$controller\"}, ingress) ", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "2m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "NGINX / Ingress Controller", - "uid": "nginx", - "version": 1 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/request-handling-performance.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/request-handling-performance.json deleted file mode 100644 index 5635ae976..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/ingress-nginx/request-handling-performance.json +++ /dev/null @@ -1,981 +0,0 @@ -{ - "__inputs": [ - { - "name": "DS_PROMETHEUS", - "label": "Prometheus", - "description": "", - "type": "datasource", - "pluginId": "prometheus", - "pluginName": "Prometheus" - } - ], - "__requires": [ - { - "type": "grafana", - "id": "grafana", - "name": "Grafana", - "version": "6.6.0" - }, - { - "type": "panel", - "id": "graph", - "name": "Graph", - "version": "" - }, - { - "type": "datasource", - "id": "prometheus", - "name": "Prometheus", - "version": "1.0.0" - } - ], - "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": 9614, - "graphTooltip": 1, - "id": null, - "iteration": 1582146566338, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "description": "Total time taken for nginx and upstream servers to process a request and send a response", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 91, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(\n 0.5,\n sum by (le)(\n rate(\n nginx_ingress_controller_request_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "legendFormat": ".5", - "refId": "D" - }, - { - "expr": "histogram_quantile(\n 0.95,\n sum by (le)(\n rate(\n nginx_ingress_controller_request_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "legendFormat": ".95", - "refId": "B" - }, - { - "expr": "histogram_quantile(\n 0.99,\n sum by (le)(\n rate(\n nginx_ingress_controller_request_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "legendFormat": ".99", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Total request handling time", - "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": null, - "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": "${DS_PROMETHEUS}", - "description": "The time spent on receiving the response from the upstream server", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 0 - }, - "hiddenSeries": false, - "id": 94, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(\n 0.5,\n sum by (le)(\n rate(\n nginx_ingress_controller_response_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": ".5", - "refId": "D" - }, - { - "expr": "histogram_quantile(\n 0.95,\n sum by (le)(\n rate(\n nginx_ingress_controller_response_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "legendFormat": ".95", - "refId": "B" - }, - { - "expr": "histogram_quantile(\n 0.99,\n sum by (le)(\n rate(\n nginx_ingress_controller_response_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "legendFormat": ".99", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Upstream response time", - "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": null, - "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": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 8 - }, - "hiddenSeries": false, - "id": 93, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": " sum by (path)(\n rate(\n nginx_ingress_controller_request_duration_seconds_count{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Request volume by Path", - "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": null, - "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": "${DS_PROMETHEUS}", - "description": "For each path observed, its median upstream response time", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 8 - }, - "hiddenSeries": false, - "id": 98, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(\n .5,\n sum by (le, path)(\n rate(\n nginx_ingress_controller_response_duration_seconds_bucket{\n ingress =~ \"$ingress\"\n }[1m]\n )\n )\n)", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Median upstream response time by Path", - "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": null, - "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": "${DS_PROMETHEUS}", - "description": "Percentage of 4xx and 5xx responses among all responses.", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 16 - }, - "hiddenSeries": false, - "id": 100, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null as zero", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (path) (rate(nginx_ingress_controller_request_duration_seconds_count{\n ingress = \"$ingress\",\n status =~ \"[4-5].*\"\n}[1m])) / sum by (path) (rate(nginx_ingress_controller_request_duration_seconds_count{\n ingress = \"$ingress\",\n}[1m]))", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Response error rate by Path", - "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": null, - "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": "${DS_PROMETHEUS}", - "description": "For each path observed, the sum of upstream request time", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 16 - }, - "hiddenSeries": false, - "id": 102, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (path) (rate(nginx_ingress_controller_response_duration_seconds_sum{ingress = \"$ingress\"}[1m]))", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Upstream time consumed by Path", - "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": null, - "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": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 24 - }, - "hiddenSeries": false, - "id": 101, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": " sum (\n rate(\n nginx_ingress_controller_request_duration_seconds_count{\n ingress =~ \"$ingress\",\n status =~\"[4-5].*\",\n }[1m]\n )\n ) by(path, status)\n", - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }} {{ status }}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Response error volume by Path", - "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": null, - "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": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 24 - }, - "hiddenSeries": false, - "id": 99, - "legend": { - "alignAsTable": true, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum (\n rate (\n nginx_ingress_controller_response_size_sum {\n ingress =~ \"$ingress\",\n }[1m]\n )\n) by (path) / sum (\n rate(\n nginx_ingress_controller_response_size_count {\n ingress =~ \"$ingress\",\n }[1m]\n )\n) by (path)\n", - "hide": false, - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "{{ path }}", - "refId": "D" - }, - { - "expr": " sum (rate(nginx_ingress_controller_response_size_bucket{\n namespace =~ \"$namespace\",\n ingress =~ \"$ingress\",\n }[1m])) by (le)\n", - "hide": true, - "legendFormat": "{{le}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Average response size by Path", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "${DS_PROMETHEUS}", - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 32 - }, - "hiddenSeries": false, - "id": 96, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "options": { - "dataLinks": [] - }, - "percentage": false, - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum (\n rate(\n nginx_ingress_controller_ingress_upstream_latency_seconds_sum {\n ingress =~ \"$ingress\",\n }[1m]\n)) / sum (\n rate(\n nginx_ingress_controller_ingress_upstream_latency_seconds_count {\n ingress =~ \"$ingress\",\n }[1m]\n )\n)\n", - "hide": false, - "instant": false, - "interval": "", - "intervalFactor": 1, - "legendFormat": "average", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Upstream service latency", - "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": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "30s", - "schemaVersion": 22, - "style": "dark", - "tags": [ - "nginx" - ], - "templating": { - "list": [ - { - "hide": 0, - "label": "datasource", - "name": "DS_PROMETHEUS", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": ".*", - "current": {}, - "datasource": "${DS_PROMETHEUS}", - "definition": "label_values(nginx_ingress_controller_requests, ingress) ", - "hide": 0, - "includeAll": true, - "label": "Service Ingress", - "multi": false, - "name": "ingress", - "options": [], - "query": "label_values(nginx_ingress_controller_requests, ingress) ", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "2m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "NGINX / Request Handling Performance", - "uid": "4GFbkOsZk", - "version": 1 - } diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster-nodes.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster-nodes.json deleted file mode 100644 index b8c1ab7e6..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster-nodes.json +++ /dev/null @@ -1,776 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "links": [], - "panels": [ - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\",mode=\"idle\"}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m] ({{instance}})" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_load5 OR avg_over_time(windows_system_processor_queue_length[5m])) by (instance)", - "interval": "", - "legendFormat": "Load[5m] ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(node_load1 OR avg_over_time(windows_system_processor_queue_length[1m])) by (instance)", - "interval": "", - "legendFormat": "Load[1m] ({{instance}})", - "refId": "B" - }, - { - "expr": "sum(node_load15 OR avg_over_time(windows_system_processor_queue_length[15m])) by (instance)", - "interval": "", - "legendFormat": "Load[15m] ({{instance}})", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Average", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - sum(node_memory_MemAvailable_bytes OR windows_os_physical_memory_free_bytes) by (instance) / sum(node_memory_MemTotal_bytes OR windows_cs_physical_memory_bytes) by (instance) ", - "interval": "", - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"} OR windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) by (instance) / sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"} OR windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) by (instance))", - "interval": "", - "legendFormat": "{{instance}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_disk_read_bytes_total[$__rate_interval]) OR rate(windows_logical_disk_read_bytes_total[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Read ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_disk_written_bytes_total[$__rate_interval]) OR rate(windows_logical_disk_write_bytes_total[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Write ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_receive_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_received_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Receive Errors ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Receive Total ({{instance}})", - "refId": "B" - }, - { - "expr": "sum(rate(node_network_transmit_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_outbound_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Transmit Errors ({{instance}})", - "refId": "C" - }, - { - "expr": "sum(rate(node_network_receive_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_received_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Receive Dropped ({{instance}})", - "refId": "D" - }, - { - "expr": "sum(rate(node_network_transmit_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_outbound_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Transmit Dropped ({{instance}})", - "refId": "E" - }, - { - "expr": "sum(rate(node_network_transmit_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) by (instance) OR sum(rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Transmit Total ({{instance}})", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 14 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_transmit_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval]) OR rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Transmit Total ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval]) OR rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Receive Total ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Cluster (Nodes)", - "uid": "rancher-cluster-nodes-1", - "version": 3 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster.json deleted file mode 100644 index 29cc91675..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/cluster/rancher-cluster.json +++ /dev/null @@ -1,759 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\",mode=\"idle\"}[$__rate_interval]))", - "legendFormat": "Total", - "interval": "", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_load5 OR avg_over_time(windows_system_processor_queue_length[5m]))", - "interval": "", - "legendFormat": "Load[5m]", - "refId": "A" - }, - { - "expr": "sum(node_load1 OR avg_over_time(windows_system_processor_queue_length[1m]))", - "interval": "", - "legendFormat": "Load[1m]", - "refId": "B" - }, - { - "expr": "sum(node_load15 OR avg_over_time(windows_system_processor_queue_length[15m]))", - "interval": "", - "legendFormat": "Load[15m]", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Average", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - sum(node_memory_MemAvailable_bytes OR windows_os_physical_memory_free_bytes) / sum(node_memory_MemTotal_bytes OR windows_cs_physical_memory_bytes)", - "legendFormat": "Total", - "interval": "", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"} OR windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) / sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"} OR windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}))", - "legendFormat": "Total", - "interval": "", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_disk_read_bytes_total[$__rate_interval]) OR rate(windows_logical_disk_read_bytes_total[$__rate_interval]))", - "interval": "", - "legendFormat": "Read", - "refId": "A" - }, - { - "expr": "sum(rate(node_disk_written_bytes_total[$__rate_interval]) OR rate(windows_logical_disk_write_bytes_total[$__rate_interval]))", - "interval": "", - "legendFormat": "Write", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(node_network_receive_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Errors", - "refId": "A" - }, - { - "expr": "(sum(rate(node_network_receive_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "B" - }, - { - "expr": "(sum(rate(node_network_transmit_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_outbound_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Errors", - "refId": "C" - }, - { - "expr": "(sum(rate(node_network_receive_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Dropped", - "refId": "D" - }, - { - "expr": "(sum(rate(node_network_transmit_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_outbound_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Dropped", - "refId": "E" - }, - { - "expr": "(sum(rate(node_network_transmit_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 14 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_transmit_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval]) OR rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\"}[$__rate_interval]) OR rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*'}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Cluster", - "uid": "rancher-cluster-1", - "version": 3 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/home/rancher-default-home.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/home/rancher-default-home.json deleted file mode 100644 index 7923d6969..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/home/rancher-default-home.json +++ /dev/null @@ -1,1273 +0,0 @@ -{ - "annotations": { - "list": [] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "id": null, - "links": [], - "panels": [ - { - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "gridPos": { - "h": 3, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 1, - "title": "", - "type": "welcome" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 5, - "w": 8, - "x": 0, - "y": 4 - }, - "height": "180px", - "id": 6, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(1 - (avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\",mode=\"idle\"}[5m])))) * 100", - "format": "time_series", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "65, 90", - "title": "CPU Utilization", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 5, - "w": 8, - "x": 8, - "y": 4 - }, - "height": "180px", - "id": 4, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(1 - sum({__name__=~\"node_memory_MemAvailable_bytes|windows_os_physical_memory_free_bytes\"}) / sum({__name__=~\"node_memory_MemTotal_bytes|windows_cs_physical_memory_bytes\"})) * 100", - "format": "time_series", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "65, 90", - "title": "Memory Utilization", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": true, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 5, - "w": 8, - "x": 16, - "y": 4 - }, - "height": "180px", - "id": 7, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(1 - (((sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) OR on() vector(0))) / ((sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) OR on() vector(0))))) * 100", - "format": "time_series", - "interval": "10s", - "intervalFactor": 1, - "metric": "", - "refId": "A", - "step": 10 - } - ], - "thresholds": "65, 90", - "title": "Disk Utilization", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 0, - "y": 9 - }, - "height": "1px", - "id": 11, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " cores", - "postfixFontSize": "30%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\",mode!=\"idle\"}[5m]))", - "format": "time_series", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "CPU Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 4, - "y": 9 - }, - "height": "1px", - "id": 12, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": " cores", - "postfixFontSize": "30%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(kube_node_status_allocatable_cpu_cores{})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "CPU Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 8, - "y": 9 - }, - "height": "1px", - "id": 9, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "20%", - "prefix": "", - "prefixFontSize": "20%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum({__name__=~\"node_memory_MemTotal_bytes|windows_cs_physical_memory_bytes\"}) - sum({__name__=~\"node_memory_MemAvailable_bytes|windows_os_physical_memory_free_bytes\"})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "Memory Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 12, - "y": 9 - }, - "height": "1px", - "id": 10, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum (kube_node_status_allocatable_memory_bytes{})", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "Memory Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 16, - "y": 9 - }, - "height": "1px", - "id": 13, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"}) - sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) - sum(windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) OR on() vector(0))", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "Disk Used", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "Prometheus", - "decimals": 2, - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "format": "bytes", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 3, - "w": 4, - "x": 20, - "y": 9 - }, - "height": "1px", - "id": 14, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) OR on() vector(0))", - "interval": "10s", - "intervalFactor": 1, - "refId": "A", - "step": 10 - } - ], - "thresholds": "", - "title": "Disk Total", - "type": "singlestat", - "valueFontSize": "50%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 8, - "x": 0, - "y": 12 - }, - "hiddenSeries": false, - "id": 2051, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\",mode=\"idle\"}[$__rate_interval])))", - "format": "time_series", - "hide": false, - "instant": false, - "intervalFactor": 1, - "legendFormat": "Cluster", - "refId": "A" - }, - { - "expr": "1 - avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\", mode=\"idle\"}[$__rate_interval])) by (instance)", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ instance }}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percentunit", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 8, - "x": 8, - "y": 12 - }, - "hiddenSeries": false, - "id": 2052, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "100 * (1 - sum({__name__=~\"node_memory_MemAvailable_bytes|windows_os_physical_memory_free_bytes\"}) / sum({__name__=~\"node_memory_MemTotal_bytes|windows_cs_physical_memory_bytes\"}))", - "format": "time_series", - "hide": false, - "instant": false, - "intervalFactor": 1, - "legendFormat": "Cluster", - "refId": "A" - }, - { - "expr": "100 * (1- sum({__name__=~\"node_memory_MemAvailable_bytes|windows_os_physical_memory_free_bytes\"}) by (instance) / sum({__name__=~\"node_memory_MemTotal_bytes|windows_cs_physical_memory_bytes\"}) by (instance))", - "format": "time_series", - "hide": false, - "intervalFactor": 1, - "legendFormat": "{{ instance }}", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "gridPos": { - "h": 6, - "w": 8, - "x": 16, - "y": 12 - }, - "hiddenSeries": false, - "id": 2053, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [], - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(1 - ((sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"} OR on() vector(0)))) / ((sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"}) OR on() vector(0)) + (sum(windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) OR on() vector(0)))) * 100", - "legendFormat": "Cluster", - "refId": "A" - }, - { - "expr": "(1 - (sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\"}) by (instance)) / sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\"}) by (instance)) * 100", - "hide": false, - "legendFormat": "{{ instance }}", - "refId": "B" - }, - { - "expr": "(1 - (sum(windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) by (instance)) / sum(windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\"}) by (instance)) * 100", - "hide": false, - "legendFormat": "{{ instance }}", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Usage", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "percent", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "folderId": 0, - "gridPos": { - "h": 15, - "w": 12, - "x": 0, - "y": 18 - }, - "headings": true, - "id": 3, - "limit": 30, - "links": [], - "query": "", - "recent": true, - "search": true, - "starred": false, - "tags": [], - "title": "Dashboards", - "type": "dashlist" - }, - { - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 12, - "y": 18 - }, - "id": 2055, - "options": { - "content": "## About Rancher Monitoring\n\nRancher Monitoring is a Helm chart developed by Rancher that is powered by [Prometheus Operator](https://github.com/prometheus-operator/prometheus-operator). It is based on the upstream [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack) Helm chart maintained by the Prometheus community.\n\nBy default, the chart deploys Grafana alongside a set of Grafana dashboards curated by the [kube-prometheus](https://github.com/prometheus-operator/kube-prometheus) project.\n\nFor more information on how Rancher Monitoring differs from [kube-prometheus-stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack), please view the CHANGELOG.md of the rancher-monitoring chart located in the [rancher/charts](https://github.com/rancher/charts) repository.\n\nFor more information about how to configure Rancher Monitoring, please view the [Rancher docs](https://rancher.com/docs/rancher/v2.x/en/).\n\n", - "mode": "markdown" - }, - "pluginVersion": "7.1.0", - "timeFrom": null, - "timeShift": null, - "title": "", - "type": "text" - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "hidden": true, - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ], - "type": "timepicker" - }, - "timezone": "browser", - "title": "Home", - "uid": "rancher-home-1", - "version": 5 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd-nodes.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd-nodes.json deleted file mode 100644 index 300b61276..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd-nodes.json +++ /dev/null @@ -1,670 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 32, - "links": [], - "panels": [ - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_client_grpc_received_bytes_total{job=\"kube-etcd\"}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Client Traffic In ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(etcd_network_client_grpc_sent_bytes_total{job=\"kube-etcd\"}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Client Traffic Out ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GRPC Client Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "Bps", - "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": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]({{instance}})" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(etcd_debugging_mvcc_db_total_size_in_bytes) by (instance)", - "interval": "", - "legendFormat": "DB Size ({{instance}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DB Size", - "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": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(grpc_server_started_total{grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"}) by (instance) - sum(grpc_server_handled_total{grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"}) by (instance)", - "interval": "", - "legendFormat": "Watch Streams ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(grpc_server_started_total{grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"}) by (instance) - sum(grpc_server_handled_total{grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"}) by (instance)", - "interval": "", - "legendFormat": "Lease Watch Stream ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Active Streams", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_server_proposals_committed_total[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Proposal Committed ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(etcd_server_proposals_applied_total[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Proposal Applied ({{instance}})", - "refId": "B" - }, - { - "expr": "sum(rate(etcd_server_proposals_failed_total[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "Proposal Failed ({{instance}})", - "refId": "C" - }, - { - "expr": "sum(etcd_server_proposals_pending) by (instance)", - "interval": "", - "legendFormat": "Proposal Pending ({{instance}})", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft Proposals", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(grpc_server_started_total{grpc_type=\"unary\"}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "RPC Rate ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(rate(grpc_server_handled_total{grpc_type=\"unary\",grpc_code!=\"OK\"}[$__rate_interval])) by (instance)", - "interval": "", - "legendFormat": "RPC Failure Rate ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RPC Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "decimals": null, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[$__rate_interval])) by (instance, le))", - "interval": "", - "legendFormat": "WAL fsync ({{instance}})", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket[$__rate_interval])) by (instance, le))", - "interval": "", - "legendFormat": "DB fsync ({{instance}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Sync Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 2, - "format": "ms", - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / etcd (Nodes)", - "uid": "rancher-etcd-nodes-1", - "version": 5 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd.json deleted file mode 100644 index d58e23bce..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-etcd.json +++ /dev/null @@ -1,652 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 33, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "Prometheus", - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_client_grpc_received_bytes_total{job=\"kube-etcd\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Client Traffic In", - "refId": "A" - }, - { - "expr": "sum(rate(etcd_network_client_grpc_sent_bytes_total{job=\"kube-etcd\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Client Traffic Out", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "GRPC Client Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "Bps", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(etcd_debugging_mvcc_db_total_size_in_bytes)", - "interval": "", - "legendFormat": "DB Size", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "DB Size", - "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": null, - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(grpc_server_started_total{grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"})", - "interval": "", - "legendFormat": "Watch Streams", - "refId": "A" - }, - { - "expr": "sum(grpc_server_started_total{grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"})", - "interval": "", - "legendFormat": "Lease Watch Stream", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Active Streams", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_server_proposals_committed_total[$__rate_interval]))", - "interval": "", - "legendFormat": "Proposal Committed", - "refId": "A" - }, - { - "expr": "sum(rate(etcd_server_proposals_applied_total[$__rate_interval]))", - "interval": "", - "legendFormat": "Proposal Applied", - "refId": "B" - }, - { - "expr": "sum(rate(etcd_server_proposals_failed_total[$__rate_interval]))", - "interval": "", - "legendFormat": "Proposal Failed", - "refId": "C" - }, - { - "expr": "sum(etcd_server_proposals_pending)", - "interval": "", - "legendFormat": "Proposal Pending", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Raft Proposals", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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 - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(grpc_server_started_total{grpc_type=\"unary\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "RPC Rate", - "refId": "A" - }, - { - "expr": "sum(rate(grpc_server_handled_total{grpc_type=\"unary\",grpc_code!=\"OK\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "RPC Failure Rate", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "RPC Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "decimals": null, - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket[$__rate_interval])) by (instance, le))", - "interval": "", - "legendFormat": "WAL fsync", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket[$__rate_interval])) by (instance, le))", - "interval": "", - "legendFormat": "DB fsync", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Sync Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 2, - "format": "ms", - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / etcd", - "uid": "rancher-etcd-1", - "version": 4 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components-nodes.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components-nodes.json deleted file mode 100644 index 9de59be49..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components-nodes.json +++ /dev/null @@ -1,510 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 30, - "links": [], - "panels": [ - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(apiserver_request_total[$__rate_interval])) by (instance, code)", - "interval": "", - "legendFormat": "{{code}}({{instance}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "API Server Request Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "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 - } - }, - { - "aliasColors": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]({{instance}})" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"deployment\"}) by (instance, name)", - "interval": "", - "legendFormat": "Deployment Depth ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"volumes\"}) by (instance, name)", - "interval": "", - "legendFormat": "Volumes Depth ({{instance}})", - "refId": "B" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"replicaset\"}) by (instance, name)", - "interval": "", - "legendFormat": "ReplicaSet Depth ({{instance}})", - "refId": "C" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"service\"}) by (instance, name)", - "interval": "", - "legendFormat": "Service Depth ({{instance}})", - "refId": "D" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"serviceaccount\"}) by (instance, name)", - "interval": "", - "legendFormat": "ServiceAccount Depth ({{instance}})", - "refId": "E" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"endpoint\"}) by (instance, name)", - "interval": "", - "legendFormat": "Endpoint Depth ({{instance}})", - "refId": "F" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"daemonset\"}) by (instance, name)", - "interval": "", - "legendFormat": "DaemonSet Depth ({{instance}})", - "refId": "G" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"statefulset\"}) by (instance, name)", - "interval": "", - "legendFormat": "StatefulSet Depth ({{instance}})", - "refId": "H" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"replicationmanager\"}) by (instance, name)", - "interval": "", - "legendFormat": "ReplicationManager Depth ({{instance}})", - "refId": "I" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Controller Manager Queue Depth", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_status_scheduled{condition=\"false\"})", - "interval": "", - "legendFormat": "Failed To Schedule", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pod Scheduling Status", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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": { - "{{instance}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"reading\"}) by (instance)", - "interval": "", - "legendFormat": "Reading ({{instance}})", - "refId": "A" - }, - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"waiting\"}) by (instance)", - "interval": "", - "legendFormat": "Waiting ({{instance}})", - "refId": "B" - }, - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"writing\"}) by (instance)", - "interval": "", - "legendFormat": "Writing ({{instance}})", - "refId": "C" - }, - { - "expr": "sum(ceil(increase(nginx_ingress_controller_nginx_process_connections_total{state=\"accepted\"}[$__rate_interval]))) by (instance)", - "interval": "", - "legendFormat": "Accepted ({{instance}})", - "refId": "D" - }, - { - "expr": "sum(ceil(increase(nginx_ingress_controller_nginx_process_connections_total{state=\"handled\"}[$__rate_interval]))) by (instance)", - "interval": "", - "legendFormat": "Handled ({{instance}})", - "refId": "E" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Ingress Controller Connections", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Kubernetes Components (Nodes)", - "uid": "rancher-k8s-components-nodes-1", - "version": 5 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components.json deleted file mode 100644 index ddb0caca5..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/k8s/rancher-k8s-components.json +++ /dev/null @@ -1,502 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 31, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(apiserver_request_total[$__rate_interval])) by (code)", - "interval": "", - "legendFormat": "{{code}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "API Server Request Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 0, - "format": "short", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]({{instance}})" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"deployment\"}) by (name)", - "interval": "", - "legendFormat": "Deployment Depth", - "refId": "A" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"volumes\"}) by (name)", - "interval": "", - "legendFormat": "Volumes Depth", - "refId": "B" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"replicaset\"}) by (name)", - "interval": "", - "legendFormat": "Replicaset Depth", - "refId": "C" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"service\"}) by (name)", - "interval": "", - "legendFormat": "Service Depth", - "refId": "D" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"serviceaccount\"}) by (name)", - "interval": "", - "legendFormat": "ServiceAccount Depth", - "refId": "E" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"endpoint\"}) by (name)", - "interval": "", - "legendFormat": "Endpoint Depth", - "refId": "F" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"daemonset\"}) by (name)", - "interval": "", - "legendFormat": "DaemonSet Depth", - "refId": "G" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"statefulset\"}) by (name)", - "interval": "", - "legendFormat": "StatefulSet Depth", - "refId": "H" - }, - { - "expr": "sum(workqueue_depth{component=\"kube-controller-manager\", name=\"replicationmanager\"}) by (name)", - "interval": "", - "legendFormat": "ReplicationManager Depth", - "refId": "I" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Controller Manager Queue Depth", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_status_scheduled{condition=\"false\"})", - "interval": "", - "legendFormat": "Failed To Schedule", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Pod Scheduling Status", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "short", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"reading\"})", - "interval": "", - "legendFormat": "Reading", - "refId": "A" - }, - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"waiting\"})", - "interval": "", - "legendFormat": "Waiting", - "refId": "B" - }, - { - "expr": "sum(nginx_ingress_controller_nginx_process_connections{state=\"writing\"})", - "interval": "", - "legendFormat": "Writing", - "refId": "C" - }, - { - "expr": "sum(ceil(increase(nginx_ingress_controller_nginx_process_connections_total{state=\"accepted\"}[$__rate_interval])))", - "interval": "", - "legendFormat": "Accepted", - "refId": "D" - }, - { - "expr": "sum(ceil(increase(nginx_ingress_controller_nginx_process_connections_total{state=\"handled\"}[$__rate_interval])))", - "interval": "", - "legendFormat": "Handled", - "refId": "E" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Ingress Controller Connections", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "short", - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Kubernetes Components", - "uid": "rancher-k8s-components-1", - "version": 5 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node-detail.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node-detail.json deleted file mode 100644 index 0b57efa2e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node-detail.json +++ /dev/null @@ -1,789 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "links": [], - "panels": [ - { - "aliasColors": { - "{{mode}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\", instance=\"$instance\"}[$__rate_interval])) by (mode)", - "interval": "", - "legendFormat": "{{mode}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_load5{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[5m]))", - "interval": "", - "legendFormat": "Load[5m]", - "refId": "A" - }, - { - "expr": "sum(node_load1{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[1m]))", - "interval": "", - "legendFormat": "Load[1m]", - "refId": "B" - }, - { - "expr": "sum(node_load15{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[15m]))", - "interval": "", - "legendFormat": "Load[15m]", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Average", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (node_memory_MemAvailable_bytes{instance=~\"$instance\"} OR windows_os_physical_memory_free_bytes{instance=~\"$instance\"}) / (node_memory_MemTotal_bytes{instance=~\"$instance\"} OR windows_cs_physical_memory_bytes{instance=~\"$instance\"})", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{device}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\", instance=~\"$instance\"} OR windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\", instance=~\"$instance\"}) by (device) / sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\", instance=~\"$instance\"} OR windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\", instance=~\"$instance\"}) by (device))", - "interval": "", - "legendFormat": "{{device}}", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": { - "{{device}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_disk_read_bytes_total{instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_logical_disk_read_bytes_total{instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Read ({{device}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_disk_written_bytes_total{instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_logical_disk_write_bytes_total{instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Write ({{device}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "{{device}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_receive_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_received_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Receive Errors ({{device}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Receive Total ({{device}})", - "refId": "B" - }, - { - "expr": "sum(rate(node_network_transmit_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_outbound_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Transmit Errors ({{device}})", - "refId": "C" - }, - { - "expr": "sum(rate(node_network_receive_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_received_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Receive Dropped ({{device}})", - "refId": "D" - }, - { - "expr": "sum(rate(node_network_transmit_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_outbound_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Transmit Dropped ({{device}})", - "refId": "E" - }, - { - "expr": "sum(rate(node_network_transmit_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) by (device) OR sum(rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Transmit Total ({{device}})", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "{{device}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 14 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_transmit_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Transmit Total ({{device}})", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) by (device)", - "interval": "", - "legendFormat": "Receive Total ({{device}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "query": "label_values({__name__=~\"node_exporter_build_info|windows_exporter_build_info\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Node (Detail)", - "uid": "rancher-node-detail-1", - "version": 3 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node.json deleted file mode 100644 index 7324c4164..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/nodes/rancher-node.json +++ /dev/null @@ -1,776 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "links": [], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - avg(irate({__name__=~\"node_cpu_seconds_total|windows_cpu_time_total\", instance=\"$instance\", mode=\"idle\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [ - { - "matcher": { - "id": "byName", - "options": "Load[5m]" - }, - "properties": [] - } - ] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_load5{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[5m]))", - "interval": "", - "legendFormat": "Load[5m]", - "refId": "A" - }, - { - "expr": "sum(node_load1{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[1m]))", - "interval": "", - "legendFormat": "Load[1m]", - "refId": "B" - }, - { - "expr": "sum(node_load15{instance=~\"$instance\"} OR avg_over_time(windows_system_processor_queue_length{instance=~\"$instance\"}[15m]))", - "interval": "", - "legendFormat": "Load[15m]", - "refId": "C" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Load Average", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "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 - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - sum(node_memory_MemAvailable_bytes{instance=~\"$instance\"} OR windows_os_physical_memory_free_bytes{instance=~\"$instance\"}) / sum(node_memory_MemTotal_bytes{instance=~\"$instance\"} OR windows_cs_physical_memory_bytes{instance=~\"$instance\"})", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "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": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - (sum(node_filesystem_free_bytes{device!~\"rootfs|HarddiskVolume.+\", instance=~\"$instance\"} OR windows_logical_disk_free_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\", instance=~\"$instance\"}) / sum(node_filesystem_size_bytes{device!~\"rootfs|HarddiskVolume.+\", instance=~\"$instance\"} OR windows_logical_disk_size_bytes{volume!~\"(HarddiskVolume.+|[A-Z]:.+)\", instance=~\"$instance\"}))", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": "1", - "min": "0", - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_disk_read_bytes_total{instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_logical_disk_read_bytes_total{instance=~\"$instance\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Read", - "refId": "A" - }, - { - "expr": "sum(rate(node_disk_written_bytes_total{instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_logical_disk_write_bytes_total{instance=~\"$instance\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Write", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 7 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(node_network_receive_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Errors", - "refId": "A" - }, - { - "expr": "(sum(rate(node_network_receive_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "B" - }, - { - "expr": "(sum(rate(node_network_transmit_errs_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_outbound_errors{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Errors", - "refId": "C" - }, - { - "expr": "(sum(rate(node_network_receive_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_received_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Receive Dropped", - "refId": "D" - }, - { - "expr": "(sum(rate(node_network_transmit_drop_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_outbound_discarded{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Dropped", - "refId": "E" - }, - { - "expr": "(sum(rate(node_network_transmit_packets_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0)) + (sum(rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval])) OR on() vector(0))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 14 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(node_network_transmit_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_net_packets_sent_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "A" - }, - { - "expr": "sum(rate(node_network_receive_bytes_total{device!~\"lo|veth.*|docker.*|flannel.*|cali.*|cbr.*\", instance=~\"$instance\"}[$__rate_interval]) OR rate(windows_net_packets_received_total{nic!~'.*isatap.*|.*VPN.*|.*Pseudo.*|.*tunneling.*', instance=~\"$instance\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - } - ], - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "query": "label_values({__name__=~\"node_exporter_build_info|windows_exporter_build_info\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Node", - "uid": "rancher-node-1", - "version": 3 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod-containers.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod-containers.json deleted file mode 100644 index a625a552d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod-containers.json +++ /dev/null @@ -1,620 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_cpu_cfs_throttled_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "CFS throttled ({{container}})", - "refId": "A" - }, - { - "expr": "sum(rate(container_cpu_system_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_cpu_usage_seconds_kernelmode{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "System ({{container}})", - "refId": "B" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_cpu_usage_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Total ({{container}})", - "refId": "C" - }, - { - "expr": "sum(rate(container_cpu_user_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_cpu_usage_seconds_usermode{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "User ({{container}})", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "cpu", - "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 - } - }, - { - "aliasColors": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"} OR windows_container_memory_usage_commit_bytes{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"}) by (container)", - "interval": "", - "legendFormat": "({{container}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "bytes", - "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 - } - }, - { - "aliasColors": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Total ({{container}})", - "refId": "A" - }, - { - "expr": "sum(rate(container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Total ({{container}})", - "refId": "B" - }, - { - "expr": "sum(rate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Dropped ({{container}})", - "refId": "C" - }, - { - "expr": "sum(rate(container_network_receive_errors_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Errors ({{container}})", - "refId": "D" - }, - { - "expr": "sum(rate(container_network_transmit_errors_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Errors ({{container}})", - "refId": "E" - }, - { - "expr": "sum(rate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Dropped ({{container}})", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Receive Total ({{container}})", - "refId": "A" - }, - { - "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container) OR sum(rate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Transmit Total ({{container}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "{{container}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_fs_writes_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Write ({{container}})", - "refId": "A" - }, - { - "expr": "sum(rate(container_fs_reads_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) by (container)", - "interval": "", - "legendFormat": "Read ({{container}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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": false, - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "label_values({__name__=~\"container_.*|windows_container_.*\", namespace!=\"\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "pod", - "query": "label_values({__name__=~\"container_.*|windows_container_.*\", namespace=\"$namespace\", pod!=\"\"}, pod)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Pod (Containers)", - "uid": "rancher-pod-containers-1", - "version": 8 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod.json deleted file mode 100644 index 914a712e8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/pods/rancher-pod.json +++ /dev/null @@ -1,620 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_cpu_cfs_throttled_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "CFS throttled", - "refId": "A" - }, - { - "expr": "sum(rate(container_cpu_system_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_cpu_usage_seconds_kernelmode{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "System", - "refId": "B" - }, - { - "expr": "sum(rate(container_cpu_usage_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_cpu_usage_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Total", - "refId": "C" - }, - { - "expr": "sum(rate(container_cpu_user_seconds_total{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_cpu_usage_seconds_usermode{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "User", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "cpu", - "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 - } - }, - { - "aliasColors": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"} OR windows_container_memory_usage_commit_bytes{container!=\"POD\",namespace=~\"$namespace\",pod=~\"$pod\", container!=\"\"})", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "bytes", - "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 - } - }, - { - "aliasColors": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_receive_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum(rate(container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "B" - }, - { - "expr": "sum(rate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Dropped", - "refId": "C" - }, - { - "expr": "sum(rate(container_network_receive_errors_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Errors", - "refId": "D" - }, - { - "expr": "sum(rate(container_network_transmit_errors_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Errors", - "refId": "E" - }, - { - "expr": "sum(rate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Dropped", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum(rate(container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval])) OR sum(rate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(container_fs_writes_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Write", - "refId": "A" - }, - { - "expr": "sum(rate(container_fs_reads_bytes_total{namespace=~\"$namespace\",pod=~\"$pod\",container!=\"\"}[$__rate_interval]))", - "interval": "", - "legendFormat": "Read", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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": false, - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "label_values({__name__=~\"container_.*|windows_container_.*\", namespace!=\"\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "pod", - "query": "label_values({__name__=~\"container_.*|windows_container_.*\", namespace=\"$namespace\", pod!=\"\"}, pod)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Pod", - "uid": "rancher-pod-1", - "version": 8 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload-pods.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload-pods.json deleted file mode 100644 index b6471576b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload-pods.json +++ /dev/null @@ -1,636 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(container_cpu_cfs_throttled_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "CFS throttled ({{pod}})", - "refId": "A" - }, - { - "expr": "(sum(rate(container_cpu_system_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_kernelmode{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "System ({{pod}})", - "refId": "B" - }, - { - "expr": "(sum(rate(container_cpu_usage_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Total ({{pod}})", - "refId": "C" - }, - { - "expr": "(sum(rate(container_cpu_user_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_usermode{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "User ({{pod}})", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "cpu", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(container_memory_working_set_bytes{namespace=~\"$namespace\"} OR windows_container_memory_usage_commit_bytes{namespace=~\"$namespace\"}) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "({{pod}})", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "bytes", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Receive Total ({{pod}})", - "refId": "A" - }, - { - "expr": "(sum(rate(container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Transmit Total ({{pod}})", - "refId": "B" - }, - { - "expr": "(sum(rate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Receive Dropped ({{pod}})", - "refId": "C" - }, - { - "expr": "(sum(rate(container_network_receive_errors_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Receive Errors ({{pod}})", - "refId": "D" - }, - { - "expr": "(sum(rate(container_network_transmit_errors_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Transmit Errors ({{pod}})", - "refId": "E" - }, - { - "expr": "(sum(rate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Transmit Dropped ({{pod}})", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Receive Total ({{pod}})", - "refId": "A" - }, - { - "expr": "(sum(rate(container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Transmit Total ({{pod}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(rate(container_fs_writes_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Write ({{pod}})", - "refId": "A" - }, - { - "expr": "(sum(rate(container_fs_reads_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"}", - "interval": "", - "legendFormat": "Read ({{pod}})", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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": false, - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "query_result(kube_pod_info{namespace!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*namespace=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "kind", - "query": "query_result(kube_pod_info{namespace=\"$namespace\", created_by_kind!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*created_by_kind=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "workload", - "query": "query_result(kube_pod_info{namespace=\"$namespace\", created_by_kind=\"$kind\", created_by_name!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*created_by_name=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Workload (Pods)", - "uid": "rancher-workload-pods-1", - "version": 8 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload.json b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload.json deleted file mode 100644 index ed352a34b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/files/rancher/workloads/rancher-workload.json +++ /dev/null @@ -1,636 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "id": 28, - "iteration": 1618265214337, - "links": [], - "panels": [ - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum((sum(rate(container_cpu_cfs_throttled_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "CFS throttled", - "refId": "A" - }, - { - "expr": "sum((sum(rate(container_cpu_system_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_kernelmode{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "System", - "refId": "B" - }, - { - "expr": "sum((sum(rate(container_cpu_usage_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Total", - "refId": "C" - }, - { - "expr": "sum((sum(rate(container_cpu_user_seconds_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_cpu_usage_seconds_usermode{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "User", - "refId": "D" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": null, - "format": "cpu", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum((sum(container_memory_working_set_bytes{namespace=~\"$namespace\"} OR windows_container_memory_usage_commit_bytes{namespace=~\"$namespace\"}) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Total", - "refId": "A" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Memory Utilization", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "bytes", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum((sum(rate(container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum((sum(rate(container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_packets_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "B" - }, - { - "expr": "sum((sum(rate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Receive Dropped", - "refId": "C" - }, - { - "expr": "sum((sum(rate(container_network_receive_errors_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Receive Errors", - "refId": "D" - }, - { - "expr": "sum((sum(rate(container_network_transmit_errors_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Transmit Errors", - "refId": "E" - }, - { - "expr": "sum((sum(rate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_packets_dropped_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Transmit Dropped", - "refId": "F" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network Traffic", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "format": "pps", - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum((sum(rate(container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_receive_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Receive Total", - "refId": "A" - }, - { - "expr": "sum((sum(rate(container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod) OR sum(rate(windows_container_network_transmit_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Transmit Total", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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 - } - }, - { - "aliasColors": { - "{{pod}}": "#3797d5" - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": null, - "fieldConfig": { - "defaults": { - "custom": {} - }, - "overrides": [] - }, - "fill": 0, - "fillGradient": 0, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 7 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "nullPointMode": "null", - "percentage": false, - "pluginVersion": "7.1.5", - "pointradius": 2, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum((sum(rate(container_fs_writes_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Write", - "refId": "A" - }, - { - "expr": "sum((sum(rate(container_fs_reads_bytes_total{namespace=~\"$namespace\"}[$__rate_interval])) by (pod)) * on(pod) kube_pod_info{namespace=~\"$namespace\", created_by_kind=\"$kind\", created_by_name=\"$workload\"})", - "interval": "", - "legendFormat": "Read", - "refId": "B" - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "decimals": 1, - "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": false, - "schemaVersion": 26, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "query": "query_result(kube_pod_info{namespace!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*namespace=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "kind", - "query": "query_result(kube_pod_info{namespace=\"$namespace\", created_by_kind!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*created_by_kind=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "workload", - "query": "query_result(kube_pod_info{namespace=\"$namespace\", created_by_kind=\"$kind\", created_by_name!=\"\"} * on(pod) group_right(namespace, created_by_kind, created_by_name) count({__name__=~\"container_.*|windows_container_.*\", pod!=\"\"}) by (pod))", - "refresh": 2, - "regex": "/.*created_by_name=\"([^\"]*)\"/", - "sort": 0, - "tagValuesQuery": "", - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "", - "title": "Rancher / Workload", - "uid": "rancher-workload-1", - "version": 8 -} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/NOTES.txt b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/NOTES.txt deleted file mode 100644 index 371f3ae39..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/NOTES.txt +++ /dev/null @@ -1,4 +0,0 @@ -{{ $.Chart.Name }} has been installed. Check its status by running: - kubectl --namespace {{ template "kube-prometheus-stack.namespace" . }} get pods -l "release={{ $.Release.Name }}" - -Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator. diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/_helpers.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/_helpers.tpl deleted file mode 100644 index c66647d78..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/_helpers.tpl +++ /dev/null @@ -1,220 +0,0 @@ -# Rancher -{{- define "system_default_registry" -}} -{{- if .Values.global.cattle.systemDefaultRegistry -}} -{{- printf "%s/" .Values.global.cattle.systemDefaultRegistry -}} -{{- end -}} -{{- end -}} - -{{/* -https://github.com/helm/helm/issues/4535#issuecomment-477778391 -Usage: {{ include "call-nested" (list . "SUBCHART_NAME" "TEMPLATE") }} -e.g. {{ include "call-nested" (list . "grafana" "grafana.fullname") }} -*/}} -{{- define "call-nested" }} -{{- $dot := index . 0 }} -{{- $subchart := index . 1 | splitList "." }} -{{- $template := index . 2 }} -{{- $values := $dot.Values }} -{{- range $subchart }} -{{- $values = index $values . }} -{{- end }} -{{- include $template (dict "Chart" (dict "Name" (last $subchart)) "Values" $values "Release" $dot.Release "Capabilities" $dot.Capabilities) }} -{{- end }} - -# Special Exporters -{{- define "exporter.kubeEtcd.enabled" -}} -{{- if or .Values.kubeEtcd.enabled .Values.rkeEtcd.enabled .Values.kubeAdmEtcd.enabled .Values.rke2Etcd.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubeControllerManager.enabled" -}} -{{- if or .Values.kubeControllerManager.enabled .Values.rkeControllerManager.enabled .Values.k3sServer.enabled .Values.kubeAdmControllerManager.enabled .Values.rke2ControllerManager.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubeScheduler.enabled" -}} -{{- if or .Values.kubeScheduler.enabled .Values.rkeScheduler.enabled .Values.k3sServer.enabled .Values.kubeAdmScheduler.enabled .Values.rke2Scheduler.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubeProxy.enabled" -}} -{{- if or .Values.kubeProxy.enabled .Values.rkeProxy.enabled .Values.k3sServer.enabled .Values.kubeAdmProxy.enabled .Values.rke2Proxy.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubelet.enabled" -}} -{{- if or .Values.kubelet.enabled .Values.hardenedKubelet.enabled .Values.k3sServer.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubeletService.enabled" -}} -{{- if or .Values.hardenedKubelet.enabled .Values.prometheusOperator.kubeletService.enabled .Values.k3sServer.enabled -}} -"true" -{{- end -}} -{{- end }} - -{{- define "exporter.kubeControllerManager.jobName" -}} -{{- if .Values.k3sServer.enabled -}} -k3s-server -{{- else -}} -kube-controller-manager -{{- end -}} -{{- end }} - -{{- define "exporter.kubeScheduler.jobName" -}} -{{- if .Values.k3sServer.enabled -}} -k3s-server -{{- else -}} -kube-scheduler -{{- end -}} -{{- end }} - -{{- define "exporter.kubeProxy.jobName" -}} -{{- if .Values.k3sServer.enabled -}} -k3s-server -{{- else -}} -kube-proxy -{{- end -}} -{{- end }} - -{{- define "exporter.kubelet.jobName" -}} -{{- if .Values.k3sServer.enabled -}} -k3s-server -{{- else -}} -kubelet -{{- end -}} -{{- end }} - -{{- define "kubelet.serviceMonitor.resourcePath" -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if not (eq .Values.kubelet.serviceMonitor.resourcePath "/metrics/resource/v1alpha1") -}} -{{ .Values.kubelet.serviceMonitor.resourcePath }} -{{- else if semverCompare ">=1.20.0-0" $kubeTargetVersion -}} -/metrics/resource -{{- else -}} -/metrics/resource/v1alpha1 -{{- end -}} -{{- end }} - -# Windows Support - -{{/* -Windows cluster will add default taint for linux nodes, -add below linux tolerations to workloads could be scheduled to those linux nodes -*/}} - -{{- define "linux-node-tolerations" -}} -- key: "cattle.io/os" - value: "linux" - effect: "NoSchedule" - operator: "Equal" -{{- end -}} - -{{- define "linux-node-selector" -}} -{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} -beta.kubernetes.io/os: linux -{{- else -}} -kubernetes.io/os: linux -{{- end -}} -{{- end -}} - -# Prometheus Operator - -{{/* vim: set filetype=mustache: */}} -{{/* Expand the name of the chart. This is suffixed with -alertmanager, which means subtract 13 from longest 63 available */}} -{{- define "kube-prometheus-stack.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 50 | trimSuffix "-" -}} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -The components in this chart create additional resources that expand the longest created name strings. -The longest name that gets created adds and extra 37 characters, so truncation should be 63-35=26. -*/}} -{{- define "kube-prometheus-stack.fullname" -}} -{{- if .Values.fullnameOverride -}} -{{- .Values.fullnameOverride | trunc 26 | trimSuffix "-" -}} -{{- else -}} -{{- $name := default .Chart.Name .Values.nameOverride -}} -{{- if contains $name .Release.Name -}} -{{- .Release.Name | trunc 26 | trimSuffix "-" -}} -{{- else -}} -{{- printf "%s-%s" .Release.Name $name | trunc 26 | trimSuffix "-" -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* Fullname suffixed with operator */}} -{{- define "kube-prometheus-stack.operator.fullname" -}} -{{- printf "%s-operator" (include "kube-prometheus-stack.fullname" .) -}} -{{- end }} - -{{/* Fullname suffixed with prometheus */}} -{{- define "kube-prometheus-stack.prometheus.fullname" -}} -{{- printf "%s-prometheus" (include "kube-prometheus-stack.fullname" .) -}} -{{- end }} - -{{/* Fullname suffixed with alertmanager */}} -{{- define "kube-prometheus-stack.alertmanager.fullname" -}} -{{- printf "%s-alertmanager" (include "kube-prometheus-stack.fullname" .) -}} -{{- end }} - -{{/* Create chart name and version as used by the chart label. */}} -{{- define "kube-prometheus-stack.chartref" -}} -{{- replace "+" "_" .Chart.Version | printf "%s-%s" .Chart.Name -}} -{{- end }} - -{{/* Generate basic labels */}} -{{- define "kube-prometheus-stack.labels" }} -chart: {{ template "kube-prometheus-stack.chartref" . }} -release: {{ $.Release.Name | quote }} -heritage: {{ $.Release.Service | quote }} -{{- if .Values.commonLabels}} -{{ toYaml .Values.commonLabels }} -{{- end }} -{{- end }} - -{{/* Create the name of kube-prometheus-stack service account to use */}} -{{- define "kube-prometheus-stack.operator.serviceAccountName" -}} -{{- if .Values.prometheusOperator.serviceAccount.create -}} - {{ default (include "kube-prometheus-stack.operator.fullname" .) .Values.prometheusOperator.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.prometheusOperator.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* Create the name of prometheus service account to use */}} -{{- define "kube-prometheus-stack.prometheus.serviceAccountName" -}} -{{- if .Values.prometheus.serviceAccount.create -}} - {{ default (include "kube-prometheus-stack.prometheus.fullname" .) .Values.prometheus.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.prometheus.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* Create the name of alertmanager service account to use */}} -{{- define "kube-prometheus-stack.alertmanager.serviceAccountName" -}} -{{- if .Values.alertmanager.serviceAccount.create -}} - {{ default (include "kube-prometheus-stack.alertmanager.fullname" .) .Values.alertmanager.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.alertmanager.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -Allow the release namespace to be overridden for multi-namespace deployments in combined charts -*/}} -{{- define "kube-prometheus-stack.namespace" -}} - {{- if .Values.namespaceOverride -}} - {{- .Values.namespaceOverride -}} - {{- else -}} - {{- .Release.Namespace -}} - {{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/alertmanager.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/alertmanager.yaml deleted file mode 100644 index 8967c86ff..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/alertmanager.yaml +++ /dev/null @@ -1,147 +0,0 @@ -{{- if .Values.alertmanager.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: Alertmanager -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: -{{- if .Values.alertmanager.alertmanagerSpec.image }} - image: {{ template "system_default_registry" . }}{{ .Values.alertmanager.alertmanagerSpec.image.repository }}:{{ .Values.alertmanager.alertmanagerSpec.image.tag }} - version: {{ .Values.alertmanager.alertmanagerSpec.image.tag }} - {{- if .Values.alertmanager.alertmanagerSpec.image.sha }} - sha: {{ .Values.alertmanager.alertmanagerSpec.image.sha }} - {{- end }} -{{- end }} - replicas: {{ .Values.alertmanager.alertmanagerSpec.replicas }} - listenLocal: {{ .Values.alertmanager.alertmanagerSpec.listenLocal }} - serviceAccountName: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} -{{- if .Values.alertmanager.alertmanagerSpec.externalUrl }} - externalUrl: "{{ tpl .Values.alertmanager.alertmanagerSpec.externalUrl . }}" -{{- else if and .Values.alertmanager.ingress.enabled .Values.alertmanager.ingress.hosts }} - externalUrl: "http://{{ tpl (index .Values.alertmanager.ingress.hosts 0) . }}{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" -{{- else if not (or (kindIs "invalid" .Values.global.cattle.url) (kindIs "invalid" .Values.global.cattle.clusterId)) }} - externalUrl: "{{ .Values.global.cattle.url }}/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Values.namespaceOverride }}/services/http:{{ template "kube-prometheus-stack.fullname" . }}-alertmanager:{{ .Values.alertmanager.service.port }}/proxy" -{{- else }} - externalUrl: http://{{ template "kube-prometheus-stack.fullname" . }}-alertmanager.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.alertmanager.service.port }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 4 }} -{{- if .Values.alertmanager.alertmanagerSpec.nodeSelector }} -{{ toYaml .Values.alertmanager.alertmanagerSpec.nodeSelector | indent 4 }} -{{- end }} - paused: {{ .Values.alertmanager.alertmanagerSpec.paused }} - logFormat: {{ .Values.alertmanager.alertmanagerSpec.logFormat | quote }} - logLevel: {{ .Values.alertmanager.alertmanagerSpec.logLevel | quote }} - retention: {{ .Values.alertmanager.alertmanagerSpec.retention | quote }} -{{- if .Values.alertmanager.alertmanagerSpec.secrets }} - secrets: -{{ toYaml .Values.alertmanager.alertmanagerSpec.secrets | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.configSecret }} - configSecret: {{ .Values.alertmanager.alertmanagerSpec.configSecret }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.configMaps }} - configMaps: -{{ toYaml .Values.alertmanager.alertmanagerSpec.configMaps | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector }} - alertmanagerConfigSelector: -{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigSelector | indent 4}} -{{ else }} - alertmanagerConfigSelector: {} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector }} - alertmanagerConfigNamespaceSelector: -{{ toYaml .Values.alertmanager.alertmanagerSpec.alertmanagerConfigNamespaceSelector | indent 4}} -{{ else }} - alertmanagerConfigNamespaceSelector: {} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.resources }} - resources: -{{ toYaml .Values.alertmanager.alertmanagerSpec.resources | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.routePrefix }} - routePrefix: "{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.securityContext }} - securityContext: -{{ toYaml .Values.alertmanager.alertmanagerSpec.securityContext | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.storage }} - storage: -{{ toYaml .Values.alertmanager.alertmanagerSpec.storage | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.podMetadata }} - podMetadata: -{{ toYaml .Values.alertmanager.alertmanagerSpec.podMetadata | indent 4 }} -{{- end }} -{{- if or .Values.alertmanager.alertmanagerSpec.podAntiAffinity .Values.alertmanager.alertmanagerSpec.affinity }} - affinity: -{{- if .Values.alertmanager.alertmanagerSpec.affinity }} -{{ toYaml .Values.alertmanager.alertmanagerSpec.affinity | indent 4 }} -{{- end }} -{{- if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity "hard" }} - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app, operator: In, values: [alertmanager]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-alertmanager]} -{{- else if eq .Values.alertmanager.alertmanagerSpec.podAntiAffinity "soft" }} - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: {{ .Values.alertmanager.alertmanagerSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app, operator: In, values: [alertmanager]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-alertmanager]} -{{- end }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 4 }} -{{- if .Values.alertmanager.alertmanagerSpec.tolerations }} -{{ toYaml .Values.alertmanager.alertmanagerSpec.tolerations | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.topologySpreadConstraints }} - topologySpreadConstraints: -{{ toYaml .Values.alertmanager.alertmanagerSpec.topologySpreadConstraints | indent 4 }} -{{- end }} -{{- if .Values.global.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.containers }} - containers: -{{ toYaml .Values.alertmanager.alertmanagerSpec.containers | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.initContainers }} - initContainers: -{{ toYaml .Values.alertmanager.alertmanagerSpec.initContainers | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.priorityClassName }} - priorityClassName: {{.Values.alertmanager.alertmanagerSpec.priorityClassName }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.additionalPeers }} - additionalPeers: -{{ toYaml .Values.alertmanager.alertmanagerSpec.additionalPeers | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.volumes }} - volumes: -{{ toYaml .Values.alertmanager.alertmanagerSpec.volumes | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.volumeMounts }} - volumeMounts: -{{ toYaml .Values.alertmanager.alertmanagerSpec.volumeMounts | indent 4 }} -{{- end }} - portName: {{ .Values.alertmanager.alertmanagerSpec.portName }} -{{- if .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }} - clusterAdvertiseAddress: {{ .Values.alertmanager.alertmanagerSpec.clusterAdvertiseAddress }} -{{- end }} -{{- if .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} - forceEnableClusterMode: {{ .Values.alertmanager.alertmanagerSpec.forceEnableClusterMode }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/cleanupSecret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/cleanupSecret.yaml deleted file mode 100644 index 908955697..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/cleanupSecret.yaml +++ /dev/null @@ -1,88 +0,0 @@ -{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) (.Values.alertmanager.secret.cleanupOnUninstall) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "5" -spec: - template: - metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - labels: {{ include "kube-prometheus-stack.labels" . | nindent 8 }} - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - spec: - serviceAccountName: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete -{{- if .Values.alertmanager.secret.securityContext }} - securityContext: -{{ toYaml .Values.alertmanager.secret.securityContext | indent 8 }} -{{- end }} - containers: - - name: delete-secret - image: {{ template "system_default_registry" . }}{{ .Values.alertmanager.secret.image.repository }}:{{ .Values.alertmanager.secret.image.tag }} - imagePullPolicy: {{ .Values.alertmanager.secret.image.pullPolicy }} - command: - - /bin/sh - - -c - - > - if kubectl get secret -n {{ template "kube-prometheus-stack.namespace" . }} alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-alertmanager > /dev/null 2>&1; then - kubectl delete secret -n {{ template "kube-prometheus-stack.namespace" . }} alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-alertmanager - fi; - restartPolicy: OnFailure - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -rules: -- apiGroups: - - "" - resources: - - secrets - verbs: ['get', 'delete'] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete -subjects: -- kind: ServiceAccount - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - namespace: {{ template "kube-prometheus-stack.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-post-delete - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": post-delete - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingress.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingress.yaml deleted file mode 100644 index 50fab1455..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingress.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.ingress.enabled }} -{{- $pathType := .Values.alertmanager.ingress.pathType | default "" }} -{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $servicePort := .Values.alertmanager.service.port -}} -{{- $routePrefix := list .Values.alertmanager.alertmanagerSpec.routePrefix }} -{{- $paths := .Values.alertmanager.ingress.paths | default $routePrefix -}} -{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} -apiVersion: networking.k8s.io/v1beta1 -{{ else }} -apiVersion: extensions/v1beta1 -{{ end -}} -kind: Ingress -metadata: - name: {{ $serviceName }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.alertmanager.ingress.annotations }} - annotations: -{{ toYaml .Values.alertmanager.ingress.annotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{- if .Values.alertmanager.ingress.labels }} -{{ toYaml .Values.alertmanager.ingress.labels | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} - {{- if .Values.alertmanager.ingress.ingressClassName }} - ingressClassName: {{ .Values.alertmanager.ingress.ingressClassName }} - {{- end }} - {{- end }} - rules: - {{- if .Values.alertmanager.ingress.hosts }} - {{- range $host := .Values.alertmanager.ingress.hosts }} - - host: {{ tpl $host $ }} - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- end -}} - {{- if .Values.alertmanager.ingress.tls }} - tls: -{{ tpl (toYaml .Values.alertmanager.ingress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingressperreplica.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingressperreplica.yaml deleted file mode 100644 index 3d673b2c8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/ingressperreplica.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled .Values.alertmanager.ingressPerReplica.enabled }} -{{- $pathType := .Values.alertmanager.ingressPerReplica.pathType | default "" }} -{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}} -{{- $servicePort := .Values.alertmanager.service.port -}} -{{- $ingressValues := .Values.alertmanager.ingressPerReplica -}} -apiVersion: v1 -kind: List -metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-ingressperreplica - namespace: {{ template "kube-prometheus-stack.namespace" . }} -items: -{{ range $i, $e := until $count }} - - kind: Ingress - {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} - apiVersion: networking.k8s.io/v1beta1 - {{ else }} - apiVersion: extensions/v1beta1 - {{ end -}} - metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ include "kube-prometheus-stack.name" $ }}-alertmanager -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if $ingressValues.labels }} -{{ toYaml $ingressValues.labels | indent 8 }} - {{- end }} - {{- if $ingressValues.annotations }} - annotations: -{{ toYaml $ingressValues.annotations | indent 8 }} - {{- end }} - spec: - {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} - {{- if $ingressValues.ingressClassName }} - ingressClassName: {{ $ingressValues.ingressClassName }} - {{- end }} - {{- end }} - rules: - - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} - http: - paths: - {{- range $p := $ingressValues.paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }} - tls: - - hosts: - - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} - {{- if $ingressValues.tlsSecretPerReplica.enabled }} - secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }} - {{- else }} - secretName: {{ $ingressValues.tlsSecretName }} - {{- end }} - {{- end }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/podDisruptionBudget.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/podDisruptionBudget.yaml deleted file mode 100644 index 1dbe809cd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/podDisruptionBudget.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.podDisruptionBudget.enabled }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- if .Values.alertmanager.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.alertmanager.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.alertmanager.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.alertmanager.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - app: alertmanager - alertmanager: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-role.yaml deleted file mode 100644 index d64d1f813..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-role.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -kind: Role -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -rules: -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} -- apiGroups: ['policy'] -{{- else }} -- apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-alertmanager -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-rolebinding.yaml deleted file mode 100644 index 9248cc8dd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp-rolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp.yaml deleted file mode 100644 index 6fa445009..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/psp.yaml +++ /dev/null @@ -1,52 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{- if .Values.global.rbac.pspAnnotations }} - annotations: -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - privileged: false - # Required to prevent escalations to root. - # allowPrivilegeEscalation: false - # This is redundant with non-root + disallow privilege escalation, - # but we can provide it for defense in depth. - #requiredDropCapabilities: - # - ALL - # Allow core volume types. - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - # Permits the container to run with root privileges as well. - rule: 'RunAsAny' - seLinux: - # This policy assumes the nodes are using AppArmor rather than SELinux. - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/secret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/secret.yaml deleted file mode 100644 index 9d9bdabfa..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/secret.yaml +++ /dev/null @@ -1,166 +0,0 @@ -{{- if and (.Values.alertmanager.enabled) (not .Values.alertmanager.alertmanagerSpec.useExistingSecret) }} -{{- if .Release.IsInstall }} -{{- $secretName := (printf "alertmanager-%s-alertmanager" (include "kube-prometheus-stack.fullname" .)) }} -{{- if (lookup "v1" "Secret" (include "kube-prometheus-stack.namespace" .) $secretName) }} -{{- required (printf "Cannot overwrite existing secret %s in namespace %s." $secretName (include "kube-prometheus-stack.namespace" .)) "" }} -{{- end }}{{- end }} -apiVersion: v1 -kind: Secret -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -{{- if .Values.alertmanager.secret.annotations }} -{{ toYaml .Values.alertmanager.secret.annotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: -{{- if .Values.alertmanager.tplConfig }} - alertmanager.yaml: {{ tpl (toYaml .Values.alertmanager.config) . | b64enc | quote }} -{{- else }} - alertmanager.yaml: {{ toYaml .Values.alertmanager.config | b64enc | quote }} -{{- end}} -{{- range $key, $val := .Values.alertmanager.templateFiles }} - {{ $key }}: {{ $val | b64enc | quote }} -{{- end }} ---- -apiVersion: batch/v1 -kind: Job -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "5" -spec: - template: - metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - labels: {{ include "kube-prometheus-stack.labels" . | nindent 8 }} - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - spec: - serviceAccountName: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install -{{- if .Values.alertmanager.secret.securityContext }} - securityContext: -{{ toYaml .Values.alertmanager.secret.securityContext | indent 8 }} -{{- end }} - containers: - - name: copy-pre-install-secret - image: {{ template "system_default_registry" . }}{{ .Values.alertmanager.secret.image.repository }}:{{ .Values.alertmanager.secret.image.tag }} - imagePullPolicy: {{ .Values.alertmanager.secret.image.pullPolicy }} - command: - - /bin/sh - - -c - - > - if kubectl get secret -n {{ template "kube-prometheus-stack.namespace" . }} alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-alertmanager > /dev/null 2>&1; then - echo "Secret already exists" - exit 1 - fi; - kubectl patch secret -n {{ template "kube-prometheus-stack.namespace" . }} --dry-run -o yaml - alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - -p '{{ printf "{\"metadata\":{\"name\": \"alertmanager-%s-alertmanager\"}}" (include "kube-prometheus-stack.fullname" .) }}' - | kubectl apply -f -; - kubectl annotate secret -n {{ template "kube-prometheus-stack.namespace" . }} - alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-alertmanager - helm.sh/hook- helm.sh/hook-delete-policy- helm.sh/hook-weight-; - restartPolicy: OnFailure - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -rules: -- apiGroups: - - "" - resources: - - secrets - verbs: ['create', 'get', 'patch'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install -subjects: -- kind: ServiceAccount - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - namespace: {{ template "kube-prometheus-stack.namespace" . }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: alertmanager-{{ template "kube-prometheus-stack.fullname" . }}-pre-install - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - annotations: - "helm.sh/hook": pre-install - "helm.sh/hook-delete-policy": hook-succeeded, hook-failed - "helm.sh/hook-weight": "3" -spec: - privileged: false - allowPrivilegeEscalation: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/service.yaml deleted file mode 100644 index bbcc60f2b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/service.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{{- if .Values.alertmanager.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - self-monitor: {{ .Values.alertmanager.serviceMonitor.selfMonitor | quote }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.alertmanager.service.labels }} -{{ toYaml .Values.alertmanager.service.labels | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.service.annotations }} - annotations: -{{ toYaml .Values.alertmanager.service.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.alertmanager.service.clusterIP }} - clusterIP: {{ .Values.alertmanager.service.clusterIP }} -{{- end }} -{{- if .Values.alertmanager.service.externalIPs }} - externalIPs: -{{ toYaml .Values.alertmanager.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.alertmanager.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.alertmanager.service.loadBalancerIP }} -{{- end }} -{{- if .Values.alertmanager.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.alertmanager.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} - ports: - - name: {{ .Values.alertmanager.alertmanagerSpec.portName }} - {{- if eq .Values.alertmanager.service.type "NodePort" }} - nodePort: {{ .Values.alertmanager.service.nodePort }} - {{- end }} - port: {{ .Values.alertmanager.service.port }} - targetPort: {{ .Values.alertmanager.service.targetPort }} - protocol: TCP -{{- if .Values.alertmanager.service.additionalPorts }} -{{ toYaml .Values.alertmanager.service.additionalPorts | indent 2 }} -{{- end }} - selector: - app: alertmanager - alertmanager: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - type: "{{ .Values.alertmanager.service.type }}" -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceaccount.yaml deleted file mode 100644 index c5e6e9228..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceaccount.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.alertmanager.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.alertmanager.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.alertmanager.serviceAccount.annotations | indent 4 }} -{{- end }} -imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/servicemonitor.yaml deleted file mode 100644 index a699accb8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/servicemonitor.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-alertmanager - release: {{ $.Release.Name | quote }} - self-monitor: "true" - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} - endpoints: - - port: {{ .Values.alertmanager.alertmanagerSpec.portName }} - {{- if .Values.alertmanager.serviceMonitor.interval }} - interval: {{ .Values.alertmanager.serviceMonitor.interval }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.scheme }} - scheme: {{ .Values.alertmanager.serviceMonitor.scheme }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.alertmanager.serviceMonitor.bearerTokenFile }} - {{- end }} - {{- if .Values.alertmanager.serviceMonitor.tlsConfig }} - tlsConfig: {{ toYaml .Values.alertmanager.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - path: "{{ trimSuffix "/" .Values.alertmanager.alertmanagerSpec.routePrefix }}/metrics" -{{- if .Values.alertmanager.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.alertmanager.serviceMonitor.metricRelabelings | indent 6) . }} -{{- end }} -{{- if .Values.alertmanager.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.alertmanager.serviceMonitor.relabelings | indent 6 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceperreplica.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceperreplica.yaml deleted file mode 100644 index 0f12ae879..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/alertmanager/serviceperreplica.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if and .Values.alertmanager.enabled .Values.alertmanager.servicePerReplica.enabled }} -{{- $count := .Values.alertmanager.alertmanagerSpec.replicas | int -}} -{{- $serviceValues := .Values.alertmanager.servicePerReplica -}} -apiVersion: v1 -kind: List -metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-serviceperreplica - namespace: {{ template "kube-prometheus-stack.namespace" . }} -items: -{{- range $i, $e := until $count }} - - apiVersion: v1 - kind: Service - metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ include "kube-prometheus-stack.name" $ }}-alertmanager -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if $serviceValues.annotations }} - annotations: -{{ toYaml $serviceValues.annotations | indent 8 }} - {{- end }} - spec: - {{- if $serviceValues.clusterIP }} - clusterIP: {{ $serviceValues.clusterIP }} - {{- end }} - {{- if $serviceValues.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := $serviceValues.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} - {{- end }} - ports: - - name: {{ $.Values.alertmanager.alertmanagerSpec.portName }} - {{- if eq $serviceValues.type "NodePort" }} - nodePort: {{ $serviceValues.nodePort }} - {{- end }} - port: {{ $serviceValues.port }} - targetPort: {{ $serviceValues.targetPort }} - selector: - app: alertmanager - alertmanager: {{ template "kube-prometheus-stack.fullname" $ }}-alertmanager - statefulset.kubernetes.io/pod-name: alertmanager-{{ include "kube-prometheus-stack.fullname" $ }}-alertmanager-{{ $i }} - type: "{{ $serviceValues.type }}" -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/service.yaml deleted file mode 100644 index f77db4199..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/service.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if .Values.coreDns.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-coredns - labels: - app: {{ template "kube-prometheus-stack.name" . }}-coredns - jobLabel: coredns -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.coreDns.service.port }} - protocol: TCP - targetPort: {{ .Values.coreDns.service.targetPort }} - selector: - {{- if .Values.coreDns.service.selector }} -{{ toYaml .Values.coreDns.service.selector | indent 4 }} - {{- else}} - k8s-app: kube-dns - {{- end}} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/servicemonitor.yaml deleted file mode 100644 index f34549048..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/core-dns/servicemonitor.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if .Values.coreDns.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-coredns - namespace: "kube-system" - labels: - app: {{ template "kube-prometheus-stack.name" . }}-coredns -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-coredns - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics - {{- if .Values.coreDns.serviceMonitor.interval}} - interval: {{ .Values.coreDns.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.coreDns.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.coreDns.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.coreDns.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.coreDns.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-api-server/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-api-server/servicemonitor.yaml deleted file mode 100644 index b7ea3817c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-api-server/servicemonitor.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if .Values.kubeApiServer.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-apiserver - namespace: default - labels: - app: {{ template "kube-prometheus-stack.name" . }}-apiserver -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - endpoints: - - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeApiServer.serviceMonitor.interval }} - interval: {{ .Values.kubeApiServer.serviceMonitor.interval }} - {{- end }} - port: https - scheme: https -{{- if .Values.kubeApiServer.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeApiServer.serviceMonitor.metricRelabelings | indent 6) . }} -{{- end }} -{{- if .Values.kubeApiServer.relabelings }} - relabelings: -{{ toYaml .Values.kubeApiServer.relabelings | indent 6 }} -{{- end }} - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - serverName: {{ .Values.kubeApiServer.tlsConfig.serverName }} - insecureSkipVerify: {{ .Values.kubeApiServer.tlsConfig.insecureSkipVerify }} - jobLabel: {{ .Values.kubeApiServer.serviceMonitor.jobLabel }} - namespaceSelector: - matchNames: - - default - selector: -{{ toYaml .Values.kubeApiServer.serviceMonitor.selector | indent 4 }} -{{- end}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/endpoints.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/endpoints.yaml deleted file mode 100644 index 413193028..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager - k8s-app: kube-controller-manager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -subsets: - - addresses: - {{- range .Values.kubeControllerManager.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.kubeControllerManager.service.port }} - protocol: TCP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/service.yaml deleted file mode 100644 index d55ca2a10..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager - jobLabel: kube-controller-manager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.kubeControllerManager.service.port }} - protocol: TCP - targetPort: {{ .Values.kubeControllerManager.service.targetPort }} -{{- if .Values.kubeControllerManager.endpoints }}{{- else }} - selector: - {{- if .Values.kubeControllerManager.service.selector }} -{{ toYaml .Values.kubeControllerManager.service.selector | indent 4 }} - {{- else}} - component: kube-controller-manager - {{- end}} -{{- end }} - type: ClusterIP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/servicemonitor.yaml deleted file mode 100644 index 38e2b1970..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-controller-manager/servicemonitor.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and .Values.kubeControllerManager.enabled .Values.kubeControllerManager.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-controller-manager - namespace: "kube-system" - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-controller-manager - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics - {{- if .Values.kubeControllerManager.serviceMonitor.interval }} - interval: {{ .Values.kubeControllerManager.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeControllerManager.serviceMonitor.https }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- if .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} - insecureSkipVerify: {{ .Values.kubeControllerManager.serviceMonitor.insecureSkipVerify }} - {{- end }} - {{- if .Values.kubeControllerManager.serviceMonitor.serverName }} - serverName: {{ .Values.kubeControllerManager.serviceMonitor.serverName }} - {{- end }} - {{- end }} -{{- if .Values.kubeControllerManager.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeControllerManager.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeControllerManager.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeControllerManager.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/service.yaml deleted file mode 100644 index c7bf142d5..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/service.yaml +++ /dev/null @@ -1,28 +0,0 @@ -{{- if .Values.kubeDns.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-dns - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-dns - jobLabel: kube-dns -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics-dnsmasq - port: {{ .Values.kubeDns.service.dnsmasq.port }} - protocol: TCP - targetPort: {{ .Values.kubeDns.service.dnsmasq.targetPort }} - - name: http-metrics-skydns - port: {{ .Values.kubeDns.service.skydns.port }} - protocol: TCP - targetPort: {{ .Values.kubeDns.service.skydns.targetPort }} - selector: - {{- if .Values.kubeDns.service.selector }} -{{ toYaml .Values.kubeDns.service.selector | indent 4 }} - {{- else}} - k8s-app: kube-dns - {{- end}} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/servicemonitor.yaml deleted file mode 100644 index 28d06ae83..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-dns/servicemonitor.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if .Values.kubeDns.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-dns - namespace: "kube-system" - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-dns -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-dns - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics-dnsmasq - {{- if .Values.kubeDns.serviceMonitor.interval }} - interval: {{ .Values.kubeDns.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeDns.serviceMonitor.dnsmasqMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeDns.serviceMonitor.dnsmasqRelabelings }} - relabelings: -{{ toYaml .Values.kubeDns.serviceMonitor.dnsmasqRelabelings | indent 4 }} -{{- end }} - - port: http-metrics-skydns - {{- if .Values.kubeDns.serviceMonitor.interval }} - interval: {{ .Values.kubeDns.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.kubeDns.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeDns.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeDns.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeDns.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/endpoints.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/endpoints.yaml deleted file mode 100644 index 8f07a5cc2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd - k8s-app: etcd-server -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -subsets: - - addresses: - {{- range .Values.kubeEtcd.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.kubeEtcd.service.port }} - protocol: TCP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/service.yaml deleted file mode 100644 index b2677e280..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd - jobLabel: kube-etcd -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.kubeEtcd.service.port }} - protocol: TCP - targetPort: {{ .Values.kubeEtcd.service.targetPort }} -{{- if .Values.kubeEtcd.endpoints }}{{- else }} - selector: - {{- if .Values.kubeEtcd.service.selector }} -{{ toYaml .Values.kubeEtcd.service.selector | indent 4 }} - {{- else}} - component: etcd - {{- end}} -{{- end }} - type: ClusterIP -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/servicemonitor.yaml deleted file mode 100644 index d5816f441..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-etcd/servicemonitor.yaml +++ /dev/null @@ -1,50 +0,0 @@ -{{- if and .Values.kubeEtcd.enabled .Values.kubeEtcd.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-etcd - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-etcd - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics - {{- if .Values.kubeEtcd.serviceMonitor.interval }} - interval: {{ .Values.kubeEtcd.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if eq .Values.kubeEtcd.serviceMonitor.scheme "https" }} - scheme: https - tlsConfig: - {{- if .Values.kubeEtcd.serviceMonitor.serverName }} - serverName: {{ .Values.kubeEtcd.serviceMonitor.serverName }} - {{- end }} - {{- if .Values.kubeEtcd.serviceMonitor.caFile }} - caFile: {{ .Values.kubeEtcd.serviceMonitor.caFile }} - {{- end }} - {{- if .Values.kubeEtcd.serviceMonitor.certFile }} - certFile: {{ .Values.kubeEtcd.serviceMonitor.certFile }} - {{- end }} - {{- if .Values.kubeEtcd.serviceMonitor.keyFile }} - keyFile: {{ .Values.kubeEtcd.serviceMonitor.keyFile }} - {{- end}} - insecureSkipVerify: {{ .Values.kubeEtcd.serviceMonitor.insecureSkipVerify }} - {{- end }} -{{- if .Values.kubeEtcd.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeEtcd.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeEtcd.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeEtcd.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/endpoints.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/endpoints.yaml deleted file mode 100644 index 2cb756d15..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy - k8s-app: kube-proxy -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -subsets: - - addresses: - {{- range .Values.kubeProxy.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.kubeProxy.service.port }} - protocol: TCP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/service.yaml deleted file mode 100644 index 6a93319ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy - jobLabel: kube-proxy -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.kubeProxy.service.port }} - protocol: TCP - targetPort: {{ .Values.kubeProxy.service.targetPort }} -{{- if .Values.kubeProxy.endpoints }}{{- else }} - selector: - {{- if .Values.kubeProxy.service.selector }} -{{ toYaml .Values.kubeProxy.service.selector | indent 4 }} - {{- else}} - k8s-app: kube-proxy - {{- end}} -{{- end }} - type: ClusterIP -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/servicemonitor.yaml deleted file mode 100644 index ed1632682..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-proxy/servicemonitor.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if and .Values.kubeProxy.enabled .Values.kubeProxy.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-proxy - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-proxy - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics - {{- if .Values.kubeProxy.serviceMonitor.interval }} - interval: {{ .Values.kubeProxy.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeProxy.serviceMonitor.https }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- end}} -{{- if .Values.kubeProxy.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ toYaml .Values.kubeProxy.serviceMonitor.metricRelabelings | indent 4 }} -{{- end }} -{{- if .Values.kubeProxy.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeProxy.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/endpoints.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/endpoints.yaml deleted file mode 100644 index f4ad60fd6..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/endpoints.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.endpoints }} -apiVersion: v1 -kind: Endpoints -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler - k8s-app: kube-scheduler -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -subsets: - - addresses: - {{- range .Values.kubeScheduler.endpoints }} - - ip: {{ . }} - {{- end }} - ports: - - name: http-metrics - port: {{ .Values.kubeScheduler.service.port }} - protocol: TCP -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/service.yaml deleted file mode 100644 index 7a9c53da0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.service.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler - jobLabel: kube-scheduler -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: kube-system -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.kubeScheduler.service.port}} - protocol: TCP - targetPort: {{ .Values.kubeScheduler.service.targetPort}} -{{- if .Values.kubeScheduler.endpoints }}{{- else }} - selector: - {{- if .Values.kubeScheduler.service.selector }} -{{ toYaml .Values.kubeScheduler.service.selector | indent 4 }} - {{- else}} - component: kube-scheduler - {{- end}} -{{- end }} - type: ClusterIP -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/servicemonitor.yaml deleted file mode 100644 index 7caef4f58..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-scheduler/servicemonitor.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and .Values.kubeScheduler.enabled .Values.kubeScheduler.serviceMonitor.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-scheduler - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-scheduler - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - "kube-system" - endpoints: - - port: http-metrics - {{- if .Values.kubeScheduler.serviceMonitor.interval }} - interval: {{ .Values.kubeScheduler.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - {{- if .Values.kubeScheduler.serviceMonitor.https }} - scheme: https - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - {{- if .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} - insecureSkipVerify: {{ .Values.kubeScheduler.serviceMonitor.insecureSkipVerify }} - {{- end}} - {{- if .Values.kubeScheduler.serviceMonitor.serverName }} - serverName: {{ .Values.kubeScheduler.serviceMonitor.serverName }} - {{- end}} - {{- end}} -{{- if .Values.kubeScheduler.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeScheduler.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeScheduler.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeScheduler.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-state-metrics/serviceMonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-state-metrics/serviceMonitor.yaml deleted file mode 100644 index 5b723b214..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kube-state-metrics/serviceMonitor.yaml +++ /dev/null @@ -1,34 +0,0 @@ -{{- if .Values.kubeStateMetrics.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kube-state-metrics - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kube-state-metrics -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: app.kubernetes.io/name - endpoints: - - port: http - {{- if .Values.kubeStateMetrics.serviceMonitor.interval }} - interval: {{ .Values.kubeStateMetrics.serviceMonitor.interval }} - {{- end }} - honorLabels: true -{{- if .Values.kubeStateMetrics.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubeStateMetrics.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubeStateMetrics.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubeStateMetrics.serviceMonitor.relabelings | indent 4 }} -{{- end }} - selector: - matchLabels: -{{- if .Values.kubeStateMetrics.serviceMonitor.selectorOverride }} -{{ toYaml .Values.kubeStateMetrics.serviceMonitor.selectorOverride | indent 6 }} -{{ else }} - app.kubernetes.io/name: kube-state-metrics - app.kubernetes.io/instance: "{{ $.Release.Name }}" -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kubelet/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kubelet/servicemonitor.yaml deleted file mode 100644 index 7f44d95e7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/kubelet/servicemonitor.yaml +++ /dev/null @@ -1,154 +0,0 @@ -{{- if (and (not .Values.kubelet.enabled) .Values.hardenedKubelet.enabled) }} -{{ required "Cannot set .Values.hardenedKubelet.enabled=true when .Values.kubelet.enabled=false" "" }} -{{- end }} -{{- if (and .Values.kubelet.enabled (not .Values.hardenedKubelet.enabled) (not .Values.k3sServer.enabled)) }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-kubelet - namespace: {{ .Values.kubelet.namespace }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-kubelet -{{- include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - endpoints: - {{- if .Values.kubelet.serviceMonitor.https }} - - port: https-metrics - scheme: https - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token - honorLabels: true -{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.cAdvisor }} - - port: https-metrics - scheme: https - path: /metrics/cadvisor - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - {{- if .Values.kubelet.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.kubelet.serviceMonitor.scrapeTimeout }} - {{- end }} - honorLabels: true - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4 }} -{{- end }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.probes }} - - port: https-metrics - scheme: https - path: /metrics/probes - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - honorLabels: true - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.kubelet.serviceMonitor.probesMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.probesMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.probesRelabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.probesRelabelings | indent 4 }} -{{- end }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.resource }} - - port: https-metrics - scheme: https - path: {{ include "kubelet.serviceMonitor.resourcePath" . }} - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - honorLabels: true - tlsConfig: - caFile: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt - insecureSkipVerify: true - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4 }} -{{- end }} -{{- end }} - {{- else }} - - port: http-metrics - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - honorLabels: true -{{- if .Values.kubelet.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.cAdvisor }} - - port: http-metrics - path: /metrics/cadvisor - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - honorLabels: true -{{- if .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.cAdvisorMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.cAdvisorRelabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.cAdvisorRelabelings | indent 4 }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.resource }} - - port: http-metrics - path: {{ include "kubelet.serviceMonitor.resourcePath" . }} - {{- if .Values.kubelet.serviceMonitor.interval }} - interval: {{ .Values.kubelet.serviceMonitor.interval }} - {{- end }} - honorLabels: true -{{- if .Values.kubelet.serviceMonitor.resourceMetricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.kubelet.serviceMonitor.resourceMetricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.kubelet.serviceMonitor.resourceRelabelings }} - relabelings: -{{ toYaml .Values.kubelet.serviceMonitor.resourceRelabelings | indent 4 }} -{{- end }} -{{- end }} -{{- end }} - {{- end }} - jobLabel: k8s-app - namespaceSelector: - matchNames: - - {{ .Values.kubelet.namespace }} - selector: - matchLabels: - k8s-app: kubelet -{{- end}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/node-exporter/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/node-exporter/servicemonitor.yaml deleted file mode 100644 index 5ed14bc5a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/exporters/node-exporter/servicemonitor.yaml +++ /dev/null @@ -1,35 +0,0 @@ -{{- if (and (not .Values.nodeExporter.enabled) .Values.hardenedNodeExporter.enabled) }} -{{ required "Cannot set .Values.hardenedNodeExporter.enabled=true when .Values.nodeExporter.enabled=false" "" }} -{{- end }} -{{- if (and .Values.nodeExporter.enabled (not .Values.hardenedNodeExporter.enabled)) }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-node-exporter - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-node-exporter -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: {{ .Values.nodeExporter.jobLabel }} - selector: - matchLabels: - app: prometheus-node-exporter - release: {{ $.Release.Name }} - endpoints: - - port: metrics - {{- if .Values.nodeExporter.serviceMonitor.interval }} - interval: {{ .Values.nodeExporter.serviceMonitor.interval }} - {{- end }} - {{- if .Values.nodeExporter.serviceMonitor.scrapeTimeout }} - scrapeTimeout: {{ .Values.nodeExporter.serviceMonitor.scrapeTimeout }} - {{- end }} -{{- if .Values.nodeExporter.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.nodeExporter.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.nodeExporter.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.nodeExporter.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmap-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmap-dashboards.yaml deleted file mode 100644 index f11af8285..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmap-dashboards.yaml +++ /dev/null @@ -1,24 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- $files := .Files.Glob "dashboards/*.json" }} -{{- if $files }} -apiVersion: v1 -kind: ConfigMapList -items: -{{- range $path, $fileContents := $files }} -{{- $dashboardName := regexReplaceAll "(^.*/)(.*)\\.json$" $path "${2}" }} -- apiVersion: v1 - kind: ConfigMap - metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) $dashboardName | trunc 63 | trimSuffix "-" }} - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 6 }} - data: - {{ $dashboardName }}.json: {{ $.Files.Get $path | toJson }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmaps-datasources.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmaps-datasources.yaml deleted file mode 100644 index c6700d84e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/configmaps-datasources.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.sidecar.datasources.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-grafana-datasource - namespace: {{ default .Values.grafana.sidecar.datasources.searchNamespace (include "kube-prometheus-stack.namespace" .) }} -{{- if .Values.grafana.sidecar.datasources.annotations }} - annotations: -{{ toYaml .Values.grafana.sidecar.datasources.annotations | indent 4 }} -{{- end }} - labels: - {{ $.Values.grafana.sidecar.datasources.label }}: "1" - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - datasource.yaml: |- - apiVersion: 1 - datasources: -{{- $scrapeInterval := .Values.grafana.sidecar.datasources.defaultDatasourceScrapeInterval | default .Values.prometheus.prometheusSpec.scrapeInterval | default "30s" }} -{{- if .Values.grafana.sidecar.datasources.defaultDatasourceEnabled }} - - name: Prometheus - type: prometheus - url: http://{{ template "kube-prometheus-stack.fullname" . }}-prometheus:{{ .Values.prometheus.service.port }}/{{ trimPrefix "/" .Values.prometheus.prometheusSpec.routePrefix }} - access: proxy - isDefault: true - jsonData: - timeInterval: {{ $scrapeInterval }} -{{- if .Values.grafana.sidecar.datasources.createPrometheusReplicasDatasources }} -{{- range until (int .Values.prometheus.prometheusSpec.replicas) }} - - name: Prometheus-{{ . }} - type: prometheus - url: http://prometheus-{{ template "kube-prometheus-stack.fullname" $ }}-prometheus-{{ . }}.prometheus-operated:9090/{{ trimPrefix "/" $.Values.prometheus.prometheusSpec.routePrefix }} - access: proxy - isDefault: false - jsonData: - timeInterval: {{ $scrapeInterval }} -{{- end }} -{{- end }} -{{- end }} -{{- if .Values.grafana.additionalDataSources }} -{{ tpl (toYaml .Values.grafana.additionalDataSources | indent 4) . }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/apiserver.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/apiserver.yaml deleted file mode 100644 index efed40873..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/apiserver.yaml +++ /dev/null @@ -1,1747 +0,0 @@ -{{- /* -Generated from 'apiserver' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.kubeApiServer.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "apiserver" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - apiserver.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "content": "The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.", - "datasource": null, - "description": "The SLO (service level objective) and other metrics displayed on this dashboard are for informational purposes only.", - "gridPos": { - "h": 2, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "mode": "markdown", - "span": 12, - "title": "Notice", - "type": "text" - } - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 3, - "description": "How many percent of requests (both read and write) in 30 days have been answered successfully and fast enough?", - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "apiserver_request:availability30d{verb=\"all\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Availability (30d) > 99.000%", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "decimals": 3, - "description": "How much error budget is left looking at our 0.990% availability guarantees?", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 8, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "100 * (apiserver_request:availability30d{verb=\"all\", cluster=\"$cluster\"} - 0.990000)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "errorbudget", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "ErrorBudget (30d) > 99.000%", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "decimals": 3, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "decimals": 3, - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 3, - "description": "How many percent of read requests (LIST,GET) in 30 days have been answered successfully and fast enough?", - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "apiserver_request:availability30d{verb=\"read\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Read Availability (30d)", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many read requests (LIST,GET) per second do the apiservers get by code?", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - { - "alias": "/2../i", - "color": "#56A64B" - }, - { - "alias": "/3../i", - "color": "#F2CC0C" - }, - { - "alias": "/4../i", - "color": "#3274D9" - }, - { - "alias": "/5../i", - "color": "#E02F44" - } - ], - "spaceLength": 10, - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\"read\", cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} code {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Read SLI - Requests", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many percent of read requests (LIST,GET) per second are returned with errors (5xx)?", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\"read\",code=~\"5..\", cluster=\"$cluster\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\"read\", cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} resource {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Read SLI - Errors", - "tooltip": { - "shared": false, - "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": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many seconds is the 99th percentile for reading (LIST|GET) a given resource?", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "cluster_quantile:apiserver_request_duration_seconds:histogram_quantile{verb=\"read\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} resource {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Read SLI - Duration", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 3, - "description": "How many percent of write requests (POST|PUT|PATCH|DELETE) in 30 days have been answered successfully and fast enough?", - "format": "percentunit", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 9, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "apiserver_request:availability30d{verb=\"write\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Write Availability (30d)", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many write requests (POST|PUT|PATCH|DELETE) per second do the apiservers get by code?", - "fill": 10, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - { - "alias": "/2../i", - "color": "#56A64B" - }, - { - "alias": "/3../i", - "color": "#F2CC0C" - }, - { - "alias": "/4../i", - "color": "#3274D9" - }, - { - "alias": "/5../i", - "color": "#E02F44" - } - ], - "spaceLength": 10, - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (code) (code_resource:apiserver_request_total:rate5m{verb=\"write\", cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} code {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Write SLI - Requests", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "reqps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many percent of write requests (POST|PUT|PATCH|DELETE) per second are returned with errors (5xx)?", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\"write\",code=~\"5..\", cluster=\"$cluster\"}) / sum by (resource) (code_resource:apiserver_request_total:rate5m{verb=\"write\", cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} resource {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Write SLI - Errors", - "tooltip": { - "shared": false, - "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": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "How many seconds is the 99th percentile for writing (POST|PUT|PATCH|DELETE) a given resource?", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "cluster_quantile:apiserver_request_duration_seconds:histogram_quantile{verb=\"write\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}} resource {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Write SLI - Duration", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(workqueue_adds_total{job=\"apiserver\", instance=~\"$instance\", cluster=\"$cluster\"}[5m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Add Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 14, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(workqueue_depth{job=\"apiserver\", instance=~\"$instance\", cluster=\"$cluster\"}[5m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Depth", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 15, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"apiserver\", instance=~\"$instance\", cluster=\"$cluster\"}[5m])) by (instance, name, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Latency", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 16, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"apiserver\",instance=~\"$instance\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 17, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{job=\"apiserver\",instance=~\"$instance\", cluster=\"$cluster\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 18, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_goroutines{job=\"apiserver\",instance=~\"$instance\", cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(apiserver_request_total, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(apiserver_request_total{job=\"apiserver\", cluster=\"$cluster\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / API server", - "uid": "09ec8aa1e996d6ffcd6817bbaff4db1b", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/cluster-total.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/cluster-total.yaml deleted file mode 100644 index fde561c82..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/cluster-total.yaml +++ /dev/null @@ -1,1882 +0,0 @@ -{{- /* -Generated from 'cluster-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "cluster-total" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - cluster-total.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Current Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "columns": [ - { - "text": "Time", - "value": "Time" - }, - { - "text": "Value #A", - "value": "Value #A" - }, - { - "text": "Value #B", - "value": "Value #B" - }, - { - "text": "Value #C", - "value": "Value #C" - }, - { - "text": "Value #D", - "value": "Value #D" - }, - { - "text": "Value #E", - "value": "Value #E" - }, - { - "text": "Value #F", - "value": "Value #F" - }, - { - "text": "Value #G", - "value": "Value #G" - }, - { - "text": "Value #H", - "value": "Value #H" - }, - { - "text": "namespace", - "value": "namespace" - } - ], - "datasource": "$datasource", - "fill": 1, - "fontSize": "90%", - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 5, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null as zero", - "renderer": "flot", - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": false - }, - "spaceLength": 10, - "span": 24, - "styles": [ - { - "alias": "Time", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Time", - "thresholds": [ - - ], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Current Bandwidth Received", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Bandwidth Transmitted", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Average Bandwidth Received", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Average Bandwidth Transmitted", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "d/8b7a8b326d7a6f1f04244066368c67af/kubernetes-networking-namespace-pods?orgId=1&refresh=30s&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Status", - "type": "table" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 6, - "panels": [ - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 11 - }, - "id": 9, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth History", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 12 - }, - "id": 10, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 30 - }, - "id": 12, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 31 - }, - "id": 13, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 40 - }, - "id": 14, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Packets", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 31 - }, - "id": 15, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 50 - }, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 59 - }, - "id": 17, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\".+\"}[$interval:$resolution])) by (namespace))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 59 - }, - "id": 18, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - { - "targetBlank": true, - "title": "What is TCP Retransmit?", - "url": "https://accedian.com/enterprises/blog/network-packet-loss-retransmissions-and-duplicate-acknowledgements/" - } - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(rate(node_netstat_Tcp_RetransSegs{cluster=\"$cluster\"}[$interval:$resolution]) / rate(node_netstat_Tcp_OutSegs{cluster=\"$cluster\"}[$interval:$resolution])) by (instance))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of TCP Retransmits out of all sent segments", - "tooltip": { - "shared": true, - "sort": 2, - "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": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 59 - }, - "id": 19, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": true, - "min": true, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 2, - "links": [ - { - "targetBlank": true, - "title": "Why monitor SYN retransmits?", - "url": "https://github.com/prometheus/node_exporter/issues/1023#issuecomment-408128365" - } - ], - "minSpan": 24, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(rate(node_netstat_TcpExt_TCPSynRetrans{cluster=\"$cluster\"}[$interval:$resolution]) / rate(node_netstat_Tcp_RetransSegs{cluster=\"$cluster\"}[$interval:$resolution])) by (instance))", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of TCP SYN Retransmits out of all retransmits", - "tooltip": { - "shared": true, - "sort": 2, - "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": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Errors", - "titleSize": "h6", - "type": "row" - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "resolution", - "options": [ - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": true, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - } - ], - "query": "30s,5m,1h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "interval", - "options": [ - { - "selected": true, - "text": "4h", - "value": "4h" - } - ], - "query": "4h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Networking / Cluster", - "uid": "ff635a025bcfea7bc3dd4f508990a3e9", - "version": 0 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/controller-manager.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/controller-manager.yaml deleted file mode 100644 index f06464e36..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/controller-manager.yaml +++ /dev/null @@ -1,1157 +0,0 @@ -{{- /* -Generated from 'controller-manager' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubeControllerManager.enabled" .)}} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "controller-manager" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - controller-manager.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - {{- if .Values.k3sServer.enabled }} - "expr": "sum(up{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\"})", - {{- end }} - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Up", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(workqueue_adds_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Add Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(workqueue_depth{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance, name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Depth", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(workqueue_queue_duration_seconds_bucket{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance, name, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}name{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Work Queue Latency", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\",code=~\"2..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\",code=~\"3..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\",code=~\"4..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\",code=~\"5..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5xx", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Kube API Request Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 8, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\", verb=\"POST\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Post Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Get Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\",instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_goroutines{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(process_cpu_seconds_total{job=\"{{ include "exporter.kubeControllerManager.jobName" . }}\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Controller Manager", - "uid": "72e0e05bef5099e5f049b05fdc429ed4", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/etcd.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/etcd.yaml deleted file mode 100644 index 78f230581..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/etcd.yaml +++ /dev/null @@ -1,1118 +0,0 @@ -{{- /* -Generated from 'etcd' from https://raw.githubusercontent.com/etcd-io/website/master/content/docs/current/op-guide/grafana.json -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubeEtcd.enabled" .)}} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "etcd" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - etcd.json: |- - { - "annotations": { - "list": [] - }, - "description": "etcd sample Grafana dashboard with Prometheus", - "editable": true, - "gnetId": null, - "hideControls": false, - "links": [], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 28, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [ - { - "expr": "sum(etcd_server_has_leader{job=\"$cluster\"})", - "intervalFactor": 2, - "legendFormat": "", - "metric": "etcd_server_has_leader", - "refId": "A", - "step": 20 - } - ], - "thresholds": "", - "title": "Up", - "type": "singlestat", - "valueFontSize": "200%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 23, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(grpc_server_started_total{job=\"$cluster\",grpc_type=\"unary\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RPC Rate", - "metric": "grpc_server_started_total", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(rate(grpc_server_handled_total{job=\"$cluster\",grpc_type=\"unary\",grpc_code!=\"OK\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RPC Failed Rate", - "metric": "grpc_server_handled_total", - "refId": "B", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "RPC Rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 41, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(grpc_server_started_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"})", - "intervalFactor": 2, - "legendFormat": "Watch Streams", - "metric": "grpc_server_handled_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(grpc_server_started_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"})", - "intervalFactor": 2, - "legendFormat": "Lease Streams", - "metric": "grpc_server_handled_total", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Active Streams", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "showTitle": false, - "title": "Row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": null, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "etcd_mvcc_db_total_size_in_bytes{job=\"$cluster\"}", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} DB Size", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "DB Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 1, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": true, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=\"$cluster\"}[5m])) by (instance, le))", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} WAL fsync", - "metric": "etcd_disk_wal_fsync_duration_seconds_bucket", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job=\"$cluster\"}[5m])) by (instance, le))", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} DB fsync", - "metric": "etcd_disk_backend_commit_duration_seconds_bucket", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Disk Sync Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 29, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"$cluster\"}", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Resident Memory", - "metric": "process_resident_memory_bytes", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 5, - "id": 22, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(etcd_network_client_grpc_received_bytes_total{job=\"$cluster\"}[5m])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Client Traffic In", - "metric": "etcd_network_client_grpc_received_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Client Traffic In", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 5, - "id": 21, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(etcd_network_client_grpc_sent_bytes_total{job=\"$cluster\"}[5m])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Client Traffic Out", - "metric": "etcd_network_client_grpc_sent_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Client Traffic Out", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 20, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_peer_received_bytes_total{job=\"$cluster\"}[5m])) by (instance)", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Peer Traffic In", - "metric": "etcd_network_peer_received_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Peer Traffic In", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": null, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_peer_sent_bytes_total{job=\"$cluster\"}[5m])) by (instance)", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Peer Traffic Out", - "metric": "etcd_network_peer_sent_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Peer Traffic Out", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 40, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_server_proposals_failed_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Failure Rate", - "metric": "etcd_server_proposals_failed_total", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(etcd_server_proposals_pending{job=\"$cluster\"})", - "intervalFactor": 2, - "legendFormat": "Proposal Pending Total", - "metric": "etcd_server_proposals_pending", - "refId": "B", - "step": 2 - }, - { - "expr": "sum(rate(etcd_server_proposals_committed_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Commit Rate", - "metric": "etcd_server_proposals_committed_total", - "refId": "C", - "step": 2 - }, - { - "expr": "sum(rate(etcd_server_proposals_applied_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Apply Rate", - "refId": "D", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Raft Proposals", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": 0, - "editable": true, - "error": false, - "fill": 0, - "id": 19, - "isNew": true, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "changes(etcd_server_leader_changes_seen_total{job=\"$cluster\"}[1d])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Total Leader Elections Per Day", - "metric": "etcd_server_leader_changes_seen_total", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Total Leader Elections Per Day", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - } - ], - "schemaVersion": 13, - "sharedCrosshair": false, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [], - "query": "label_values(etcd_server_has_leader, job)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "now": true, - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "etcd", - "uid": "c2f4e12cdf69feb95caa41a5a1b423d9", - "version": 215 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-coredns.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-coredns.yaml deleted file mode 100644 index 8e4eaec61..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-coredns.yaml +++ /dev/null @@ -1,1529 +0,0 @@ -{{- /* Added manually, can be changed in-place. */ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.coreDns.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-coredns" | trunc 63 | trimSuffix "-" }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-coredns.json: |- - { - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "A dashboard for the CoreDNS DNS server with updated metrics for version 1.7.0+. Based on the CoreDNS dashboard by buhay.", - "editable": true, - "gnetId": 12539, - "graphTooltip": 0, - "iteration": 1603798405693, - "links": [ - { - "icon": "external link", - "tags": [], - "targetBlank": true, - "title": "CoreDNS.io", - "type": "link", - "url": "https://coredns.io" - } - ], - "panels": [ - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [], - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 80 - } - ] - } - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 0, - "y": 0 - }, - "hiddenSeries": false, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_dns_request_count_total{instance=~\"$instance\"}[5m])) by (proto) or\nsum(rate(coredns_dns_requests_total{instance=~\"$instance\"}[5m])) by (proto)", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (total)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 8, - "y": 0 - }, - "hiddenSeries": false, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "yaxis": 2 - }, - { - "alias": "other", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_dns_request_type_count_total{instance=~\"$instance\"}[5m])) by (type) or \nsum(rate(coredns_dns_requests_total{instance=~\"$instance\"}[5m])) by (type)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{type}}"}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (by qtype)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 8, - "x": 16, - "y": 0 - }, - "hiddenSeries": false, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_dns_request_count_total{instance=~\"$instance\"}[5m])) by (zone) or\nsum(rate(coredns_dns_requests_total{instance=~\"$instance\"}[5m])) by (zone)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{zone}}"}}", - "refId": "A", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (by zone)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 7 - }, - "hiddenSeries": false, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "total", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_dns_request_do_count_total{instance=~\"$instance\"}[5m])) or\nsum(rate(coredns_dns_do_requests_total{instance=~\"$instance\"}[5m]))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "DO", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(coredns_dns_request_count_total{instance=~\"$instance\"}[5m])) or\nsum(rate(coredns_dns_requests_total{instance=~\"$instance\"}[5m]))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "total", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (DO bit)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 6, - "x": 12, - "y": 7 - }, - "hiddenSeries": false, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "tcp:90", - "yaxis": 2 - }, - { - "alias": "tcp:99 ", - "yaxis": 2 - }, - { - "alias": "tcp:50", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto))", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:99 ", - "refId": "A", - "step": 60 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto))", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:90", - "refId": "B", - "step": 60 - }, - { - "expr": "histogram_quantile(0.50, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto))", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:50", - "refId": "C", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (size, udp)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 6, - "x": 18, - "y": 7 - }, - "hiddenSeries": false, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "tcp:90", - "yaxis": 1 - }, - { - "alias": "tcp:99 ", - "yaxis": 1 - }, - { - "alias": "tcp:50", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le,proto))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:99 ", - "refId": "A", - "step": 60 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le,proto))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:90", - "refId": "B", - "step": 60 - }, - { - "expr": "histogram_quantile(0.50, sum(rate(coredns_dns_request_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le,proto))", - "format": "time_series", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:50", - "refId": "C", - "step": 60 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Requests (size,tcp)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 14 - }, - "hiddenSeries": false, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_dns_response_rcode_count_total{instance=~\"$instance\"}[5m])) by (rcode) or\nsum(rate(coredns_dns_responses_total{instance=~\"$instance\"}[5m])) by (rcode)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{rcode}}"}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Responses (by rcode)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 14 - }, - "hiddenSeries": false, - "id": 32, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(coredns_dns_request_duration_seconds_bucket{instance=~\"$instance\"}[5m])) by (le, job))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "99%", - "refId": "A", - "step": 40 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(coredns_dns_request_duration_seconds_bucket{instance=~\"$instance\"}[5m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "90%", - "refId": "B", - "step": 40 - }, - { - "expr": "histogram_quantile(0.50, sum(rate(coredns_dns_request_duration_seconds_bucket{instance=~\"$instance\"}[5m])) by (le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "50%", - "refId": "C", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Responses (duration)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 21 - }, - "hiddenSeries": false, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "udp:50%", - "yaxis": 1 - }, - { - "alias": "tcp:50%", - "yaxis": 2 - }, - { - "alias": "tcp:90%", - "yaxis": 2 - }, - { - "alias": "tcp:99%", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto)) ", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:99%", - "refId": "A", - "step": 40 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto)) ", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:90%", - "refId": "B", - "step": 40 - }, - { - "expr": "histogram_quantile(0.50, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"udp\"}[5m])) by (le,proto)) ", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:50%", - "metric": "", - "refId": "C", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Responses (size, udp)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 21 - }, - "hiddenSeries": false, - "id": 20, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "udp:50%", - "yaxis": 1 - }, - { - "alias": "tcp:50%", - "yaxis": 1 - }, - { - "alias": "tcp:90%", - "yaxis": 1 - }, - { - "alias": "tcp:99%", - "yaxis": 1 - } - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le,proto)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:99%", - "refId": "A", - "step": 40 - }, - { - "expr": "histogram_quantile(0.90, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le,proto)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:90%", - "refId": "B", - "step": 40 - }, - { - "expr": "histogram_quantile(0.50, sum(rate(coredns_dns_response_size_bytes_bucket{instance=~\"$instance\",proto=\"tcp\"}[5m])) by (le, proto)) ", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{"{{proto}}"}}:50%", - "metric": "", - "refId": "C", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Responses (size, tcp)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 0, - "y": 28 - }, - "hiddenSeries": false, - "id": 22, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(coredns_cache_size{instance=~\"$instance\"}) by (type) or\nsum(coredns_cache_entries{instance=~\"$instance\"}) by (type)", - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{"{{type}}"}}", - "refId": "A", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Cache (size)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "decbytes", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - }, - { - "aliasColors": {}, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fieldConfig": { - "defaults": { - "custom": {}, - "links": [] - }, - "overrides": [] - }, - "fill": 1, - "fillGradient": 0, - "grid": {}, - "gridPos": { - "h": 7, - "w": 12, - "x": 12, - "y": 28 - }, - "hiddenSeries": false, - "id": 24, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "options": { - "alertThreshold": true - }, - "percentage": false, - "pluginVersion": "7.2.0", - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "misses", - "yaxis": 2 - } - ], - "spaceLength": 10, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(coredns_cache_hits_total{instance=~\"$instance\"}[5m])) by (type)", - "hide": false, - "intervalFactor": 2, - "legendFormat": "hits:{{"{{type}}"}}", - "refId": "A", - "step": 40 - }, - { - "expr": "sum(rate(coredns_cache_misses_total{instance=~\"$instance\"}[5m])) by (type)", - "hide": false, - "intervalFactor": 2, - "legendFormat": "misses", - "refId": "B", - "step": 40 - } - ], - "thresholds": [], - "timeFrom": null, - "timeRegions": [], - "timeShift": null, - "title": "Cache (hitrate)", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ], - "yaxis": { - "align": false, - "alignLevel": null - } - } - ], - "refresh": "10s", - "schemaVersion": 26, - "style": "dark", - "tags": [ - "dns", - "coredns" - ], - "templating": { - "list": [ - { - "current": { - "selected": true, - "text": "default", - "value": "default" - }, - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "datasource", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "allValue": ".*", - "current": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "definition": "label_values(up{job=\"coredns\"}, instance)", - "hide": 0, - "includeAll": true, - "label": "Instance", - "multi": false, - "name": "instance", - "options": [], - "query": "label_values(up{job=\"coredns\"}, instance)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 3, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-3h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ] - }, - "timezone": "utc", - "title": "CoreDNS", - "uid": "vkQ0UHxik", - "version": 2 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml deleted file mode 100644 index 9639fc15c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-cluster.yaml +++ /dev/null @@ -1,2582 +0,0 @@ -{{- /* -Generated from 'k8s-resources-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-cluster" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-cluster.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "100px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 1, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", cluster=\"$cluster\"}[$__rate_interval]))", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable_cpu_cores{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Requests Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable_cpu_cores{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Limits Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - sum(:node_memory_MemAvailable_bytes:sum{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable_memory_bytes{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable_memory_bytes{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Requests Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) / sum(kube_node_status_allocatable_memory_bytes{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Limits Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Headlines", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workloads", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to workloads", - "linkUrl": "./d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(kube_pod_owner{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\"}) by (workload, namespace)) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container!=\"\"}) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (w/o cache)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workloads", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to workloads", - "linkUrl": "./d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(kube_pod_owner{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "count(avg(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\"}) by (workload, namespace)) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container!=\"\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container!=\"\"}) by (namespace) / sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container!=\"\"}) by (namespace) / sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Requests by Namespace", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Requests", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 11, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Current Receive Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Transmit Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Network Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Namespace: Received", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Namespace: Transmitted", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 17, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 18, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 19, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\".+\"}[$__rate_interval])) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(node_cpu_seconds_total, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Cluster", - "uid": "efa86fd1d0c121a26444b636a3f509a8", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml deleted file mode 100644 index 40355c6b8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-namespace.yaml +++ /dev/null @@ -1,2286 +0,0 @@ -{{- /* -Generated from 'k8s-resources-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-namespace" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-namespace.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "100px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation (from requests)", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation (from limits)", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) / sum(kube_pod_container_resource_requests_memory_bytes{namespace=\"$namespace\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilization (from requests)", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) / sum(kube_pod_container_resource_limits_memory_bytes{namespace=\"$namespace\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation (from limits)", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Headlines", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "quota - requests", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.cpu\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.cpu\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "quota - requests", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (w/o cache)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Usage (RSS)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Cache)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Swap)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(kube_pod_container_resource_requests_memory_bytes{namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\", image!=\"\"}) by (pod) / sum(kube_pod_container_resource_limits_memory_bytes{namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_cache{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(container_memory_swap{cluster=\"$cluster\", namespace=\"$namespace\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 9, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Current Receive Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Transmit Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Network Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 14, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 15, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Namespace (Pods)", - "uid": "85a562078cdf77779eaa1add43ccec1e", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-node.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-node.yaml deleted file mode 100644 index ce6628ae5..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-node.yaml +++ /dev/null @@ -1,978 +0,0 @@ -{{- /* -Generated from 'k8s-resources-node' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-node" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-node.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", node=~\"$node\"}) by (pod) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\", container!=\"\"}) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (w/o cache)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Usage (RSS)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Cache)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Swap)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(kube_pod_container_resource_requests_memory_bytes{node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_memory_working_set_bytes{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod) / sum(kube_pod_container_resource_limits_memory_bytes{node=~\"$node\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_memory_rss{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_memory_cache{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_memory_swap{cluster=\"$cluster\", node=~\"$node\",container!=\"\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": true, - "name": "node", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, node)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Node (Pods)", - "uid": "200ac8fdbfbb74b39aff88118e4d1c2c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml deleted file mode 100644 index 6badcf173..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-pod.yaml +++ /dev/null @@ -1,1772 +0,0 @@ -{{- /* -Generated from 'k8s-resources-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-pod" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-pod.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "requests", - "color": "#F2495C", - "fill": 0, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - }, - { - "alias": "limits", - "color": "#FF9830", - "fill": 0, - "hideTooltip": true, - "legend": true, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\", cluster=\"$cluster\"}) by (container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"})\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"})\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 2, - "legend": { - "avg": false, - "current": true, - "max": true, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(increase(container_cpu_cfs_throttled_periods_total{namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\", container!=\"\", cluster=\"$cluster\"}[5m])) by (container) /sum(increase(container_cpu_cfs_periods_total{namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\", container!=\"\", cluster=\"$cluster\"}[5m])) by (container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - { - "colorMode": "critical", - "fill": true, - "line": true, - "op": "gt", - "value": 0.25, - "yaxis": "left" - } - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Throttling", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Throttling", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Container", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "container", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "requests", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - }, - { - "alias": "limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\", container!=\"\", image!=\"\"}) by (container)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"})\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"})\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Usage (RSS)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Cache)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Swap)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Container", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "container", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"POD\", container!=\"\", image!=\"\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", image!=\"\"}) by (container) / sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\", image!=\"\"}) by (container) / sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container != \"\", container != \"POD\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_cache{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container != \"\", container != \"POD\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(container_memory_swap{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container != \"\", container != \"POD\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{namespace=~\"$namespace\", pod=~\"$pod\"}[$__rate_interval])) by (pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "pod", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=\"$namespace\"}, pod)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Pod", - "uid": "6581e46e4e5c7ba40a07646395ef7b23", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml deleted file mode 100644 index 931934f23..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workload.yaml +++ /dev/null @@ -1,2034 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-workload" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-workload.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 5, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Current Receive Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Transmit Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Network Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Pod: Received", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Pod: Transmitted", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "workload", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\"}, workload)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "type", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\"}, workload_type)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Workload", - "uid": "a164a7f0339f99e89cea5cb47e9be617", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml deleted file mode 100644 index dd3b25065..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/k8s-resources-workloads-namespace.yaml +++ /dev/null @@ -1,2195 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workloads-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-workloads-namespace" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-workloads-namespace.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "quota - requests", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}} - {{`{{`}}workload_type{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.cpu\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.cpu\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Running Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workload Type", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "workload_type", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(\n node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "quota - requests", - "color": "#F2495C", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - }, - { - "alias": "quota - limits", - "color": "#FF9830", - "dashes": true, - "fill": 0, - "hideTooltip": true, - "legend": false, - "linewidth": 2, - "stack": false - } - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}} - {{`{{`}}workload_type{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"requests.memory\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - requests", - "legendLink": null, - "step": 10 - }, - { - "expr": "scalar(kube_resourcequota{cluster=\"$cluster\", namespace=\"$namespace\", type=\"hard\",resource=\"limits.memory\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "quota - limits", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Running Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "./d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workload Type", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "workload_type", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}) by (workload, workload_type)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(\n container_memory_working_set_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container!=\"\", image!=\"\"}\n * on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n* on(namespace,pod)\n group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=\"$namespace\", workload_type=\"$type\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 5, - "interval": "1m", - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Current Receive Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Transmit Bandwidth", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTargetBlank": false, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$type", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workload Type", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "workload_type", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Network Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Workload: Received", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Container Bandwidth by Workload: Transmitted", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 11, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 12, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 13, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\", namespace=~\"$namespace\"}[$__rate_interval])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\", namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "deployment", - "value": "deployment" - }, - "datasource": "$datasource", - "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{namespace=~\"$namespace\", workload=~\".+\"}, workload_type)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "type", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{namespace=~\"$namespace\", workload=~\".+\"}, workload_type)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Compute Resources / Namespace (Workloads)", - "uid": "a87fb0d919ec0ea5f6543124e16c42a5", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/kubelet.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/kubelet.yaml deleted file mode 100644 index 6b7456572..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/kubelet.yaml +++ /dev/null @@ -1,2535 +0,0 @@ -{{- /* -Generated from 'kubelet' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubelet.enabled" .) }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "kubelet" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - kubelet.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(up{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Up", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(kubelet_running_pods{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}) OR sum(kubelet_running_pod_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": "", - "title": "Running Pods", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 4, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(kubelet_running_containers{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}) OR sum(kubelet_running_container_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": "", - "title": "Running Container", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(volume_manager_total_volumes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\", state=\"actual_state_of_world\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": "", - "title": "Actual Volume Count", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 6, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(volume_manager_total_volumes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\",state=\"desired_state_of_world\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": "", - "title": "Desired Volume Count", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 7, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(kubelet_node_config_error{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": "", - "title": "Config Error Count", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_runtime_operations_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (operation_type, instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_type{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Operation Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_runtime_operations_errors_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, operation_type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_type{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Operation Error Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_runtime_operations_duration_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, operation_type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_type{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Operation duration 99th quantile", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} pod", - "refId": "A" - }, - { - "expr": "sum(rate(kubelet_pod_worker_duration_seconds_count{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} worker", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Start Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 12, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_pod_start_duration_seconds_count{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} pod", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} worker", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Pod Start Duration", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 13, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(storage_operation_duration_seconds_count{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, operation_name, volume_plugin)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_name{{`}}`}} {{`{{`}}volume_plugin{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Storage Operation Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 14, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(storage_operation_errors_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, operation_name, volume_plugin)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_name{{`}}`}} {{`{{`}}volume_plugin{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Storage Operation Error Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 15, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(storage_operation_duration_seconds_bucket{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m])) by (instance, operation_name, volume_plugin, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_name{{`}}`}} {{`{{`}}volume_plugin{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Storage Operation Duration 99th quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 16, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_cgroup_manager_duration_seconds_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m])) by (instance, operation_type)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}operation_type{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Cgroup manager operation rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 17, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_cgroup_manager_duration_seconds_bucket{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m])) by (instance, operation_type, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}operation_type{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Cgroup manager 99th quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "description": "Pod lifecycle event generator", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 18, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubelet_pleg_relist_duration_seconds_count{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 19, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_interval_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist interval", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 20, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "PLEG relist duration", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 21, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\",code=~\"2..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\",code=~\"3..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\",code=~\"4..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\",code=~\"5..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5xx", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "RPC Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 22, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", instance=~\"$instance\"}[5m])) by (instance, verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Request duration 99th quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 23, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 24, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 25, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_goroutines{cluster=\"$cluster\",job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(kubelet_runtime_operations_total{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Kubelet", - "uid": "3138fa155d5915769fbded898ac09fd9", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-pod.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-pod.yaml deleted file mode 100644 index 20def0a8d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-pod.yaml +++ /dev/null @@ -1,1464 +0,0 @@ -{{- /* -Generated from 'namespace-by-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "namespace-by-pod" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - namespace-by-pod.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Current Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "time_series", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 1 - }, - "height": 9, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "minSpan": 12, - "nullPointMode": "connected", - "nullText": null, - "options": { - "fieldOptions": { - "calcs": [ - "last" - ], - "defaults": { - "max": 10000000000, - "min": 0, - "title": "$namespace", - "unit": "Bps" - }, - "mappings": [ - - ], - "override": { - - }, - "thresholds": [ - { - "color": "dark-green", - "index": 0, - "value": null - }, - { - "color": "dark-yellow", - "index": 1, - "value": 5000000000 - }, - { - "color": "dark-red", - "index": 2, - "value": 7000000000 - } - ], - "values": false - } - }, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 12, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution]))", - "format": "time_series", - "instant": null, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Received", - "type": "gauge", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "time_series", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 1 - }, - "height": 9, - "id": 4, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "minSpan": 12, - "nullPointMode": "connected", - "nullText": null, - "options": { - "fieldOptions": { - "calcs": [ - "last" - ], - "defaults": { - "max": 10000000000, - "min": 0, - "title": "$namespace", - "unit": "Bps" - }, - "mappings": [ - - ], - "override": { - - }, - "thresholds": [ - { - "color": "dark-green", - "index": 0, - "value": null - }, - { - "color": "dark-yellow", - "index": 1, - "value": 5000000000 - }, - { - "color": "dark-red", - "index": 2, - "value": 7000000000 - } - ], - "values": false - } - }, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 12, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution]))", - "format": "time_series", - "instant": null, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Transmitted", - "type": "gauge", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "columns": [ - { - "text": "Time", - "value": "Time" - }, - { - "text": "Value #A", - "value": "Value #A" - }, - { - "text": "Value #B", - "value": "Value #B" - }, - { - "text": "Value #C", - "value": "Value #C" - }, - { - "text": "Value #D", - "value": "Value #D" - }, - { - "text": "Value #E", - "value": "Value #E" - }, - { - "text": "Value #F", - "value": "Value #F" - }, - { - "text": "pod", - "value": "pod" - } - ], - "datasource": "$datasource", - "fill": 1, - "fontSize": "100%", - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 5, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null as zero", - "renderer": "flot", - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": false - }, - "spaceLength": 10, - "span": 24, - "styles": [ - { - "alias": "Time", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Time", - "thresholds": [ - - ], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Bandwidth Received", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Bandwidth Transmitted", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "d/7a18067ce943a40ae25454675c19ff5c/kubernetes-networking-pod?orgId=1&refresh=30s&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Status", - "type": "table" - }, - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 6, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 20 - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 20 - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 29 - }, - "id": 9, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 30 - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 30 - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Packets", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 30 - }, - "id": 12, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 40 - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 40 - }, - "id": 14, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Errors", - "titleSize": "h6", - "type": "row" - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".+", - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "kube-system", - "value": "kube-system" - }, - "datasource": "$datasource", - "definition": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "resolution", - "options": [ - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": true, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - } - ], - "query": "30s,5m,1h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "interval", - "options": [ - { - "selected": true, - "text": "4h", - "value": "4h" - } - ], - "query": "4h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Networking / Namespace (Pods)", - "uid": "8b7a8b326d7a6f1f04244066368c67af", - "version": 0 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-workload.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-workload.yaml deleted file mode 100644 index adecffa09..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/namespace-by-workload.yaml +++ /dev/null @@ -1,1736 +0,0 @@ -{{- /* -Generated from 'namespace-by-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "namespace-by-workload" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - namespace-by-workload.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Current Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} workload {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} workload {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "columns": [ - { - "text": "Time", - "value": "Time" - }, - { - "text": "Value #A", - "value": "Value #A" - }, - { - "text": "Value #B", - "value": "Value #B" - }, - { - "text": "Value #C", - "value": "Value #C" - }, - { - "text": "Value #D", - "value": "Value #D" - }, - { - "text": "Value #E", - "value": "Value #E" - }, - { - "text": "Value #F", - "value": "Value #F" - }, - { - "text": "Value #G", - "value": "Value #G" - }, - { - "text": "Value #H", - "value": "Value #H" - }, - { - "text": "workload", - "value": "workload" - } - ], - "datasource": "$datasource", - "fill": 1, - "fontSize": "90%", - "gridPos": { - "h": 9, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 5, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null as zero", - "renderer": "flot", - "scroll": true, - "showHeader": true, - "sort": { - "col": 0, - "desc": false - }, - "spaceLength": 10, - "span": 24, - "styles": [ - { - "alias": "Time", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Time", - "thresholds": [ - - ], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Current Bandwidth Received", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Current Bandwidth Transmitted", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Average Bandwidth Received", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Average Bandwidth Transmitted", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "Bps" - }, - { - "alias": "Rate of Received Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Received Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Rate of Transmitted Packets Dropped", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "pps" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "d/728bf77cc1166d2f3133bf25846876cc/kubernetes-networking-workload?orgId=1&refresh=30s&var-namespace=$namespace&var-type=$type&var-workload=$__cell", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Status", - "type": "table" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 19 - }, - "id": 6, - "panels": [ - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 20 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} workload {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 20 - }, - "id": 8, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} workload {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 29 - }, - "id": 9, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth HIstory", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 38 - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 38 - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 39 - }, - "id": 12, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 40 - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 40 - }, - "id": 14, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Packets", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 40 - }, - "id": 15, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 41 - }, - "id": 16, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 41 - }, - "id": 17, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\", workload_type=\"$type\"}) by (workload))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}workload{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Errors", - "titleSize": "h6", - "type": "row" - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "kube-system", - "value": "kube-system" - }, - "datasource": "$datasource", - "definition": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "deployment", - "value": "deployment" - }, - "datasource": "$datasource", - "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\"}, workload_type)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "type", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\".+\"}, workload_type)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "resolution", - "options": [ - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": true, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - } - ], - "query": "30s,5m,1h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "interval", - "options": [ - { - "selected": true, - "text": "4h", - "value": "4h" - } - ], - "query": "4h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Networking / Namespace (Workload)", - "uid": "bbb2a765a623ae38130206c7d94a160f", - "version": 0 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml deleted file mode 100644 index 7ef72f97a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-cluster-rsrc-use.yaml +++ /dev/null @@ -1,964 +0,0 @@ -{{- /* -Generated from 'node-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "node-cluster-rsrc-use" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - node-cluster-rsrc-use.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n instance:node_cpu_utilisation:rate1m{job=\"node-exporter\"}\n*\n instance:node_num_cpu:sum{job=\"node-exporter\"}\n)\n/ scalar(sum(instance:node_num_cpu:sum{job=\"node-exporter\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_load1_per_cpu:ratio{job=\"node-exporter\"}\n/ scalar(count(instance:node_load1_per_cpu:ratio{job=\"node-exporter\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (load1 per 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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_memory_utilisation:ratio{job=\"node-exporter\"}\n/ scalar(count(instance:node_memory_utilisation:ratio{job=\"node-exporter\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_vmstat_pgmajfault:rate1m{job=\"node-exporter\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Major Page Faults)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "rps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/ Receive/", - "stack": "A" - }, - { - "alias": "/ Transmit/", - "stack": "B", - "transform": "negative-Y" - } - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_network_receive_bytes_excluding_lo:rate1m{job=\"node-exporter\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Receive", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - }, - { - "expr": "instance:node_network_transmit_bytes_excluding_lo:rate1m{job=\"node-exporter\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Transmit", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Utilisation (Bytes Receive/Transmit)", - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/ Receive/", - "stack": "A" - }, - { - "alias": "/ Transmit/", - "stack": "B", - "transform": "negative-Y" - } - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_network_receive_drop_excluding_lo:rate1m{job=\"node-exporter\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Receive", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - }, - { - "expr": "instance:node_network_transmit_drop_excluding_lo:rate1m{job=\"node-exporter\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Transmit", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Saturation (Drops Receive/Transmit)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "rps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_seconds:rate1m{job=\"node-exporter\"}\n/ scalar(count(instance_device:node_disk_io_time_seconds:rate1m{job=\"node-exporter\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}device{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_weighted_seconds:rate1m{job=\"node-exporter\"}\n/ scalar(count(instance_device:node_disk_io_time_weighted_seconds:rate1m{job=\"node-exporter\"}))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} {{`{{`}}device{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk IO", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum without (device) (\n max without (fstype, mountpoint) (\n node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\"} - node_filesystem_avail_bytes{job=\"node-exporter\", fstype!=\"\"}\n )\n) \n/ scalar(sum(max without (fstype, mountpoint) (node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\"})))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "legendLink": "/dashboard/file/node-rsrc-use.json", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Utilisation", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk Space", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "utc", - "title": "USE Method / Cluster", - "uid": "", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-rsrc-use.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-rsrc-use.yaml deleted file mode 100644 index 9defce091..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/node-rsrc-use.yaml +++ /dev/null @@ -1,991 +0,0 @@ -{{- /* -Generated from 'node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.nodeExporter.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "node-rsrc-use" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - node-rsrc-use.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_cpu_utilisation:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_load1_per_cpu:ratio{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Saturation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (Load1 per 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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_memory_utilisation:ratio{job=\"node-exporter\", job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Memory", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_vmstat_pgmajfault:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Major page faults", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Major Page Faults)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/Receive/", - "stack": "A" - }, - { - "alias": "/Transmit/", - "stack": "B", - "transform": "negative-Y" - } - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_network_receive_bytes_excluding_lo:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Receive", - "legendLink": null, - "step": 10 - }, - { - "expr": "instance:node_network_transmit_bytes_excluding_lo:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Transmit", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Utilisation (Bytes Receive/Transmit)", - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - { - "alias": "/Receive/", - "stack": "A" - }, - { - "alias": "/Transmit/", - "stack": "B", - "transform": "negative-Y" - } - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance:node_network_receive_drop_excluding_lo:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Receive drops", - "legendLink": null, - "step": 10 - }, - { - "expr": "instance:node_network_transmit_drop_excluding_lo:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Transmit drops", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Saturation (Drops Receive/Transmit)", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "rps", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Net", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_seconds:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "instance_device:node_disk_io_time_weighted_seconds:rate1m{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk IO", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 -\n(\n max without (mountpoint, fstype) (node_filesystem_avail_bytes{job=\"node-exporter\", fstype!=\"\", instance=\"$instance\"})\n/\n max without (mountpoint, fstype) (node_filesystem_size_bytes{job=\"node-exporter\", fstype!=\"\", instance=\"$instance\"})\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Utilisation", - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk Space", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "instance", - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(up{job=\"node-exporter\"}, instance)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "utc", - "title": "USE Method / Node", - "uid": "", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/nodes.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/nodes.yaml deleted file mode 100644 index 8c67344c4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/nodes.yaml +++ /dev/null @@ -1,997 +0,0 @@ -{{- /* -Generated from 'nodes' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "nodes" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - nodes.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n (1 - rate(node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"}[$__interval]))\n/ ignoring(cpu) group_left\n count without (cpu)( node_cpu_seconds_total{job=\"node-exporter\", mode=\"idle\", instance=\"$instance\"})\n)\n", - "format": "time_series", - "interval": "1m", - "intervalFactor": 5, - "legendFormat": "{{`{{`}}cpu{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "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": 1, - "min": 0, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": 1, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 0, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node_load1{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "1m load average", - "refId": "A" - }, - { - "expr": "node_load5{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5m load average", - "refId": "B" - }, - { - "expr": "node_load15{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "15m load average", - "refId": "C" - }, - { - "expr": "count(node_cpu_seconds_total{job=\"node-exporter\", instance=\"$instance\", mode=\"idle\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "logical cores", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Load Average", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n node_memory_MemTotal_bytes{job=\"node-exporter\", instance=\"$instance\"}\n-\n node_memory_MemFree_bytes{job=\"node-exporter\", instance=\"$instance\"}\n-\n node_memory_Buffers_bytes{job=\"node-exporter\", instance=\"$instance\"}\n-\n node_memory_Cached_bytes{job=\"node-exporter\", instance=\"$instance\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory used", - "refId": "A" - }, - { - "expr": "node_memory_Buffers_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory buffers", - "refId": "B" - }, - { - "expr": "node_memory_Cached_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory cached", - "refId": "C" - }, - { - "expr": "node_memory_MemFree_bytes{job=\"node-exporter\", instance=\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory free", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "100 -\n(\n avg(node_memory_MemAvailable_bytes{job=\"node-exporter\", instance=\"$instance\"})\n/\n avg(node_memory_MemTotal_bytes{job=\"node-exporter\", instance=\"$instance\"})\n* 100\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Memory Usage", - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 0, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - { - "alias": "/ read| written/", - "yaxis": 1 - }, - { - "alias": "/ io time/", - "yaxis": 2 - } - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_disk_read_bytes_total{job=\"node-exporter\", instance=\"$instance\", device=~\"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+\"}[$__interval])", - "format": "time_series", - "interval": "1m", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}} read", - "refId": "A" - }, - { - "expr": "rate(node_disk_written_bytes_total{job=\"node-exporter\", instance=\"$instance\", device=~\"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+\"}[$__interval])", - "format": "time_series", - "interval": "1m", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}} written", - "refId": "B" - }, - { - "expr": "rate(node_disk_io_time_seconds_total{job=\"node-exporter\", instance=\"$instance\", device=~\"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+\"}[$__interval])", - "format": "time_series", - "interval": "1m", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}} io time", - "refId": "C" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk I/O", - "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": null, - "show": true - }, - { - "format": "s", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - { - "alias": "used", - "color": "#E0B400" - }, - { - "alias": "available", - "color": "#73BF69" - } - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n max by (device) (\n node_filesystem_size_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\"}\n -\n node_filesystem_avail_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\"}\n )\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "used", - "refId": "A" - }, - { - "expr": "sum(\n max by (device) (\n node_filesystem_avail_bytes{job=\"node-exporter\", instance=\"$instance\", fstype!=\"\"}\n )\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "available", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Usage", - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 0, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_network_receive_bytes_total{job=\"node-exporter\", instance=\"$instance\", device!=\"lo\"}[$__interval])", - "format": "time_series", - "interval": "1m", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Received", - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 0, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(node_network_transmit_bytes_total{job=\"node-exporter\", instance=\"$instance\", device!=\"lo\"}[$__interval])", - "format": "time_series", - "interval": "1m", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Transmitted", - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(node_exporter_build_info{job=\"node-exporter\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "Nodes", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml deleted file mode 100644 index bb9cab9cf..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/persistentvolumesusage.yaml +++ /dev/null @@ -1,577 +0,0 @@ -{{- /* -Generated from 'persistentvolumesusage' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "persistentvolumesusage" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - persistentvolumesusage.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n sum without(instance, node) (kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n -\n sum without(instance, node) (kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n)\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used Space", - "refId": "A" - }, - { - "expr": "sum without(instance, node) (kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Free Space", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Volume Space Usage", - "tooltip": { - "shared": false, - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max without(instance,node) (\n(\n kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n -\n kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n)\n/\nkubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n* 100)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Volume Space Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum without(instance, node) (kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used inodes", - "refId": "A" - }, - { - "expr": "(\n sum without(instance, node) (kubelet_volume_stats_inodes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n -\n sum without(instance, node) (kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n)\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": " Free inodes", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Volume inodes Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max without(instance,node) (\nkubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n/\nkubelet_volume_stats_inodes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n* 100)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Volume inodes Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "PersistentVolumeClaim", - "multi": false, - "name": "volume", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics\", namespace=\"$namespace\"}, persistentvolumeclaim)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-7d", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Persistent Volumes", - "uid": "919b92a8e8041bd567af9edab12c840c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/pod-total.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/pod-total.yaml deleted file mode 100644 index 1790df788..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/pod-total.yaml +++ /dev/null @@ -1,1228 +0,0 @@ -{{- /* -Generated from 'pod-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "pod-total" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - pod-total.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Current Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "time_series", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 1 - }, - "height": 9, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "minSpan": 12, - "nullPointMode": "connected", - "nullText": null, - "options": { - "fieldOptions": { - "calcs": [ - "last" - ], - "defaults": { - "max": 10000000000, - "min": 0, - "title": "$namespace: $pod", - "unit": "Bps" - }, - "mappings": [ - - ], - "override": { - - }, - "thresholds": [ - { - "color": "dark-green", - "index": 0, - "value": null - }, - { - "color": "dark-yellow", - "index": 1, - "value": 5000000000 - }, - { - "color": "dark-red", - "index": 2, - "value": 7000000000 - } - ], - "values": false - } - }, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 12, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution]))", - "format": "time_series", - "instant": null, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Received", - "type": "gauge", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "decimals": 0, - "format": "time_series", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 1 - }, - "height": 9, - "id": 4, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "minSpan": 12, - "nullPointMode": "connected", - "nullText": null, - "options": { - "fieldOptions": { - "calcs": [ - "last" - ], - "defaults": { - "max": 10000000000, - "min": 0, - "title": "$namespace: $pod", - "unit": "Bps" - }, - "mappings": [ - - ], - "override": { - - }, - "thresholds": [ - { - "color": "dark-green", - "index": 0, - "value": null - }, - { - "color": "dark-yellow", - "index": 1, - "value": 5000000000 - }, - { - "color": "dark-red", - "index": 2, - "value": 7000000000 - } - ], - "values": false - } - }, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 12, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution]))", - "format": "time_series", - "instant": null, - "intervalFactor": 1, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Transmitted", - "type": "gauge", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - }, - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 5, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 20 - }, - "id": 8, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 21 - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 21 - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Packets", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 11, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 32 - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 32 - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\", pod=~\"$pod\"}[$interval:$resolution])) by (pod)", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Errors", - "titleSize": "h6", - "type": "row" - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".+", - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "kube-system", - "value": "kube-system" - }, - "datasource": "$datasource", - "definition": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".+", - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "definition": "label_values(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}, pod)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "pod", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}, pod)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "resolution", - "options": [ - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": true, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - } - ], - "query": "30s,5m,1h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "interval", - "options": [ - { - "selected": true, - "text": "4h", - "value": "4h" - } - ], - "query": "4h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Networking / Pod", - "uid": "7a18067ce943a40ae25454675c19ff5c", - "version": 0 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml deleted file mode 100644 index 89c6c4be1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus-remote-write.yaml +++ /dev/null @@ -1,1670 +0,0 @@ -{{- /* -Generated from 'prometheus-remote-write' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.prometheus.prometheusSpec.remoteWriteDashboards }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "prometheus-remote-write" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - prometheus-remote-write.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "60s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "(\n prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\"$cluster\", instance=~\"$instance\"} \n- \n ignoring(remote_name, url) group_right(instance) (prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\"$cluster\", instance=~\"$instance\"} != 0)\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Highest Timestamp In vs. Highest Timestamp Sent", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "clamp_min(\n rate(prometheus_remote_storage_highest_timestamp_in_seconds{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) \n- \n ignoring (remote_name, url) group_right(instance) rate(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])\n, 0)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate[5m]", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Timestamps", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(\n prometheus_remote_storage_samples_in_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])\n- \n ignoring(remote_name, url) group_right(instance) (rate(prometheus_remote_storage_succeeded_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) or rate(prometheus_remote_storage_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]))\n- \n (rate(prometheus_remote_storage_dropped_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]))\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate, in vs. succeeded or dropped [5m]", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Samples", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "minSpan": 6, - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_shards{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Shards", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_shards_max{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Max Shards", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_shards_min{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Min Shards", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_shards_desired{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Desired Shards", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Shards", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_shard_capacity{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Shard Capacity", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_remote_storage_pending_samples{cluster=~\"$cluster\", instance=~\"$instance\"} or prometheus_remote_storage_samples_pending{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Pending Samples", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Shard Details", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_tsdb_wal_segment_current{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "TSDB Current Segment", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_wal_watcher_current_segment{cluster=~\"$cluster\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}consumer{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Remote Write Current Segment", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Segments", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_remote_storage_dropped_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) or rate(prometheus_remote_storage_samples_dropped_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Dropped Samples", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 14, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_remote_storage_failed_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) or rate(prometheus_remote_storage_samples_failed_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Failed Samples", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 15, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_remote_storage_retried_samples_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m]) or rate(prometheus_remote_storage_samples_retried_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Retried Samples", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 16, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_remote_storage_enqueue_retries_total{cluster=~\"$cluster\", instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cluster{{`}}`}}:{{`{{`}}instance{{`}}`}} {{`{{`}}remote_name{{`}}`}}:{{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Enqueue Retries", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Misc. Rates", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "prometheus-mixin" - ], - "templating": { - "list": [ - { - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "value": { - "selected": true, - "text": "All", - "value": "$__all" - } - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(prometheus_build_info, instance)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "value": { - "selected": true, - "text": "All", - "value": "$__all" - } - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": true, - "label": null, - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_container_info{image=~\".*prometheus.*\"}, cluster)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "url", - "options": [ - - ], - "query": "label_values(prometheus_remote_storage_shards{cluster=~\"$cluster\", instance=~\"$instance\"}, url)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-6h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "Prometheus / Remote Write", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus.yaml deleted file mode 100644 index f3292faf2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/prometheus.yaml +++ /dev/null @@ -1,1227 +0,0 @@ -{{- /* -Generated from 'prometheus' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "prometheus" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - prometheus.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "60s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Count", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "hidden", - "unit": "short" - }, - { - "alias": "Uptime", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Instance", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "instance", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Job", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "job", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Version", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTargetBlank": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "version", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count by (job, instance, version) (prometheus_build_info{job=~\"$job\", instance=~\"$instance\"})", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "max by (job, instance) (time() - process_start_time_seconds{job=~\"$job\", instance=~\"$instance\"})", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Prometheus Stats", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Prometheus Stats", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(prometheus_target_sync_length_seconds_sum{job=~\"$job\",instance=~\"$instance\"}[5m])) by (scrape_job) * 1e3", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}scrape_job{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Target Sync", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(prometheus_sd_discovered_targets{job=~\"$job\",instance=~\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Targets", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Targets", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Discovery", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_target_interval_length_seconds_sum{job=~\"$job\",instance=~\"$instance\"}[5m]) / rate(prometheus_target_interval_length_seconds_count{job=~\"$job\",instance=~\"$instance\"}[5m]) * 1e3", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}interval{{`}}`}} configured", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Scrape Interval Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (job) (rate(prometheus_target_scrapes_exceeded_sample_limit_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "exceeded sample limit: {{`{{`}}job{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum by (job) (rate(prometheus_target_scrapes_sample_duplicate_timestamp_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "duplicate timestamp: {{`{{`}}job{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum by (job) (rate(prometheus_target_scrapes_sample_out_of_bounds_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "out of bounds: {{`{{`}}job{{`}}`}}", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum by (job) (rate(prometheus_target_scrapes_sample_out_of_order_total[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "out of order: {{`{{`}}job{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Scrape failures", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_tsdb_head_samples_appended_total{job=~\"$job\",instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}job{{`}}`}} {{`{{`}}instance{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Appended Samples", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Retrieval", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_tsdb_head_series{job=~\"$job\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}job{{`}}`}} {{`{{`}}instance{{`}}`}} head series", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Head Series", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "prometheus_tsdb_head_chunks{job=~\"$job\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}job{{`}}`}} {{`{{`}}instance{{`}}`}} head chunks", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Head Chunks", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(prometheus_engine_query_duration_seconds_count{job=~\"$job\",instance=~\"$instance\",slice=\"inner_eval\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}job{{`}}`}} {{`{{`}}instance{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Query Rate", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "max by (slice) (prometheus_engine_query_duration_seconds{quantile=\"0.9\",job=~\"$job\",instance=~\"$instance\"}) * 1e3", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}slice{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Stage Duration", - "tooltip": { - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Query", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "prometheus-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": "job", - "multi": true, - "name": "job", - "options": [ - - ], - "query": "label_values(prometheus_build_info, job)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "selected": true, - "text": "All", - "value": "$__all" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": "instance", - "multi": true, - "name": "instance", - "options": [ - - ], - "query": "label_values(prometheus_build_info, instance)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "utc", - "title": "Prometheus / Overview", - "uid": "", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/proxy.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/proxy.yaml deleted file mode 100644 index 339befb4f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/proxy.yaml +++ /dev/null @@ -1,1236 +0,0 @@ -{{- /* -Generated from 'proxy' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubeProxy.enabled" .)}} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "proxy" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - proxy.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - {{- if .Values.k3sServer.enabled }} - "expr": "sum(up{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{job=\"{{ include "exporter.kubeProxy.jobName" . }}\"})", - {{- end }} - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Up", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubeproxy_sync_proxy_rules_duration_seconds_count{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "rate", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rules Sync Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99,rate(kubeproxy_sync_proxy_rules_duration_seconds_bucket{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rule Sync Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(kubeproxy_network_programming_duration_seconds_count{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "rate", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Programming Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(kubeproxy_network_programming_duration_seconds_bucket{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Programming Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"2..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"3..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"4..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\",code=~\"5..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5xx", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Kube API Request Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 8, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeProxy.jobName" . }}\",instance=~\"$instance\",verb=\"POST\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Post Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeProxy.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Get Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"{{ include "exporter.kubeProxy.jobName" . }}\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{job=\"{{ include "exporter.kubeProxy.jobName" . }}\",instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_goroutines{job=\"{{ include "exporter.kubeProxy.jobName" . }}\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(kubeproxy_network_programming_duration_seconds_bucket{job=\"{{ include "exporter.kubeProxy.jobName" . }}\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Proxy", - "uid": "632e265de029684c40b21cb76bca4f94", - "version": 0 - } -{{- end }}{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/scheduler.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/scheduler.yaml deleted file mode 100644 index e1fb5a9ad..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/scheduler.yaml +++ /dev/null @@ -1,1080 +0,0 @@ -{{- /* -Generated from 'scheduler' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubeScheduler.enabled" .)}} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "scheduler" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - scheduler.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 2, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - {{- if .Values.k3sServer.enabled }} - "expr": "sum(up{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", metrics_path=\"/metrics\"})", - {{- else }} - "expr": "sum(up{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\"})", - {{- end }} - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Up", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "min" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(scheduler_e2e_scheduling_duration_seconds_count{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} e2e", - "refId": "A" - }, - { - "expr": "sum(rate(scheduler_binding_duration_seconds_count{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} binding", - "refId": "B" - }, - { - "expr": "sum(rate(scheduler_scheduling_algorithm_duration_seconds_count{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} scheduling algorithm", - "refId": "C" - }, - { - "expr": "sum(rate(scheduler_volume_scheduling_duration_seconds_count{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[5m])) by (instance)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} volume", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Scheduling Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} e2e", - "refId": "A" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} binding", - "refId": "B" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} scheduling algorithm", - "refId": "C" - }, - { - "expr": "histogram_quantile(0.99, sum(rate(scheduler_volume_scheduling_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}[5m])) by (instance, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} volume", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Scheduling latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 5, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"2..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "2xx", - "refId": "A" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"3..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "3xx", - "refId": "B" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"4..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "4xx", - "refId": "C" - }, - { - "expr": "sum(rate(rest_client_requests_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\",code=~\"5..\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "5xx", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Kube API Request Rate", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 8, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\", verb=\"POST\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Post Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(rest_client_request_duration_seconds_bucket{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\", verb=\"GET\"}[5m])) by (verb, url, le))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}verb{{`}}`}} {{`{{`}}url{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Get Request Latency 99th Quantile", - "tooltip": { - "shared": false, - "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": "s", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "rate(process_cpu_seconds_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\", instance=~\"$instance\"}[5m])", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU usage", - "tooltip": { - "shared": false, - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "go_goroutines{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\",instance=~\"$instance\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Goroutines", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(process_cpu_seconds_total{job=\"{{ include "exporter.kubeScheduler.jobName" . }}\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Scheduler", - "uid": "2e6b6a3b4bddf1427b3a55aa1311c656", - "version": 0 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/statefulset.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/statefulset.yaml deleted file mode 100644 index 8ce267904..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/statefulset.yaml +++ /dev/null @@ -1,928 +0,0 @@ -{{- /* -Generated from 'statefulset' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "statefulset" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - statefulset.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "cores", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", container!=\"\", namespace=\"$namespace\", pod=~\"$statefulset.*\"}[3m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "CPU", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "GB", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(container_memory_usage_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", container!=\"\", namespace=\"$namespace\", pod=~\"$statefulset.*\"}) / 1024^3", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Memory", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 4, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "Bps", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\", pod=~\"$statefulset.*\"}[3m])) + sum(rate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", metrics_path=\"/metrics/cadvisor\", cluster=\"$cluster\", namespace=\"$namespace\",pod=~\"$statefulset.*\"}[3m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Network", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "height": "100px", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_replicas{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Desired Replicas", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 6, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "min(kube_statefulset_status_replicas_current{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Replicas of current version", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 7, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_status_observed_generation{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Observed Generation", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 8, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_metadata_generation{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Metadata Generation", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "fillGradient": 0, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(kube_statefulset_replicas{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas specified", - "refId": "A" - }, - { - "expr": "max(kube_statefulset_status_replicas{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas created", - "refId": "B" - }, - { - "expr": "min(kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "ready", - "refId": "C" - }, - { - "expr": "min(kube_statefulset_status_replicas_current{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas of current version", - "refId": "D" - }, - { - "expr": "min(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "updated", - "refId": "E" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Replicas", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation, cluster)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation{job=\"kube-state-metrics\", cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Name", - "multi": false, - "name": "statefulset", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\"}, statefulset)", - "refresh": 2, - "regex": "", - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / StatefulSets", - "uid": "a31c1f46e6f727cb37c0d731a7245005", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/workload-total.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/workload-total.yaml deleted file mode 100644 index cd4e2364d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards-1.14/workload-total.yaml +++ /dev/null @@ -1,1438 +0,0 @@ -{{- /* -Generated from 'workload-total' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "workload-total" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - workload-total.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "-- Grafana --", - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "panels": [ - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 2, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Current Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 1 - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} pod {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 1 - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} pod {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Current Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 10 - }, - "id": 5, - "panels": [ - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 11 - }, - "id": 6, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} pod {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Received", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": true, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 11 - }, - "id": 7, - "legend": { - "alignAsTable": true, - "avg": false, - "current": true, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "sideWidth": null, - "sort": "current", - "sortDesc": true, - "total": false, - "values": true - }, - "lines": false, - "linewidth": 1, - "links": [ - - ], - "minSpan": 24, - "nullPointMode": "null", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 24, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(avg(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}} pod {{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Average Rate of Bytes Transmitted", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "series", - "name": null, - "show": false, - "values": [ - "current" - ] - }, - "yaxes": [ - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Average Bandwidth", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 11 - }, - "id": 8, - "panels": [ - - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Bandwidth HIstory", - "titleSize": "h6", - "type": "row" - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 12 - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Receive Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 12 - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_bytes_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Transmit Bandwidth", - "tooltip": { - "shared": true, - "sort": 2, - "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": 0, - "show": true - }, - { - "format": "Bps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 21 - }, - "id": 11, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 22 - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 22 - }, - "id": 13, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Packets", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": true, - "collapsed": true, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 22 - }, - "id": 14, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 0, - "y": 23 - }, - "id": 15, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_receive_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Received Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 2, - "fillGradient": 0, - "gridPos": { - "h": 9, - "w": 12, - "x": 12, - "y": 23 - }, - "id": 16, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "hideEmpty": true, - "hideZero": true, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "sideWidth": null, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [ - - ], - "minSpan": 12, - "nullPointMode": "connected", - "paceLength": 10, - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum(irate(container_network_transmit_packets_dropped_total{cluster=\"$cluster\",namespace=~\"$namespace\"}[$interval:$resolution])\n* on (namespace,pod)\ngroup_left(workload,workload_type) namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\", workload_type=\"$type\"}) by (pod))\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "refId": "A", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Rate of Transmitted Packets Dropped", - "tooltip": { - "shared": true, - "sort": 2, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "pps", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Errors", - "titleSize": "h6", - "type": "row" - } - ], - "refresh": "10s", - "rows": [ - - ], - "schemaVersion": 18, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "default", - "value": "default" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 1, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": ".+", - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "kube-system", - "value": "kube-system" - }, - "datasource": "$datasource", - "definition": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "hide": 0, - "includeAll": true, - "label": null, - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(container_network_receive_packets_total{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "", - "value": "" - }, - "datasource": "$datasource", - "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\"}, workload)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "workload", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\"}, workload)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "deployment", - "value": "deployment" - }, - "datasource": "$datasource", - "definition": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\"}, workload_type)", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "type", - "options": [ - - ], - "query": "label_values(namespace_workload_pod:kube_pod_owner:relabel{cluster=\"$cluster\",namespace=~\"$namespace\", workload=~\"$workload\"}, workload_type)", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "resolution", - "options": [ - { - "selected": false, - "text": "30s", - "value": "30s" - }, - { - "selected": true, - "text": "5m", - "value": "5m" - }, - { - "selected": false, - "text": "1h", - "value": "1h" - } - ], - "query": "30s,5m,1h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - }, - { - "allValue": null, - "auto": false, - "auto_count": 30, - "auto_min": "10s", - "current": { - "text": "5m", - "value": "5m" - }, - "datasource": "$datasource", - "hide": 2, - "includeAll": false, - "label": null, - "multi": false, - "name": "interval", - "options": [ - { - "selected": true, - "text": "4h", - "value": "4h" - } - ], - "query": "4h", - "refresh": 2, - "regex": "", - "skipUrlSync": false, - "sort": 1, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "interval", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "UTC", - "title": "Kubernetes / Networking / Workload", - "uid": "728bf77cc1166d2f3133bf25846876cc", - "version": 0 - } -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/etcd.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/etcd.yaml deleted file mode 100644 index ac54228e9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/etcd.yaml +++ /dev/null @@ -1,1118 +0,0 @@ -{{- /* -Generated from 'etcd' from https://raw.githubusercontent.com/etcd-io/website/master/content/docs/current/op-guide/grafana.json -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -{{- if (include "exporter.kubeEtcd.enabled" .)}} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "etcd" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - etcd.json: |- - { - "annotations": { - "list": [] - }, - "description": "etcd sample Grafana dashboard with Prometheus", - "editable": true, - "gnetId": null, - "hideControls": false, - "links": [], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(245, 54, 54, 0.9)", - "rgba(237, 129, 40, 0.89)", - "rgba(50, 172, 45, 0.97)" - ], - "datasource": "$datasource", - "editable": true, - "error": false, - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "id": 28, - "interval": null, - "isNew": true, - "links": [], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "targets": [ - { - "expr": "sum(etcd_server_has_leader{job=\"$cluster\"})", - "intervalFactor": 2, - "legendFormat": "", - "metric": "etcd_server_has_leader", - "refId": "A", - "step": 20 - } - ], - "thresholds": "", - "title": "Up", - "type": "singlestat", - "valueFontSize": "200%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "avg" - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 23, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 5, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(grpc_server_started_total{job=\"$cluster\",grpc_type=\"unary\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RPC Rate", - "metric": "grpc_server_started_total", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(rate(grpc_server_handled_total{job=\"$cluster\",grpc_type=\"unary\",grpc_code!=\"OK\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RPC Failed Rate", - "metric": "grpc_server_handled_total", - "refId": "B", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "RPC Rate", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "ops", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 41, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(grpc_server_started_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Watch\",grpc_type=\"bidi_stream\"})", - "intervalFactor": 2, - "legendFormat": "Watch Streams", - "metric": "grpc_server_handled_total", - "refId": "A", - "step": 4 - }, - { - "expr": "sum(grpc_server_started_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"}) - sum(grpc_server_handled_total{job=\"$cluster\",grpc_service=\"etcdserverpb.Lease\",grpc_type=\"bidi_stream\"})", - "intervalFactor": 2, - "legendFormat": "Lease Streams", - "metric": "grpc_server_handled_total", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Active Streams", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "showTitle": false, - "title": "Row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": null, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "etcd_mvcc_db_total_size_in_bytes{job=\"$cluster\"}", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} DB Size", - "metric": "", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "DB Size", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 1, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": true, - "targets": [ - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=\"$cluster\"}[5m])) by (instance, le))", - "hide": false, - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} WAL fsync", - "metric": "etcd_disk_wal_fsync_duration_seconds_bucket", - "refId": "A", - "step": 4 - }, - { - "expr": "histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job=\"$cluster\"}[5m])) by (instance, le))", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} DB fsync", - "metric": "etcd_disk_backend_commit_duration_seconds_bucket", - "refId": "B", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Disk Sync Duration", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "s", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 29, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 4, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "process_resident_memory_bytes{job=\"$cluster\"}", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Resident Memory", - "metric": "process_resident_memory_bytes", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Memory", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 5, - "id": 22, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(etcd_network_client_grpc_received_bytes_total{job=\"$cluster\"}[5m])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Client Traffic In", - "metric": "etcd_network_client_grpc_received_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Client Traffic In", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 5, - "id": 21, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "rate(etcd_network_client_grpc_sent_bytes_total{job=\"$cluster\"}[5m])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Client Traffic Out", - "metric": "etcd_network_client_grpc_sent_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Client Traffic Out", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 20, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_peer_received_bytes_total{job=\"$cluster\"}[5m])) by (instance)", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Peer Traffic In", - "metric": "etcd_network_peer_received_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Peer Traffic In", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "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 - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": null, - "editable": true, - "error": false, - "fill": 0, - "grid": {}, - "id": 16, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 3, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_network_peer_sent_bytes_total{job=\"$cluster\"}[5m])) by (instance)", - "hide": false, - "interval": "", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Peer Traffic Out", - "metric": "etcd_network_peer_sent_bytes_total", - "refId": "A", - "step": 4 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Peer Traffic Out", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "cumulative" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "Bps", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - }, - { - "collapse": false, - "editable": true, - "height": "250px", - "panels": [ - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "editable": true, - "error": false, - "fill": 0, - "id": 40, - "isNew": true, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(rate(etcd_server_proposals_failed_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Failure Rate", - "metric": "etcd_server_proposals_failed_total", - "refId": "A", - "step": 2 - }, - { - "expr": "sum(etcd_server_proposals_pending{job=\"$cluster\"})", - "intervalFactor": 2, - "legendFormat": "Proposal Pending Total", - "metric": "etcd_server_proposals_pending", - "refId": "B", - "step": 2 - }, - { - "expr": "sum(rate(etcd_server_proposals_committed_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Commit Rate", - "metric": "etcd_server_proposals_committed_total", - "refId": "C", - "step": 2 - }, - { - "expr": "sum(rate(etcd_server_proposals_applied_total{job=\"$cluster\"}[5m]))", - "intervalFactor": 2, - "legendFormat": "Proposal Apply Rate", - "refId": "D", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Raft Proposals", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": "", - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": {}, - "bars": false, - "datasource": "$datasource", - "decimals": 0, - "editable": true, - "error": false, - "fill": 0, - "id": 19, - "isNew": true, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": false, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 2, - "links": [], - "nullPointMode": "connected", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [], - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "changes(etcd_server_leader_changes_seen_total{job=\"$cluster\"}[1d])", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}instance{{`}}`}} Total Leader Elections Per Day", - "metric": "etcd_server_leader_changes_seen_total", - "refId": "A", - "step": 2 - } - ], - "thresholds": [], - "timeFrom": null, - "timeShift": null, - "title": "Total Leader Elections Per Day", - "tooltip": { - "msResolution": false, - "shared": true, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "mode": "time", - "name": null, - "show": true, - "values": [] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "title": "New row" - } - ], - "schemaVersion": 13, - "sharedCrosshair": false, - "style": "dark", - "tags": [], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [], - "query": "label_values(etcd_server_has_leader, job)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": { - "now": true, - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "browser", - "title": "etcd", - "uid": "c2f4e12cdf69feb95caa41a5a1b423d9", - "version": 215 - } -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml deleted file mode 100644 index 2b8eac4df..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-cluster-rsrc-use.yaml +++ /dev/null @@ -1,959 +0,0 @@ -{{- /* -Generated from 'k8s-cluster-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-cluster-rsrc-use" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-cluster-rsrc-use.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:cluster_cpu_utilisation:ratio{cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_cpu_saturation_load1:{cluster=\"$cluster\"} / scalar(sum(min(kube_pod_info{cluster=\"$cluster\"}) by (node)))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (Load1)", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:cluster_memory_utilisation:ratio{cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_memory_swap_io_bytes:sum_rate{cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Swap I/O)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_disk_utilisation:avg_irate{cluster=\"$cluster\"} / scalar(:kube_pod_info_node_count:{cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_disk_saturation:avg_irate{cluster=\"$cluster\"} / scalar(:kube_pod_info_node_count:{cluster=\"$cluster\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_net_utilisation:sum_irate{cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Utilisation (Transmitted)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_net_saturation:sum_irate{cluster=\"$cluster\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Saturation (Dropped)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Network", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(max(node_filesystem_size_bytes{fstype=~\"ext[234]|btrfs|xfs|zfs\", cluster=\"$cluster\"} - node_filesystem_avail_bytes{fstype=~\"ext[234]|btrfs|xfs|zfs\", cluster=\"$cluster\"}) by (device,pod,namespace)) by (pod,namespace)\n/ scalar(sum(max(node_filesystem_size_bytes{fstype=~\"ext[234]|btrfs|xfs|zfs\", cluster=\"$cluster\"}) by (device,pod,namespace)))\n* on (namespace, pod) group_left (node) node_namespace_pod:kube_pod_info:{cluster=\"$cluster\"}\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}node{{`}}`}}", - "legendLink": "./d/4ac4f123aae0ff6dbaf4f4f66120033b/k8s-node-rsrc-use", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Capacity", - "tooltip": { - "shared": false, - "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": 1, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Storage", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / USE Method / Cluster", - "uid": "a6e7d1362e1ddbb79db21d5bb40d7137", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-node-rsrc-use.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-node-rsrc-use.yaml deleted file mode 100644 index 101252086..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-node-rsrc-use.yaml +++ /dev/null @@ -1,986 +0,0 @@ -{{- /* -Generated from 'k8s-node-rsrc-use' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-node-rsrc-use" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-node-rsrc-use.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_cpu_utilisation:avg1m{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "tooltip": { - "shared": false, - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_cpu_saturation_load1:{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Saturation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Saturation (Load1)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_memory_utilisation:{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Memory", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "tooltip": { - "shared": false, - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_memory_swap_io_bytes:sum_rate{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Swap IO", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Saturation (Swap I/O)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_disk_utilisation:avg_irate{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Utilisation", - "tooltip": { - "shared": false, - "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": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_disk_saturation:avg_irate{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Saturation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk IO Saturation", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_net_utilisation:sum_irate{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Utilisation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Utilisation (Transmitted)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_net_saturation:sum_irate{cluster=\"$cluster\", node=\"$node\"}", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Saturation", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Net Saturation (Dropped)", - "tooltip": { - "shared": false, - "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": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Net", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "node:node_filesystem_usage:{cluster=\"$cluster\"}\n* on (namespace, pod) group_left (node) node_namespace_pod:kube_pod_info:{cluster=\"$cluster\", node=\"$node\"}\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Utilisation", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Disk", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "node", - "multi": false, - "name": "node", - "options": [ - - ], - "query": "label_values(kube_node_info{cluster=\"$cluster\"}, node)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / USE Method / Node", - "uid": "4ac4f123aae0ff6dbaf4f4f66120033b", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-cluster.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-cluster.yaml deleted file mode 100644 index e068214bc..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-cluster.yaml +++ /dev/null @@ -1,1479 +0,0 @@ -{{- /* -Generated from 'k8s-resources-cluster' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-cluster" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-cluster.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "100px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - avg(rate(node_cpu_seconds_total{mode=\"idle\", cluster=\"$cluster\"}[1m]))", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilisation", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) / sum(node:node_num_cpu:sum{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Requests Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) / sum(node:node_num_cpu:sum{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "CPU Limits Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "1 - sum(:node_memory_MemFreeCachedBuffers_bytes:sum{cluster=\"$cluster\"}) / sum(:node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Utilisation", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 5, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) / sum(:node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Requests Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "format": "percentunit", - "id": 6, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 2, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) / sum(:node_memory_MemTotal_bytes:sum{cluster=\"$cluster\"})", - "format": "time_series", - "instant": true, - "intervalFactor": 2, - "refId": "A" - } - ], - "thresholds": "70,80", - "timeFrom": null, - "timeShift": null, - "title": "Memory Limits Commitment", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "singlestat", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Headlines", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 7, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 8, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workloads", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTooltip": "Drill down to workloads", - "linkUrl": "./d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(mixin_pod_workload{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "count(avg(mixin_pod_workload{cluster=\"$cluster\"}) by (workload, namespace)) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\"}) by (namespace) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 9, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container_name!=\"\"}) by (namespace)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}namespace{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (w/o cache)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 10, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workloads", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": true, - "linkTooltip": "Drill down to workloads", - "linkUrl": "./d/a87fb0d919ec0ea5f6543124e16c42a5/k8s-resources-workloads-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell_1", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Namespace", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down to pods", - "linkUrl": "./d/85a562078cdf77779eaa1add43ccec1e/k8s-resources-namespace?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$__cell", - "pattern": "namespace", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(mixin_pod_workload{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "count(avg(mixin_pod_workload{cluster=\"$cluster\"}) by (workload, namespace)) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container_name!=\"\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container_name!=\"\"}) by (namespace) / sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", container_name!=\"\"}) by (namespace) / sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\"}) by (namespace)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Requests by Namespace", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Requests", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Compute Resources / Cluster", - "uid": "efa86fd1d0c121a26444b636a3f509a8", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-namespace.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-namespace.yaml deleted file mode 100644 index af3664731..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-namespace.yaml +++ /dev/null @@ -1,963 +0,0 @@ -{{- /* -Generated from 'k8s-resources-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-namespace" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-namespace.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod_name{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"}) by (pod_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod_name{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage (w/o cache)", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Usage (RSS)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Cache)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Swap", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod) / sum(kube_pod_container_resource_requests_memory_bytes{namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod) / sum(kube_pod_container_resource_limits_memory_bytes{namespace=\"$namespace\"}) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_rss{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_cache{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_swap{cluster=\"$cluster\", namespace=\"$namespace\",container_name!=\"\"}, \"pod\", \"$1\", \"pod_name\", \"(.*)\")) by (pod)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Compute Resources / Namespace (Pods)", - "uid": "85a562078cdf77779eaa1add43ccec1e", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-pod.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-pod.yaml deleted file mode 100644 index 536a2c704..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-pod.yaml +++ /dev/null @@ -1,1006 +0,0 @@ -{{- /* -Generated from 'k8s-resources-pod' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-pod" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-pod.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", cluster=\"$cluster\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container_name{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Container", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "container", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container) / sum(kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(label_replace(namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container) / sum(kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(container_memory_rss{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container_name{{`}}`}} (RSS)", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(container_memory_cache{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container_name{{`}}`}} (Cache)", - "legendLink": null, - "step": 10 - }, - { - "expr": "sum(container_memory_swap{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}) by (container_name)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}container_name{{`}}`}} (Swap)", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Usage (RSS)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Cache)", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #G", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Usage (Swap", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #H", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Container", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "container", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"POD\", container_name!=\"\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container) / sum(kube_pod_container_resource_requests_memory_bytes{namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container!=\"\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name!=\"\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container) / sum(kube_pod_container_resource_limits_memory_bytes{namespace=\"$namespace\", pod=\"$pod\"}) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_rss{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name != \"\", container_name != \"POD\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_cache{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name != \"\", container_name != \"POD\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "G", - "step": 10 - }, - { - "expr": "sum(label_replace(container_memory_swap{cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name != \"\", container_name != \"POD\"}, \"container\", \"$1\", \"container_name\", \"(.*)\")) by (container)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "H", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "pod", - "multi": false, - "name": "pod", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=\"$namespace\"}, pod)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Compute Resources / Pod", - "uid": "6581e46e4e5c7ba40a07646395ef7b23", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workload.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workload.yaml deleted file mode 100644 index f5844b505..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workload.yaml +++ /dev/null @@ -1,936 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workload' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-workload" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-workload.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n/sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n ) by (pod)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}pod{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Pod", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/6581e46e4e5c7ba40a07646395ef7b23/k8s-resources-pod?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-pod=$__cell", - "pattern": "pod", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n ) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n ) by (pod)\n/sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n ) by (pod)\n/sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\", workload_type=\"$type\"}\n) by (pod)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "workload", - "multi": false, - "name": "workload", - "options": [ - - ], - "query": "label_values(mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}, workload)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "type", - "multi": false, - "name": "type", - "options": [ - - ], - "query": "label_values(mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\", workload=\"$workload\"}, workload_type)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Compute Resources / Workload", - "uid": "a164a7f0339f99e89cea5cb47e9be617", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml deleted file mode 100644 index 8a8b5077b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/k8s-resources-workloads-namespace.yaml +++ /dev/null @@ -1,972 +0,0 @@ -{{- /* -Generated from 'k8s-resources-workloads-namespace' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "k8s-resources-workloads-namespace" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - k8s-resources-workloads-namespace.json: |- - { - "annotations": { - "list": [ - - ] - }, - "editable": true, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "links": [ - - ], - "refresh": "10s", - "rows": [ - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 1, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}} - {{`{{`}}workload_type{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 2, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Running Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "CPU Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "CPU Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workload Type", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "workload_type", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}) by (workload, workload_type)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate{cluster=\"$cluster\", namespace=\"$namespace\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits_cpu_cores{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "CPU Quota", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 10, - "id": 3, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 0, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n ) by (workload, workload_type)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}workload{{`}}`}} - {{`{{`}}workload_type{{`}}`}}", - "legendLink": null, - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Usage", - "titleSize": "h6" - }, - { - "collapse": false, - "height": "250px", - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "id": 4, - "legend": { - "avg": false, - "current": false, - "max": false, - "min": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null as zero", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "styles": [ - { - "alias": "Time", - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "pattern": "Time", - "type": "hidden" - }, - { - "alias": "Running Pods", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 0, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #A", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Memory Usage", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #B", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #C", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Requests %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #D", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Memory Limits", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #E", - "thresholds": [ - - ], - "type": "number", - "unit": "bytes" - }, - { - "alias": "Memory Limits %", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "Value #F", - "thresholds": [ - - ], - "type": "number", - "unit": "percentunit" - }, - { - "alias": "Workload", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": true, - "linkTooltip": "Drill down", - "linkUrl": "./d/a164a7f0339f99e89cea5cb47e9be617/k8s-resources-workload?var-datasource=$datasource&var-cluster=$cluster&var-namespace=$namespace&var-workload=$__cell&var-type=$__cell_2", - "pattern": "workload", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "Workload Type", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "link": false, - "linkTooltip": "Drill down", - "linkUrl": "", - "pattern": "workload_type", - "thresholds": [ - - ], - "type": "number", - "unit": "short" - }, - { - "alias": "", - "colorMode": null, - "colors": [ - - ], - "dateFormat": "YYYY-MM-DD HH:mm:ss", - "decimals": 2, - "pattern": "/.*/", - "thresholds": [ - - ], - "type": "string", - "unit": "short" - } - ], - "targets": [ - { - "expr": "count(mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}) by (workload, workload_type)", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "A", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n ) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "B", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "C", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n ) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_requests_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "D", - "step": 10 - }, - { - "expr": "sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "E", - "step": 10 - }, - { - "expr": "sum(\n label_replace(\n container_memory_usage_bytes{cluster=\"$cluster\", namespace=\"$namespace\", container_name!=\"\"},\n \"pod\", \"$1\", \"pod_name\", \"(.*)\"\n ) * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n ) by (workload, workload_type)\n/sum(\n kube_pod_container_resource_limits_memory_bytes{cluster=\"$cluster\", namespace=\"$namespace\"}\n * on(namespace,pod) group_left(workload, workload_type) mixin_pod_workload{cluster=\"$cluster\", namespace=\"$namespace\"}\n) by (workload, workload_type)\n", - "format": "table", - "instant": true, - "intervalFactor": 2, - "legendFormat": "", - "refId": "F", - "step": 10 - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Quota", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "transform": "table", - "type": "table", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": false - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": true, - "title": "Memory Quota", - "titleSize": "h6" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(:kube_pod_info_node_count:, cluster)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - "text": "prod", - "value": "prod" - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 1, - "regex": "", - "sort": 2, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Compute Resources / Namespace (Workloads)", - "uid": "a87fb0d919ec0ea5f6543124e16c42a5", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/nodes.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/nodes.yaml deleted file mode 100644 index 17a97dae1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/nodes.yaml +++ /dev/null @@ -1,1383 +0,0 @@ -{{- /* -Generated from 'nodes' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "nodes" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - nodes.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(node_load1{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "load 1m", - "refId": "A" - }, - { - "expr": "max(node_load5{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "load 5m", - "refId": "B" - }, - { - "expr": "max(node_load15{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "load 15m", - "refId": "C" - }, - { - "expr": "count(node_cpu_seconds_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\", mode=\"user\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "logical cores", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "System load", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (cpu) (irate(node_cpu_seconds_total{cluster=\"$cluster\", job=\"node-exporter\", mode!=\"idle\", instance=\"$instance\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}cpu{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Usage Per Core", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": "true", - "avg": "true", - "current": "true", - "max": "false", - "min": "false", - "rightSide": "true", - "show": "true", - "total": "false", - "values": "true" - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max (sum by (cpu) (irate(node_cpu_seconds_total{cluster=\"$cluster\", job=\"node-exporter\", mode!=\"idle\", instance=\"$instance\"}[2m])) ) * 100\n", - "format": "time_series", - "intervalFactor": 10, - "legendFormat": "{{`{{`}} cpu {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Utilization", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "percent", - "label": null, - "logBase": 1, - "max": 100, - "min": 0, - "show": true - }, - { - "format": "percent", - "label": null, - "logBase": 1, - "max": 100, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "avg(sum by (cpu) (irate(node_cpu_seconds_total{cluster=\"$cluster\", job=\"node-exporter\", mode!=\"idle\", instance=\"$instance\"}[2m]))) * 100\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "CPU Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 6, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(\n node_memory_MemTotal_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_MemFree_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Buffers_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Cached_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory used", - "refId": "A" - }, - { - "expr": "max(node_memory_Buffers_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory buffers", - "refId": "B" - }, - { - "expr": "max(node_memory_Cached_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory cached", - "refId": "C" - }, - { - "expr": "max(node_memory_MemFree_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "memory free", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 7, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(\n (\n (\n node_memory_MemTotal_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_MemFree_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Buffers_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_memory_Cached_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n )\n / node_memory_MemTotal_bytes{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n ) * 100)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Memory Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 8, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - { - "alias": "read", - "yaxis": 1 - }, - { - "alias": "io time", - "yaxis": 2 - } - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(rate(node_disk_read_bytes_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}[2m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "read", - "refId": "A" - }, - { - "expr": "max(rate(node_disk_written_bytes_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}[2m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "written", - "refId": "B" - }, - { - "expr": "max(rate(node_disk_io_time_seconds_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}[2m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "io time", - "refId": "C" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk I/O", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "ms", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max by (namespace, pod, device) ((node_filesystem_size_bytes{cluster=\"$cluster\", fstype=~\"ext[234]|btrfs|xfs|zfs\", instance=\"$instance\", job=\"node-exporter\"} - node_filesystem_avail_bytes{cluster=\"$cluster\", fstype=~\"ext[234]|btrfs|xfs|zfs\", instance=\"$instance\", job=\"node-exporter\"}) / node_filesystem_size_bytes{cluster=\"$cluster\", fstype=~\"ext[234]|btrfs|xfs|zfs\", instance=\"$instance\", job=\"node-exporter\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "disk used", - "refId": "A" - }, - { - "expr": "max by (namespace, pod, device) (node_filesystem_avail_bytes{cluster=\"$cluster\", fstype=~\"ext[234]|btrfs|xfs|zfs\", instance=\"$instance\", job=\"node-exporter\"} / node_filesystem_size_bytes{cluster=\"$cluster\", fstype=~\"ext[234]|btrfs|xfs|zfs\", instance=\"$instance\", job=\"node-exporter\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "disk free", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Disk Space Usage", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "percentunit", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 10, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(rate(node_network_receive_bytes_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\", device!~\"lo\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Received", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 11, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 6, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(rate(node_network_transmit_bytes_total{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\", device!~\"lo\"}[5m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "{{`{{`}}device{{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network Transmitted", - "tooltip": { - "shared": false, - "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": null, - "show": true - }, - { - "format": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 12, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(\n node_filesystem_files{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_filesystem_files_free{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "inodes used", - "refId": "A" - }, - { - "expr": "max(node_filesystem_files_free{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "inodes free", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Inodes Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 13, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(\n (\n (\n node_filesystem_files{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n - node_filesystem_files_free{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n )\n / node_filesystem_files{cluster=\"$cluster\", job=\"node-exporter\", instance=\"$instance\"}\n ) * 100)\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Inodes Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": null, - "multi": false, - "name": "instance", - "options": [ - - ], - "query": "label_values(node_boot_time_seconds{cluster=\"$cluster\", job=\"node-exporter\"}, instance)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Nodes", - "uid": "fa49a4706d07a042595b664c87fb33ea", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/persistentvolumesusage.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/persistentvolumesusage.yaml deleted file mode 100644 index b0c51cc11..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/persistentvolumesusage.yaml +++ /dev/null @@ -1,573 +0,0 @@ -{{- /* -Generated from 'persistentvolumesusage' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "persistentvolumesusage" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - persistentvolumesusage.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "(\n sum without(instance, node) (kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n -\n sum without(instance, node) (kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n)\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used Space", - "refId": "A" - }, - { - "expr": "sum without(instance, node) (kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Free Space", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Volume Space Usage", - "tooltip": { - "shared": false, - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "(\n kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n -\n kubelet_volume_stats_available_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n)\n/\nkubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n* 100\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Volume Space Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": true, - "min": true, - "rightSide": false, - "show": true, - "total": false, - "values": true - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 9, - "stack": true, - "steppedLine": false, - "targets": [ - { - "expr": "sum without(instance, node) (kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": "Used inodes", - "refId": "A" - }, - { - "expr": "(\n sum without(instance, node) (kubelet_volume_stats_inodes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n -\n sum without(instance, node) (kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"})\n)\n", - "format": "time_series", - "intervalFactor": 1, - "legendFormat": " Free inodes", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Volume inodes Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "none", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "rgba(50, 172, 45, 0.97)", - "rgba(237, 129, 40, 0.89)", - "rgba(245, 54, 54, 0.9)" - ], - "datasource": "$datasource", - "format": "percent", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": true, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "kubelet_volume_stats_inodes_used{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n/\nkubelet_volume_stats_inodes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", persistentvolumeclaim=\"$volume\"}\n* 100\n", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "80, 90", - "title": "Volume inodes Usage", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "N/A", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes, cluster)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "PersistentVolumeClaim", - "multi": false, - "name": "volume", - "options": [ - - ], - "query": "label_values(kubelet_volume_stats_capacity_bytes{cluster=\"$cluster\", job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\"}, persistentvolumeclaim)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-7d", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Persistent Volumes", - "uid": "919b92a8e8041bd567af9edab12c840c", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/pods.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/pods.yaml deleted file mode 100644 index 44c79d870..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/pods.yaml +++ /dev/null @@ -1,680 +0,0 @@ -{{- /* -Generated from 'pods' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "pods" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - pods.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": "$datasource", - "enable": true, - "expr": "time() == BOOL timestamp(rate(kube_pod_container_status_restarts_total{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}[2m]) > 0)", - "hide": false, - "iconColor": "rgba(215, 44, 44, 1)", - "name": "Restarts", - "showIn": 0, - "tags": [ - "restart" - ], - "type": "rows" - } - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 2, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by(container_name) (container_memory_usage_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\", container_name=~\"$container\", container_name!=\"POD\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Current: {{`{{`}} container_name {{`}}`}}", - "refId": "A" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Requested: {{`{{`}} container {{`}}`}}", - "refId": "B" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"memory\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Limit: {{`{{`}} container {{`}}`}}", - "refId": "C" - }, - { - "expr": "sum by(container_name) (container_memory_cache{job=\"{{ include "exporter.kubelet.jobName" . }}\", namespace=\"$namespace\", pod_name=~\"$pod\", container_name=~\"$container\", container_name!=\"POD\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Cache: {{`{{`}} container_name {{`}}`}}", - "refId": "D" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Memory Usage", - "tooltip": { - "shared": false, - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 3, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sum by (container_name) (rate(container_cpu_usage_seconds_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", image!=\"\", pod_name=\"$pod\", container_name=~\"$container\", container_name!=\"POD\"}[1m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Current: {{`{{`}} container_name {{`}}`}}", - "refId": "A" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_requests{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Requested: {{`{{`}} container {{`}}`}}", - "refId": "B" - }, - { - "expr": "sum by(container) (kube_pod_container_resource_limits{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", resource=\"cpu\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Limit: {{`{{`}} container {{`}}`}}", - "refId": "C" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "CPU Usage", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 4, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "sort_desc(sum by (pod_name) (rate(container_network_receive_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "RX: {{`{{`}} pod_name {{`}}`}}", - "refId": "A" - }, - { - "expr": "sort_desc(sum by (pod_name) (rate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=\"$pod\"}[1m])))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "TX: {{`{{`}} pod_name {{`}}`}}", - "refId": "B" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Network I/O", - "tooltip": { - "shared": false, - "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": "bytes", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 5, - "legend": { - "alignAsTable": true, - "avg": true, - "current": true, - "max": false, - "min": false, - "rightSide": true, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "span": 12, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max by (container) (kube_pod_container_status_restarts_total{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\", container=~\"$container\"})", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "Restarts: {{`{{`}} container {{`}}`}}", - "refId": "A" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Total Restarts Per Container", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": 0, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_pod_info, cluster)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Pod", - "multi": false, - "name": "pod", - "options": [ - - ], - "query": "label_values(kube_pod_info{cluster=\"$cluster\", namespace=~\"$namespace\"}, pod)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": true, - "label": "Container", - "multi": false, - "name": "container", - "options": [ - - ], - "query": "label_values(kube_pod_container_info{cluster=\"$cluster\", namespace=\"$namespace\", pod=\"$pod\"}, container)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / Pods", - "uid": "ab4f13a9892a76a4d21ce8c2445bf4ea", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/statefulset.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/statefulset.yaml deleted file mode 100644 index f6e5918b6..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/dashboards/statefulset.yaml +++ /dev/null @@ -1,926 +0,0 @@ -{{- /* -Generated from 'statefulset' from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/grafana-dashboardDefinitions.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "statefulset" | trunc 63 | trimSuffix "-" }} - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: - statefulset.json: |- - { - "__inputs": [ - - ], - "__requires": [ - - ], - "annotations": { - "list": [ - - ] - }, - "editable": false, - "gnetId": null, - "graphTooltip": 0, - "hideControls": false, - "id": null, - "links": [ - - ], - "refresh": "", - "rows": [ - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 2, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "cores", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(container_cpu_usage_seconds_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=~\"$statefulset.*\"}[3m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "CPU", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 3, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "GB", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(container_memory_usage_bytes{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=~\"$statefulset.*\"}) / 1024^3", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Memory", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 4, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "Bps", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 4, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "lineColor": "rgb(31, 120, 193)", - "show": true - }, - "tableColumn": "", - "targets": [ - { - "expr": "sum(rate(container_network_transmit_bytes_total{job=\"{{ include "exporter.kubelet.jobName" . }}\", cluster=\"$cluster\", namespace=\"$namespace\", pod_name=~\"$statefulset.*\"}[3m])) + sum(rate(container_network_receive_bytes_total{cluster=\"$cluster\", namespace=\"$namespace\",pod_name=~\"$statefulset.*\"}[3m]))", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Network", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "height": "100px", - "panels": [ - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 5, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_replicas{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Desired Replicas", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 6, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "min(kube_statefulset_status_replicas_current{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Replicas of current version", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 7, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_status_observed_generation{job=\"kube-state-metrics\", cluster=\"$cluster\", namespace=\"$namespace\", statefulset=\"$statefulset\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Observed Generation", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - }, - { - "cacheTimeout": null, - "colorBackground": false, - "colorValue": false, - "colors": [ - "#299c46", - "rgba(237, 129, 40, 0.89)", - "#d44a3a" - ], - "datasource": "$datasource", - "format": "none", - "gauge": { - "maxValue": 100, - "minValue": 0, - "show": false, - "thresholdLabels": false, - "thresholdMarkers": true - }, - "gridPos": { - - }, - "id": 8, - "interval": null, - "links": [ - - ], - "mappingType": 1, - "mappingTypes": [ - { - "name": "value to text", - "value": 1 - }, - { - "name": "range to text", - "value": 2 - } - ], - "maxDataPoints": 100, - "nullPointMode": "connected", - "nullText": null, - "postfix": "", - "postfixFontSize": "50%", - "prefix": "", - "prefixFontSize": "50%", - "rangeMaps": [ - { - "from": "null", - "text": "N/A", - "to": "null" - } - ], - "span": 3, - "sparkline": { - "fillColor": "rgba(31, 118, 189, 0.18)", - "full": false, - "lineColor": "rgb(31, 120, 193)", - "show": false - }, - "tableColumn": "", - "targets": [ - { - "expr": "max(kube_statefulset_metadata_generation{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "", - "refId": "A" - } - ], - "thresholds": "", - "title": "Metadata Generation", - "tooltip": { - "shared": false - }, - "type": "singlestat", - "valueFontSize": "80%", - "valueMaps": [ - { - "op": "=", - "text": "0", - "value": "null" - } - ], - "valueName": "current" - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - }, - { - "collapse": false, - "collapsed": false, - "panels": [ - { - "aliasColors": { - - }, - "bars": false, - "dashLength": 10, - "dashes": false, - "datasource": "$datasource", - "fill": 1, - "gridPos": { - - }, - "id": 9, - "legend": { - "alignAsTable": false, - "avg": false, - "current": false, - "max": false, - "min": false, - "rightSide": false, - "show": true, - "total": false, - "values": false - }, - "lines": true, - "linewidth": 1, - "links": [ - - ], - "nullPointMode": "null", - "percentage": false, - "pointradius": 5, - "points": false, - "renderer": "flot", - "repeat": null, - "seriesOverrides": [ - - ], - "spaceLength": 10, - "stack": false, - "steppedLine": false, - "targets": [ - { - "expr": "max(kube_statefulset_replicas{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas specified", - "refId": "A" - }, - { - "expr": "max(kube_statefulset_status_replicas{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas created", - "refId": "B" - }, - { - "expr": "min(kube_statefulset_status_replicas_ready{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "ready", - "refId": "C" - }, - { - "expr": "min(kube_statefulset_status_replicas_current{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "replicas of current version", - "refId": "D" - }, - { - "expr": "min(kube_statefulset_status_replicas_updated{job=\"kube-state-metrics\", statefulset=\"$statefulset\", cluster=\"$cluster\", namespace=\"$namespace\"}) without (instance, pod)", - "format": "time_series", - "intervalFactor": 2, - "legendFormat": "updated", - "refId": "E" - } - ], - "thresholds": [ - - ], - "timeFrom": null, - "timeShift": null, - "title": "Replicas", - "tooltip": { - "shared": false, - "sort": 0, - "value_type": "individual" - }, - "type": "graph", - "xaxis": { - "buckets": null, - "mode": "time", - "name": null, - "show": true, - "values": [ - - ] - }, - "yaxes": [ - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - }, - { - "format": "short", - "label": null, - "logBase": 1, - "max": null, - "min": null, - "show": true - } - ] - } - ], - "repeat": null, - "repeatIteration": null, - "repeatRowId": null, - "showTitle": false, - "title": "Dashboard Row", - "titleSize": "h6", - "type": "row" - } - ], - "schemaVersion": 14, - "style": "dark", - "tags": [ - "kubernetes-mixin" - ], - "templating": { - "list": [ - { - "current": { - "text": "Prometheus", - "value": "Prometheus" - }, - "hide": 0, - "label": null, - "name": "datasource", - "options": [ - - ], - "query": "prometheus", - "refresh": 1, - "regex": "", - "type": "datasource" - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": {{ if .Values.grafana.sidecar.dashboards.multicluster }}0{{ else }}2{{ end }}, - "includeAll": false, - "label": "cluster", - "multi": false, - "name": "cluster", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation, cluster)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Namespace", - "multi": false, - "name": "namespace", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation{job=\"kube-state-metrics\"}, namespace)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - }, - { - "allValue": null, - "current": { - - }, - "datasource": "$datasource", - "hide": 0, - "includeAll": false, - "label": "Name", - "multi": false, - "name": "statefulset", - "options": [ - - ], - "query": "label_values(kube_statefulset_metadata_generation{job=\"kube-state-metrics\", namespace=\"$namespace\"}, statefulset)", - "refresh": 2, - "regex": "", - "sort": 0, - "tagValuesQuery": "", - "tags": [ - - ], - "tagsQuery": "", - "type": "query", - "useTags": false - } - ] - }, - "time": { - "from": "now-1h", - "to": "now" - }, - "timepicker": { - "refresh_intervals": [ - "5s", - "10s", - "30s", - "1m", - "5m", - "15m", - "30m", - "1h", - "2h", - "1d" - ], - "time_options": [ - "5m", - "15m", - "1h", - "6h", - "12h", - "24h", - "2d", - "7d", - "30d" - ] - }, - "timezone": "", - "title": "Kubernetes / StatefulSets", - "uid": "a31c1f46e6f727cb37c0d731a7245005", - "version": 0 - } -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/namespaces.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/namespaces.yaml deleted file mode 100644 index 39ed210ed..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/namespaces.yaml +++ /dev/null @@ -1,13 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled (not .Values.grafana.defaultDashboards.useExistingNamespace) }} -apiVersion: v1 -kind: Namespace -metadata: - name: {{ .Values.grafana.defaultDashboards.namespace }} - labels: - name: {{ .Values.grafana.defaultDashboards.namespace }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - annotations: -{{- if not .Values.grafana.defaultDashboards.cleanupOnUninstall }} - helm.sh/resource-policy: "keep" -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/servicemonitor.yaml deleted file mode 100644 index 1e839d707..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/grafana/servicemonitor.yaml +++ /dev/null @@ -1,32 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-grafana - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-grafana -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - selector: - matchLabels: - app.kubernetes.io/name: grafana - app.kubernetes.io/instance: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} - endpoints: - - port: {{ .Values.grafana.service.portName }} - {{- if .Values.grafana.serviceMonitor.interval }} - interval: {{ .Values.grafana.serviceMonitor.interval }} - {{- end }} - path: {{ .Values.grafana.serviceMonitor.path | quote }} -{{- if .Values.grafana.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.grafana.serviceMonitor.metricRelabelings | indent 6) . }} -{{- end }} -{{- if .Values.grafana.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.grafana.serviceMonitor.relabelings | indent 6 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml deleted file mode 100644 index 249af770a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrole.yaml +++ /dev/null @@ -1,33 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -rules: - - apiGroups: - - admissionregistration.k8s.io - resources: - - validatingwebhookconfigurations - - mutatingwebhookconfigurations - verbs: - - get - - update -{{- if .Values.global.rbac.pspEnabled }} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} - - apiGroups: ['policy'] -{{- else }} - - apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-admission -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml deleted file mode 100644 index 31fd2def0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/clusterrolebinding.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-admission -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml deleted file mode 100644 index e86610cb7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-createSecret.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission-create - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install,pre-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -spec: - {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }} - # Alpha feature since k8s 1.12 - ttlSecondsAfterFinished: 0 - {{- end }} - template: - metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission-create -{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }} - annotations: -{{ toYaml . | indent 8 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-create -{{- include "kube-prometheus-stack.labels" $ | indent 8 }} - spec: - {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - {{- end }} - containers: - - name: create - {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - image: {{ template "system_default_registry" . }}{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - {{- else }} - image: {{ template "system_default_registry" . }}{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }} - {{- end }} - imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }} - args: - - create - - --host={{ template "kube-prometheus-stack.operator.fullname" . }},{{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }}.svc - - --namespace={{ template "kube-prometheus-stack.namespace" . }} - - --secret-name={{ template "kube-prometheus-stack.fullname" . }}-admission - resources: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }} - restartPolicy: OnFailure - serviceAccountName: {{ template "kube-prometheus-stack.fullname" . }}-admission - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }} -{{ toYaml . | indent 8 }} -{{- end }} - {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }} -{{ toYaml . | indent 8 }} -{{- end }} - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 2000 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml deleted file mode 100644 index c2742073f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/job-patchWebhook.yaml +++ /dev/null @@ -1,66 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission-patch - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -spec: - {{- if .Capabilities.APIVersions.Has "batch/v1alpha1" }} - # Alpha feature since k8s 1.12 - ttlSecondsAfterFinished: 0 - {{- end }} - template: - metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission-patch -{{- with .Values.prometheusOperator.admissionWebhooks.patch.podAnnotations }} - annotations: -{{ toYaml . | indent 8 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission-patch -{{- include "kube-prometheus-stack.labels" $ | indent 8 }} - spec: - {{- if .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.admissionWebhooks.patch.priorityClassName }} - {{- end }} - containers: - - name: patch - {{- if .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - image: {{ template "system_default_registry" . }}{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }}@sha256:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.sha }} - {{- else }} - image: {{ template "system_default_registry" . }}{{ .Values.prometheusOperator.admissionWebhooks.patch.image.repository }}:{{ .Values.prometheusOperator.admissionWebhooks.patch.image.tag }} - {{- end }} - imagePullPolicy: {{ .Values.prometheusOperator.admissionWebhooks.patch.image.pullPolicy }} - args: - - patch - - --webhook-name={{ template "kube-prometheus-stack.fullname" . }}-admission - - --namespace={{ template "kube-prometheus-stack.namespace" . }} - - --secret-name={{ template "kube-prometheus-stack.fullname" . }}-admission - - --patch-failure-policy={{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - resources: -{{ toYaml .Values.prometheusOperator.admissionWebhooks.patch.resources | indent 12 }} - restartPolicy: OnFailure - serviceAccountName: {{ template "kube-prometheus-stack.fullname" . }}-admission - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- with .Values.prometheusOperator.admissionWebhooks.patch.nodeSelector }} -{{ toYaml . | indent 8 }} -{{- end }} - {{- with .Values.prometheusOperator.admissionWebhooks.patch.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- with .Values.prometheusOperator.admissionWebhooks.patch.tolerations }} -{{ toYaml . | indent 8 }} -{{- end }} - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 2000 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml deleted file mode 100644 index 5834c483c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/psp.yaml +++ /dev/null @@ -1,54 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" . }}-admission -{{- if .Values.global.rbac.pspAnnotations }} - annotations: -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - privileged: false - # Required to prevent escalations to root. - # allowPrivilegeEscalation: false - # This is redundant with non-root + disallow privilege escalation, - # but we can provide it for defense in depth. - #requiredDropCapabilities: - # - ALL - # Allow core volume types. - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - # Permits the container to run with root privileges as well. - rule: 'RunAsAny' - seLinux: - # This policy assumes the nodes are using AppArmor rather than SELinux. - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml deleted file mode 100644 index d229f76ef..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/role.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -rules: - - apiGroups: - - "" - resources: - - secrets - verbs: - - get - - create -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml deleted file mode 100644 index f4b1fbf0e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/rolebinding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ template "kube-prometheus-stack.fullname" . }}-admission -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml deleted file mode 100644 index 2048f049c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/job-patch/serviceaccount.yaml +++ /dev/null @@ -1,15 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled .Values.prometheusOperator.admissionWebhooks.patch.enabled .Values.global.rbac.create (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} - annotations: - "helm.sh/hook": pre-install,pre-upgrade,post-install,post-upgrade - "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml deleted file mode 100644 index b67df54bf..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/mutatingWebhookConfiguration.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled }} -apiVersion: admissionregistration.k8s.io/v1 -kind: MutatingWebhookConfiguration -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission -{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -webhooks: - - name: prometheusrulemutate.monitoring.coreos.com - {{- if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} - failurePolicy: Ignore - {{- else }} - failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - {{- end }} - rules: - - apiGroups: - - monitoring.coreos.com - apiVersions: - - "*" - resources: - - prometheusrules - operations: - - CREATE - - UPDATE - clientConfig: - service: - namespace: {{ template "kube-prometheus-stack.namespace" . }} - name: {{ template "kube-prometheus-stack.operator.fullname" $ }} - path: /admission-prometheusrules/mutate - {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} - caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }} - {{- end }} - admissionReviewVersions: ["v1", "v1beta1"] - sideEffects: None -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml deleted file mode 100644 index 249488e41..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/admission-webhooks/validatingWebhookConfiguration.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- if and .Values.prometheusOperator.admissionWebhooks.enabled }} -apiVersion: admissionregistration.k8s.io/v1 -kind: ValidatingWebhookConfiguration -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission -{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }} - annotations: - certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} - cert-manager.io/inject-ca-from: {{ printf "%s/%s-root-cert" .Release.Namespace (include "kube-prometheus-stack.fullname" .) | quote }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-admission -{{- include "kube-prometheus-stack.labels" $ | indent 4 }} -webhooks: - - name: prometheusrulemutate.monitoring.coreos.com - {{- if .Values.prometheusOperator.admissionWebhooks.patch.enabled }} - failurePolicy: Ignore - {{- else }} - failurePolicy: {{ .Values.prometheusOperator.admissionWebhooks.failurePolicy }} - {{- end }} - rules: - - apiGroups: - - monitoring.coreos.com - apiVersions: - - "*" - resources: - - prometheusrules - operations: - - CREATE - - UPDATE - clientConfig: - service: - namespace: {{ template "kube-prometheus-stack.namespace" . }} - name: {{ template "kube-prometheus-stack.operator.fullname" $ }} - path: /admission-prometheusrules/validate - {{- if and .Values.prometheusOperator.admissionWebhooks.caBundle (not .Values.prometheusOperator.admissionWebhooks.patch.enabled) (not .Values.prometheusOperator.admissionWebhooks.certManager.enabled) }} - caBundle: {{ .Values.prometheusOperator.admissionWebhooks.caBundle }} - {{- end }} - admissionReviewVersions: ["v1", "v1beta1"] - sideEffects: None -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/certmanager.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/certmanager.yaml deleted file mode 100644 index 090e6a5bb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/certmanager.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if .Values.prometheusOperator.admissionWebhooks.certManager.enabled -}} -{{- if not .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef -}} -# Create a selfsigned Issuer, in order to create a root CA certificate for -# signing webhook serving certificates -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-self-signed-issuer - namespace: {{ template "kube-prometheus-stack.namespace" . }} -spec: - selfSigned: {} ---- -# Generate a CA Certificate used to sign certificates for the webhook -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-root-cert - namespace: {{ template "kube-prometheus-stack.namespace" . }} -spec: - secretName: {{ template "kube-prometheus-stack.fullname" . }}-root-cert - duration: 43800h # 5y - issuerRef: - name: {{ template "kube-prometheus-stack.fullname" . }}-self-signed-issuer - commonName: "ca.webhook.kube-prometheus-stack" - isCA: true ---- -# Create an Issuer that uses the above generated CA certificate to issue certs -apiVersion: cert-manager.io/v1 -kind: Issuer -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-root-issuer - namespace: {{ template "kube-prometheus-stack.namespace" . }} -spec: - ca: - secretName: {{ template "kube-prometheus-stack.fullname" . }}-root-cert -{{- end }} ---- -# generate a serving certificate for the apiservices to use -apiVersion: cert-manager.io/v1 -kind: Certificate -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - namespace: {{ template "kube-prometheus-stack.namespace" . }} -spec: - secretName: {{ template "kube-prometheus-stack.fullname" . }}-admission - duration: 8760h # 1y - issuerRef: - {{- if .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef }} - {{- toYaml .Values.prometheusOperator.admissionWebhooks.certManager.issuerRef | nindent 4 }} - {{- else }} - name: {{ template "kube-prometheus-stack.fullname" . }}-root-issuer - {{- end }} - dnsNames: - - {{ template "kube-prometheus-stack.operator.fullname" . }} - - {{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }} - - {{ template "kube-prometheus-stack.operator.fullname" . }}.{{ template "kube-prometheus-stack.namespace" . }}.svc -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrole.yaml deleted file mode 100644 index e5568534c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrole.yaml +++ /dev/null @@ -1,80 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -rules: -- 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 -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrolebinding.yaml deleted file mode 100644 index c9ab0ab87..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/clusterrolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-operator -subjects: -- kind: ServiceAccount - name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/deployment.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/deployment.yaml deleted file mode 100644 index 6e72acfa0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/deployment.yaml +++ /dev/null @@ -1,145 +0,0 @@ -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -{{- if .Values.prometheusOperator.enabled }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - replicas: 1 - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator - release: {{ $.Release.Name | quote }} - template: - metadata: - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 8 }} -{{- if .Values.prometheusOperator.podLabels }} -{{ toYaml .Values.prometheusOperator.podLabels | indent 8 }} -{{- end }} -{{- if .Values.prometheusOperator.podAnnotations }} - annotations: -{{ toYaml .Values.prometheusOperator.podAnnotations | indent 8 }} -{{- end }} - spec: - {{- if .Values.prometheusOperator.priorityClassName }} - priorityClassName: {{ .Values.prometheusOperator.priorityClassName }} - {{- end }} - containers: - - name: {{ template "kube-prometheus-stack.name" . }} - {{- if .Values.prometheusOperator.image.sha }} - image: "{{ template "system_default_registry" . }}{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag }}@sha256:{{ .Values.prometheusOperator.image.sha }}" - {{- else }} - image: "{{ template "system_default_registry" . }}{{ .Values.prometheusOperator.image.repository }}:{{ .Values.prometheusOperator.image.tag }}" - {{- end }} - imagePullPolicy: "{{ .Values.prometheusOperator.image.pullPolicy }}" - args: - {{- if .Values.prometheusOperator.kubeletService.enabled }} - - --kubelet-service={{ .Values.prometheusOperator.kubeletService.namespace }}/{{ template "kube-prometheus-stack.fullname" . }}-kubelet - {{- end }} - {{- if .Values.prometheusOperator.logFormat }} - - --log-format={{ .Values.prometheusOperator.logFormat }} - {{- end }} - {{- if .Values.prometheusOperator.logLevel }} - - --log-level={{ .Values.prometheusOperator.logLevel }} - {{- end }} - {{- if .Values.prometheusOperator.denyNamespaces }} - - --deny-namespaces={{ .Values.prometheusOperator.denyNamespaces | join "," }} - {{- end }} - {{- with $.Values.prometheusOperator.namespaces }} - {{ $ns := .additional }} - {{- if .releaseNamespace }} - {{- $ns = append $ns $namespace }} - {{- end }} - - --namespaces={{ $ns | join "," }} - {{- end }} - - --localhost=127.0.0.1 - {{- if .Values.prometheusOperator.prometheusDefaultBaseImage }} - - --prometheus-default-base-image={{ .Values.prometheusOperator.prometheusDefaultBaseImage }} - {{- end }} - {{- if .Values.prometheusOperator.alertmanagerDefaultBaseImage }} - - --alertmanager-default-base-image={{ .Values.prometheusOperator.alertmanagerDefaultBaseImage }} - {{- end }} - {{- if .Values.prometheusOperator.prometheusConfigReloaderImage.sha }} - - --prometheus-config-reloader={{ template "system_default_registry" . }}{{ .Values.prometheusOperator.prometheusConfigReloaderImage.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.tag }}@sha256:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.sha }} - {{- else }} - - --prometheus-config-reloader={{ template "system_default_registry" . }}{{ .Values.prometheusOperator.prometheusConfigReloaderImage.repository }}:{{ .Values.prometheusOperator.prometheusConfigReloaderImage.tag }} - {{- end }} - - --config-reloader-cpu={{ .Values.prometheusOperator.configReloaderCpu }} - - --config-reloader-memory={{ .Values.prometheusOperator.configReloaderMemory }} - {{- if .Values.prometheusOperator.alertmanagerInstanceNamespaces }} - - --alertmanager-instance-namespaces={{ .Values.prometheusOperator.alertmanagerInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.prometheusInstanceNamespaces }} - - --prometheus-instance-namespaces={{ .Values.prometheusOperator.prometheusInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.thanosRulerInstanceNamespaces }} - - --thanos-ruler-instance-namespaces={{ .Values.prometheusOperator.thanosRulerInstanceNamespaces | join "," }} - {{- end }} - {{- if .Values.prometheusOperator.secretFieldSelector }} - - --secret-field-selector={{ .Values.prometheusOperator.secretFieldSelector }} - {{- end }} - {{- if .Values.prometheusOperator.clusterDomain }} - - --cluster-domain={{ .Values.prometheusOperator.clusterDomain }} - {{- end }} - {{- if .Values.prometheusOperator.tls.enabled }} - - --web.enable-tls=true - - --web.cert-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.crt{{ else }}cert{{ end }} - - --web.key-file=/cert/{{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}tls.key{{ else }}key{{ end }} - - --web.listen-address=:{{ .Values.prometheusOperator.tls.internalPort }} - - --web.tls-min-version={{ .Values.prometheusOperator.tls.tlsMinVersion }} - ports: - - containerPort: {{ .Values.prometheusOperator.tls.internalPort }} - name: https - {{- else }} - ports: - - containerPort: 8080 - name: http - {{- end }} - resources: -{{ toYaml .Values.prometheusOperator.resources | indent 12 }} - securityContext: - allowPrivilegeEscalation: false - readOnlyRootFilesystem: true -{{- if .Values.prometheusOperator.tls.enabled }} - volumeMounts: - - name: tls-secret - mountPath: /cert - readOnly: true - volumes: - - name: tls-secret - secret: - defaultMode: 420 - secretName: {{ template "kube-prometheus-stack.fullname" . }}-admission -{{- end }} - {{- with .Values.prometheusOperator.dnsConfig }} - dnsConfig: -{{ toYaml . | indent 8 }} - {{- end }} -{{- if .Values.prometheusOperator.securityContext }} - securityContext: -{{ toYaml .Values.prometheusOperator.securityContext | indent 8 }} -{{- end }} - serviceAccountName: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} -{{- if .Values.prometheusOperator.hostNetwork }} - hostNetwork: true - dnsPolicy: ClusterFirstWithHostNet -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} -{{- with .Values.prometheusOperator.nodeSelector }} -{{ toYaml . | indent 8 }} -{{- end }} - {{- with .Values.prometheusOperator.affinity }} - affinity: -{{ toYaml . | indent 8 }} - {{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} -{{- with .Values.prometheusOperator.tolerations }} -{{ toYaml . | indent 8 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrole.yaml deleted file mode 100644 index d667d6275..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrole.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -rules: -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} -- apiGroups: ['policy'] -{{- else }} -- apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-operator -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrolebinding.yaml deleted file mode 100644 index c538cd173..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -kind: ClusterRoleBinding -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-operator-psp -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp.yaml deleted file mode 100644 index 18d1d37df..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/psp.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{- if .Values.global.rbac.pspAnnotations }} - annotations: -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - privileged: false - # Required to prevent escalations to root. - # allowPrivilegeEscalation: false - # This is redundant with non-root + disallow privilege escalation, - # but we can provide it for defense in depth. - #requiredDropCapabilities: - # - ALL - # Allow core volume types. - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' - hostNetwork: {{ .Values.prometheusOperator.hostNetwork }} - hostIPC: false - hostPID: false - runAsUser: - # Permits the container to run with root privileges as well. - rule: 'RunAsAny' - seLinux: - # This policy assumes the nodes are using AppArmor rather than SELinux. - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/service.yaml deleted file mode 100644 index 8ccb2bb2d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/service.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- if .Values.prometheusOperator.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheusOperator.service.labels }} -{{ toYaml .Values.prometheusOperator.service.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.service.annotations }} - annotations: -{{ toYaml .Values.prometheusOperator.service.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.prometheusOperator.service.clusterIP }} - clusterIP: {{ .Values.prometheusOperator.service.clusterIP }} -{{- end }} -{{- if .Values.prometheusOperator.service.externalIPs }} - externalIPs: -{{ toYaml .Values.prometheusOperator.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.prometheusOperator.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.prometheusOperator.service.loadBalancerIP }} -{{- end }} -{{- if .Values.prometheusOperator.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.prometheusOperator.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} - ports: - {{- if not .Values.prometheusOperator.tls.enabled }} - - name: http - {{- if eq .Values.prometheusOperator.service.type "NodePort" }} - nodePort: {{ .Values.prometheusOperator.service.nodePort }} - {{- end }} - port: 8080 - targetPort: http - {{- end }} - {{- if .Values.prometheusOperator.tls.enabled }} - - name: https - {{- if eq .Values.prometheusOperator.service.type "NodePort"}} - nodePort: {{ .Values.prometheusOperator.service.nodePortTls }} - {{- end }} - port: 443 - targetPort: https - {{- end }} - selector: - app: {{ template "kube-prometheus-stack.name" . }}-operator - release: {{ $.Release.Name | quote }} - type: "{{ .Values.prometheusOperator.service.type }}" -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/serviceaccount.yaml deleted file mode 100644 index ab41797e3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/serviceaccount.yaml +++ /dev/null @@ -1,12 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.operator.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/servicemonitor.yaml deleted file mode 100644 index b7bd952bb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus-operator/servicemonitor.yaml +++ /dev/null @@ -1,44 +0,0 @@ -{{- if and .Values.prometheusOperator.enabled .Values.prometheusOperator.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-operator - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-operator -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - endpoints: - {{- if .Values.prometheusOperator.tls.enabled }} - - port: https - scheme: https - tlsConfig: - serverName: {{ template "kube-prometheus-stack.operator.fullname" . }} - ca: - secret: - name: {{ template "kube-prometheus-stack.fullname" . }}-admission - key: {{ if .Values.prometheusOperator.admissionWebhooks.certManager.enabled }}ca.crt{{ else }}ca{{ end }} - optional: false - {{- else }} - - port: http - {{- end }} - honorLabels: true - {{- if .Values.prometheusOperator.serviceMonitor.interval }} - interval: {{ .Values.prometheusOperator.serviceMonitor.interval }} - {{- end }} -{{- if .Values.prometheusOperator.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.prometheusOperator.serviceMonitor.metricRelabelings | indent 6) . }} -{{- end }} -{{- if .Values.prometheusOperator.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.prometheusOperator.serviceMonitor.relabelings | indent 6 }} -{{- end }} - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-operator - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/_rules.tpl b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/_rules.tpl deleted file mode 100644 index 83245c089..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/_rules.tpl +++ /dev/null @@ -1,38 +0,0 @@ -{{- /* -Generated file. Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- define "rules.names" }} -rules: - - "alertmanager.rules" - - "general.rules" - - "k8s.rules" - - "kube-apiserver.rules" - - "kube-apiserver-availability.rules" - - "kube-apiserver-error" - - "kube-apiserver-slos" - - "kube-prometheus-general.rules" - - "kube-prometheus-node-alerting.rules" - - "kube-prometheus-node-recording.rules" - - "kube-scheduler.rules" - - "kube-state-metrics" - - "kubelet.rules" - - "kubernetes-absent" - - "kubernetes-resources" - - "kubernetes-storage" - - "kubernetes-system" - - "kubernetes-system-apiserver" - - "kubernetes-system-kubelet" - - "kubernetes-system-controller-manager" - - "kubernetes-system-scheduler" - - "node-exporter.rules" - - "node-exporter" - - "node.rules" - - "node-network" - - "node-time" - - "prometheus-operator" - - "prometheus.rules" - - "prometheus" - - "kubernetes-apps" - - "etcd" -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertRelabelConfigs.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertRelabelConfigs.yaml deleted file mode 100644 index bff930981..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertRelabelConfigs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-relabel-confg - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} - annotations: -{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus-am-relabel-confg -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: - additional-alert-relabel-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs | b64enc | quote }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertmanagerConfigs.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertmanagerConfigs.yaml deleted file mode 100644 index 8aebc96c3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalAlertmanagerConfigs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-confg - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} - annotations: -{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus-am-confg -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: - additional-alertmanager-configs.yaml: {{ toYaml .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs | b64enc | quote }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalPrometheusRules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalPrometheusRules.yaml deleted file mode 100644 index 794e9ad27..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalPrometheusRules.yaml +++ /dev/null @@ -1,40 +0,0 @@ -{{- if or .Values.additionalPrometheusRules .Values.additionalPrometheusRulesMap}} -apiVersion: v1 -kind: List -items: -{{- if .Values.additionalPrometheusRulesMap }} -{{- range $prometheusRuleName, $prometheusRule := .Values.additionalPrometheusRulesMap }} - - apiVersion: monitoring.coreos.com/v1 - kind: PrometheusRule - metadata: - name: {{ template "kube-prometheus-stack.name" $ }}-{{ $prometheusRuleName }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }} -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if $prometheusRule.additionalLabels }} -{{ toYaml $prometheusRule.additionalLabels | indent 8 }} - {{- end }} - spec: - groups: -{{ toYaml $prometheusRule.groups| indent 8 }} -{{- end }} -{{- else }} -{{- range .Values.additionalPrometheusRules }} - - apiVersion: monitoring.coreos.com/v1 - kind: PrometheusRule - metadata: - name: {{ template "kube-prometheus-stack.name" $ }}-{{ .name }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }} -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if .additionalLabels }} -{{ toYaml .additionalLabels | indent 8 }} - {{- end }} - spec: - groups: -{{ toYaml .groups| indent 8 }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalScrapeConfigs.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalScrapeConfigs.yaml deleted file mode 100644 index 21d9429d8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/additionalScrapeConfigs.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.prometheusSpec.additionalScrapeConfigs }} -apiVersion: v1 -kind: Secret -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-scrape-confg - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- if .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations }} - annotations: -{{ toYaml .Values.prometheus.prometheusSpec.additionalPrometheusSecretsAnnotations | indent 4 }} -{{- end }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus-scrape-confg -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -data: - additional-scrape-configs.yaml: {{ tpl (toYaml .Values.prometheus.prometheusSpec.additionalScrapeConfigs) $ | b64enc | quote }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrole.yaml deleted file mode 100644 index 3585b5db1..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrole.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.global.rbac.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -rules: -# This permission are not in the kube-prometheus repo -# they're grabbed from https://github.com/prometheus/prometheus/blob/master/documentation/examples/rbac-setup.yml -- apiGroups: [""] - resources: - - nodes - - nodes/metrics - - services - - endpoints - - pods - verbs: ["get", "list", "watch"] -- apiGroups: - - "networking.k8s.io" - resources: - - ingresses - verbs: ["get", "list", "watch"] -- nonResourceURLs: ["/metrics", "/metrics/cadvisor"] - verbs: ["get"] -{{- if .Values.prometheus.additionalRulesForClusterRole }} -{{ toYaml .Values.prometheus.additionalRulesForClusterRole | indent 0 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrolebinding.yaml deleted file mode 100644 index 9fc4f65da..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.global.rbac.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingress.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingress.yaml deleted file mode 100644 index 4d45873a7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingress.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.ingress.enabled }} -{{- $pathType := .Values.prometheus.ingress.pathType | default "" }} -{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} -{{- $servicePort := .Values.prometheus.service.port -}} -{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} -{{- $paths := .Values.prometheus.ingress.paths | default $routePrefix -}} -{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} -apiVersion: networking.k8s.io/v1beta1 -{{ else }} -apiVersion: extensions/v1beta1 -{{ end -}} -kind: Ingress -metadata: -{{- if .Values.prometheus.ingress.annotations }} - annotations: -{{ toYaml .Values.prometheus.ingress.annotations | indent 4 }} -{{- end }} - name: {{ $serviceName }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.ingress.labels }} -{{ toYaml .Values.prometheus.ingress.labels | indent 4 }} -{{- end }} -spec: - {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} - {{- if .Values.prometheus.ingress.ingressClassName }} - ingressClassName: {{ .Values.prometheus.ingress.ingressClassName }} - {{- end }} - {{- end }} - rules: - {{- if .Values.prometheus.ingress.hosts }} - {{- range $host := .Values.prometheus.ingress.hosts }} - - host: {{ tpl $host $ }} - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- end -}} - {{- if .Values.prometheus.ingress.tls }} - tls: -{{ tpl (toYaml .Values.prometheus.ingress.tls | indent 4) . }} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressThanosSidecar.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressThanosSidecar.yaml deleted file mode 100644 index 69de0f663..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressThanosSidecar.yaml +++ /dev/null @@ -1,64 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.thanosIngress.enabled }} -{{- $pathType := .Values.prometheus.thanosIngress.pathType | default "" }} -{{- $serviceName := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} -{{- $thanosPort := .Values.prometheus.thanosIngress.servicePort -}} -{{- $routePrefix := list .Values.prometheus.prometheusSpec.routePrefix }} -{{- $paths := .Values.prometheus.thanosIngress.paths | default $routePrefix -}} -{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} -apiVersion: networking.k8s.io/v1beta1 -{{ else }} -apiVersion: extensions/v1beta1 -{{ end -}} -kind: Ingress -metadata: -{{- if .Values.prometheus.thanosIngress.annotations }} - annotations: -{{ toYaml .Values.prometheus.thanosIngress.annotations | indent 4 }} -{{- end }} - name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-gateway - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.thanosIngress.labels }} -{{ toYaml .Values.prometheus.thanosIngress.labels | indent 4 }} -{{- end }} -spec: - {{- if or (.Capabilities.APIVersions.Has "networking.k8s.io/v1") (.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} - {{- if .Values.prometheus.thanosIngress.ingressClassName }} - ingressClassName: {{ .Values.prometheus.thanosIngress.ingressClassName }} - {{- end }} - {{- end }} - rules: - {{- if .Values.prometheus.thanosIngress.hosts }} - {{- range $host := .Values.prometheus.thanosIngress.hosts }} - - host: {{ tpl $host $ }} - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $thanosPort }} - {{- end -}} - {{- end -}} - {{- else }} - - http: - paths: - {{- range $p := $paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ $serviceName }} - servicePort: {{ $thanosPort }} - {{- end -}} - {{- end -}} - {{- if .Values.prometheus.thanosIngress.tls }} - tls: -{{ toYaml .Values.prometheus.thanosIngress.tls | indent 4 }} - {{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressperreplica.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressperreplica.yaml deleted file mode 100644 index 33143775b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/ingressperreplica.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled .Values.prometheus.ingressPerReplica.enabled }} -{{- $pathType := .Values.prometheus.ingressPerReplica.pathType | default "" }} -{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}} -{{- $servicePort := .Values.prometheus.servicePerReplica.port -}} -{{- $ingressValues := .Values.prometheus.ingressPerReplica -}} -apiVersion: v1 -kind: List -metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-ingressperreplica - namespace: {{ template "kube-prometheus-stack.namespace" $ }} -items: -{{ range $i, $e := until $count }} - - kind: Ingress - {{- if $.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1" }} - apiVersion: networking.k8s.io/v1beta1 - {{ else }} - apiVersion: extensions/v1beta1 - {{ end -}} - metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ include "kube-prometheus-stack.name" $ }}-prometheus -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if $ingressValues.labels }} -{{ toYaml $ingressValues.labels | indent 8 }} - {{- end }} - {{- if $ingressValues.annotations }} - annotations: -{{ toYaml $ingressValues.annotations | indent 8 }} - {{- end }} - spec: - {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1") ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1") }} - {{- if $ingressValues.ingressClassName }} - ingressClassName: {{ $ingressValues.ingressClassName }} - {{- end }} - {{- end }} - rules: - - host: {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} - http: - paths: - {{- range $p := $ingressValues.paths }} - - path: {{ tpl $p $ }} - {{- if $pathType }} - pathType: {{ $pathType }} - {{- end }} - backend: - serviceName: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - servicePort: {{ $servicePort }} - {{- end -}} - {{- if or $ingressValues.tlsSecretName $ingressValues.tlsSecretPerReplica.enabled }} - tls: - - hosts: - - {{ $ingressValues.hostPrefix }}-{{ $i }}.{{ $ingressValues.hostDomain }} - {{- if $ingressValues.tlsSecretPerReplica.enabled }} - secretName: {{ $ingressValues.tlsSecretPerReplica.prefix }}-{{ $i }} - {{- else }} - secretName: {{ $ingressValues.tlsSecretName }} - {{- end }} - {{- end }} -{{- end -}} -{{- end -}} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/nginx-config.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/nginx-config.yaml deleted file mode 100644 index 3f346ca4c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/nginx-config.yaml +++ /dev/null @@ -1,66 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: prometheus-nginx-proxy-config - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.annotations }} - annotations: -{{ toYaml .Values.prometheus.annotations | indent 4 }} -{{- end }} -data: - nginx.conf: |- - worker_processes auto; - error_log /dev/stdout warn; - pid /var/cache/nginx/nginx.pid; - - events { - worker_connections 1024; - } - - http { - include /etc/nginx/mime.types; - log_format main '[$time_local - $status] $remote_addr - $remote_user $request ($http_referer)'; - - proxy_connect_timeout 10; - proxy_read_timeout 180; - proxy_send_timeout 5; - proxy_buffering off; - proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my_zone:100m inactive=1d max_size=10g; - - server { - listen 8081; - access_log off; - - gzip on; - gzip_min_length 1k; - gzip_comp_level 2; - gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png; - gzip_vary on; - gzip_disable "MSIE [1-6]\."; - - proxy_set_header Host $host; - - location / { - proxy_cache my_zone; - proxy_cache_valid 200 302 1d; - proxy_cache_valid 301 30d; - proxy_cache_valid any 5m; - proxy_cache_bypass $http_cache_control; - add_header X-Proxy-Cache $upstream_cache_status; - add_header Cache-Control "public"; - - proxy_pass http://localhost:9090/; - - sub_filter_types text/html; - sub_filter_once off; - sub_filter 'var PATH_PREFIX = "";' 'var PATH_PREFIX = ".";'; - - if ($request_filename ~ .*\.(?:js|css|jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$) { - expires 90d; - } - } - } - } diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podDisruptionBudget.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podDisruptionBudget.yaml deleted file mode 100644 index 573317a32..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podDisruptionBudget.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.podDisruptionBudget.enabled }} -apiVersion: policy/v1beta1 -kind: PodDisruptionBudget -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - {{- if .Values.prometheus.podDisruptionBudget.minAvailable }} - minAvailable: {{ .Values.prometheus.podDisruptionBudget.minAvailable }} - {{- end }} - {{- if .Values.prometheus.podDisruptionBudget.maxUnavailable }} - maxUnavailable: {{ .Values.prometheus.podDisruptionBudget.maxUnavailable }} - {{- end }} - selector: - matchLabels: - app: prometheus - prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podmonitors.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podmonitors.yaml deleted file mode 100644 index 95d568e13..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/podmonitors.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.additionalPodMonitors }} -apiVersion: v1 -kind: List -items: -{{- range .Values.prometheus.additionalPodMonitors }} - - apiVersion: monitoring.coreos.com/v1 - kind: PodMonitor - metadata: - name: {{ .name }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-prometheus -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if .additionalLabels }} -{{ toYaml .additionalLabels | indent 8 }} - {{- end }} - spec: - podMetricsEndpoints: -{{ toYaml .podMetricsEndpoints | indent 8 }} - {{- if .jobLabel }} - jobLabel: {{ .jobLabel }} - {{- end }} - {{- if .namespaceSelector }} - namespaceSelector: -{{ toYaml .namespaceSelector | indent 8 }} - {{- end }} - selector: -{{ toYaml .selector | indent 8 }} - {{- if .podTargetLabels }} - podTargetLabels: -{{ toYaml .podTargetLabels | indent 8 }} - {{- end }} - {{- if .sampleLimit }} - sampleLimit: {{ .sampleLimit }} - {{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/prometheus.yaml deleted file mode 100644 index 9c30c814c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/prometheus.yaml +++ /dev/null @@ -1,319 +0,0 @@ -{{- if .Values.prometheus.enabled }} -apiVersion: monitoring.coreos.com/v1 -kind: Prometheus -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.annotations }} - annotations: -{{ toYaml .Values.prometheus.annotations | indent 4 }} -{{- end }} -spec: - alerting: - alertmanagers: -{{- if .Values.prometheus.prometheusSpec.alertingEndpoints }} -{{ toYaml .Values.prometheus.prometheusSpec.alertingEndpoints | indent 6 }} -{{- else if .Values.alertmanager.enabled }} - - namespace: {{ template "kube-prometheus-stack.namespace" . }} - name: {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - port: {{ .Values.alertmanager.alertmanagerSpec.portName }} - {{- if .Values.alertmanager.alertmanagerSpec.routePrefix }} - pathPrefix: "{{ .Values.alertmanager.alertmanagerSpec.routePrefix }}" - {{- end }} - apiVersion: {{ .Values.alertmanager.apiVersion }} -{{- else }} - [] -{{- end }} -{{- if .Values.prometheus.prometheusSpec.apiserverConfig }} - apiserverConfig: -{{ toYaml .Values.prometheus.prometheusSpec.apiserverConfig | indent 4}} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.image }} - image: {{ template "system_default_registry" . }}{{ .Values.prometheus.prometheusSpec.image.repository }}:{{ .Values.prometheus.prometheusSpec.image.tag }} - version: {{ .Values.prometheus.prometheusSpec.image.tag }} - {{- if .Values.prometheus.prometheusSpec.image.sha }} - sha: {{ .Values.prometheus.prometheusSpec.image.sha }} - {{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.externalLabels }} - externalLabels: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.externalLabels | indent 4) . }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.prometheusExternalLabelNameClear }} - prometheusExternalLabelName: "" -{{- else if .Values.prometheus.prometheusSpec.prometheusExternalLabelName }} - prometheusExternalLabelName: "{{ .Values.prometheus.prometheusSpec.prometheusExternalLabelName }}" -{{- end }} -{{- if .Values.prometheus.prometheusSpec.replicaExternalLabelNameClear }} - replicaExternalLabelName: "" -{{- else if .Values.prometheus.prometheusSpec.replicaExternalLabelName }} - replicaExternalLabelName: "{{ .Values.prometheus.prometheusSpec.replicaExternalLabelName }}" -{{- end }} -{{- if .Values.prometheus.prometheusSpec.externalUrl }} - externalUrl: "{{ tpl .Values.prometheus.prometheusSpec.externalUrl . }}" -{{- else if and .Values.prometheus.ingress.enabled .Values.prometheus.ingress.hosts }} - externalUrl: "http://{{ tpl (index .Values.prometheus.ingress.hosts 0) . }}{{ .Values.prometheus.prometheusSpec.routePrefix }}" -{{- else if not (or (kindIs "invalid" .Values.global.cattle.url) (kindIs "invalid" .Values.global.cattle.clusterId)) }} - externalUrl: "{{ .Values.global.cattle.url }}/k8s/clusters/{{ .Values.global.cattle.clusterId }}/api/v1/namespaces/{{ .Values.namespaceOverride }}/services/http:{{ template "kube-prometheus-stack.fullname" . }}-prometheus:{{ .Values.prometheus.service.port }}/proxy" -{{- else }} - externalUrl: http://{{ template "kube-prometheus-stack.fullname" . }}-prometheus.{{ template "kube-prometheus-stack.namespace" . }}:{{ .Values.prometheus.service.port }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} -{{- end }} - nodeSelector: {{ include "linux-node-selector" . | nindent 4 }} -{{- if .Values.prometheus.prometheusSpec.nodeSelector }} -{{ toYaml .Values.prometheus.prometheusSpec.nodeSelector | indent 4 }} -{{- end }} - paused: {{ .Values.prometheus.prometheusSpec.paused }} - replicas: {{ .Values.prometheus.prometheusSpec.replicas }} - shards: {{ .Values.prometheus.prometheusSpec.shards }} - logLevel: {{ .Values.prometheus.prometheusSpec.logLevel }} - logFormat: {{ .Values.prometheus.prometheusSpec.logFormat }} - listenLocal: {{ .Values.prometheus.prometheusSpec.listenLocal }} - enableAdminAPI: {{ .Values.prometheus.prometheusSpec.enableAdminAPI }} -{{- if .Values.prometheus.prometheusSpec.scrapeInterval }} - scrapeInterval: {{ .Values.prometheus.prometheusSpec.scrapeInterval }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.scrapeTimeout }} - scrapeTimeout: {{ .Values.prometheus.prometheusSpec.scrapeTimeout }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.evaluationInterval }} - evaluationInterval: {{ .Values.prometheus.prometheusSpec.evaluationInterval }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.resources }} - resources: -{{ toYaml .Values.prometheus.prometheusSpec.resources | indent 4 }} -{{- end }} - retention: {{ .Values.prometheus.prometheusSpec.retention | quote }} -{{- if .Values.prometheus.prometheusSpec.retentionSize }} - retentionSize: {{ .Values.prometheus.prometheusSpec.retentionSize | quote }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.walCompression }} - walCompression: {{ .Values.prometheus.prometheusSpec.walCompression }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.routePrefix }} - routePrefix: {{ .Values.prometheus.prometheusSpec.routePrefix | quote }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.secrets }} - secrets: -{{ toYaml .Values.prometheus.prometheusSpec.secrets | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.configMaps }} - configMaps: -{{ toYaml .Values.prometheus.prometheusSpec.configMaps | indent 4 }} -{{- end }} - serviceAccountName: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} -{{- if .Values.prometheus.prometheusSpec.serviceMonitorSelector }} - serviceMonitorSelector: -{{ toYaml .Values.prometheus.prometheusSpec.serviceMonitorSelector | indent 4 }} -{{ else if .Values.prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues }} - serviceMonitorSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - serviceMonitorSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector }} - serviceMonitorNamespaceSelector: -{{ toYaml .Values.prometheus.prometheusSpec.serviceMonitorNamespaceSelector | indent 4 }} -{{ else }} - serviceMonitorNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.podMonitorSelector }} - podMonitorSelector: -{{ toYaml .Values.prometheus.prometheusSpec.podMonitorSelector | indent 4 }} -{{ else if .Values.prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues }} - podMonitorSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - podMonitorSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector }} - podMonitorNamespaceSelector: -{{ toYaml .Values.prometheus.prometheusSpec.podMonitorNamespaceSelector | indent 4 }} -{{ else }} - podMonitorNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.probeSelector }} - probeSelector: -{{ toYaml .Values.prometheus.prometheusSpec.probeSelector | indent 4 }} -{{ else if .Values.prometheus.prometheusSpec.probeSelectorNilUsesHelmValues }} - probeSelector: - matchLabels: - release: {{ $.Release.Name | quote }} -{{ else }} - probeSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.probeNamespaceSelector }} - probeNamespaceSelector: -{{ toYaml .Values.prometheus.prometheusSpec.probeNamespaceSelector | indent 4 }} -{{ else }} - probeNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.remoteRead }} - remoteRead: -{{ toYaml .Values.prometheus.prometheusSpec.remoteRead | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.remoteWrite }} - remoteWrite: -{{ toYaml .Values.prometheus.prometheusSpec.remoteWrite | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.securityContext }} - securityContext: -{{ toYaml .Values.prometheus.prometheusSpec.securityContext | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.ruleNamespaceSelector }} - ruleNamespaceSelector: -{{ toYaml .Values.prometheus.prometheusSpec.ruleNamespaceSelector | indent 4 }} -{{ else }} - ruleNamespaceSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.ruleSelector }} - ruleSelector: -{{ toYaml .Values.prometheus.prometheusSpec.ruleSelector | indent 4}} -{{- else if .Values.prometheus.prometheusSpec.ruleSelectorNilUsesHelmValues }} - ruleSelector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }} - release: {{ $.Release.Name | quote }} -{{ else }} - ruleSelector: {} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.storageSpec }} - storage: -{{ toYaml .Values.prometheus.prometheusSpec.storageSpec | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.podMetadata }} - podMetadata: -{{ tpl (toYaml .Values.prometheus.prometheusSpec.podMetadata | indent 4) . }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.query }} - query: -{{ toYaml .Values.prometheus.prometheusSpec.query | indent 4}} -{{- end }} -{{- if or .Values.prometheus.prometheusSpec.podAntiAffinity .Values.prometheus.prometheusSpec.affinity }} - affinity: -{{- if .Values.prometheus.prometheusSpec.affinity }} -{{ toYaml .Values.prometheus.prometheusSpec.affinity | indent 4 }} -{{- end }} -{{- if eq .Values.prometheus.prometheusSpec.podAntiAffinity "hard" }} - podAntiAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app, operator: In, values: [prometheus]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-prometheus]} -{{- else if eq .Values.prometheus.prometheusSpec.podAntiAffinity "soft" }} - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - weight: 100 - podAffinityTerm: - topologyKey: {{ .Values.prometheus.prometheusSpec.podAntiAffinityTopologyKey }} - labelSelector: - matchExpressions: - - {key: app, operator: In, values: [prometheus]} - - {key: prometheus, operator: In, values: [{{ template "kube-prometheus-stack.fullname" . }}-prometheus]} -{{- end }} -{{- end }} - tolerations: {{ include "linux-node-tolerations" . | nindent 4 }} -{{- if .Values.prometheus.prometheusSpec.tolerations }} -{{ toYaml .Values.prometheus.prometheusSpec.tolerations | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.topologySpreadConstraints }} - topologySpreadConstraints: -{{ toYaml .Values.prometheus.prometheusSpec.topologySpreadConstraints | indent 4 }} -{{- end }} -{{- if .Values.global.imagePullSecrets }} - imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigs }} - additionalScrapeConfigs: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-scrape-confg - key: additional-scrape-configs.yaml -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.enabled }} - additionalScrapeConfigs: - name: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.name }} - key: {{ .Values.prometheus.prometheusSpec.additionalScrapeConfigsSecret.key }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalAlertManagerConfigs }} - additionalAlertManagerConfigs: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-confg - key: additional-alertmanager-configs.yaml -{{- end }} -{{- if .Values.prometheus.prometheusSpec.additionalAlertRelabelConfigs }} - additionalAlertRelabelConfigs: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-am-relabel-confg - key: additional-alert-relabel-configs.yaml -{{- end }} -{{- if .Values.prometheus.prometheusSpec.containers }} - containers: -{{ tpl .Values.prometheus.prometheusSpec.containers $ | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.initContainers }} - initContainers: -{{ toYaml .Values.prometheus.prometheusSpec.initContainers | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.priorityClassName }} - priorityClassName: {{ .Values.prometheus.prometheusSpec.priorityClassName }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.thanos }} - thanos: -{{ toYaml .Values.prometheus.prometheusSpec.thanos | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.disableCompaction }} - disableCompaction: {{ .Values.prometheus.prometheusSpec.disableCompaction }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.portName }} - portName: {{ .Values.prometheus.prometheusSpec.portName }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.volumes }} - volumes: -{{ toYaml .Values.prometheus.prometheusSpec.volumes | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.volumeMounts }} - volumeMounts: -{{ toYaml .Values.prometheus.prometheusSpec.volumeMounts | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs }} - arbitraryFSAccessThroughSMs: -{{ toYaml .Values.prometheus.prometheusSpec.arbitraryFSAccessThroughSMs | indent 4 }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.overrideHonorLabels }} - overrideHonorLabels: {{ .Values.prometheus.prometheusSpec.overrideHonorLabels }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.overrideHonorTimestamps }} - overrideHonorTimestamps: {{ .Values.prometheus.prometheusSpec.overrideHonorTimestamps }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} - ignoreNamespaceSelectors: {{ .Values.prometheus.prometheusSpec.ignoreNamespaceSelectors }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }} - enforcedNamespaceLabel: {{ .Values.prometheus.prometheusSpec.enforcedNamespaceLabel }} -{{- $prometheusDefaultRulesExcludedFromEnforce := (include "rules.names" .) | fromYaml }} - prometheusRulesExcludedFromEnforce: -{{- range $prometheusDefaultRulesExcludedFromEnforce.rules }} - - ruleNamespace: "{{ template "kube-prometheus-stack.namespace" $ }}" - ruleName: "{{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) . | trunc 63 | trimSuffix "-" }}" -{{- end }} -{{- if .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce }} -{{ toYaml .Values.prometheus.prometheusSpec.prometheusRulesExcludedFromEnforce | indent 4 }} -{{- end }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.queryLogFile }} - queryLogFile: {{ .Values.prometheus.prometheusSpec.queryLogFile }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.enforcedSampleLimit }} - enforcedSampleLimit: {{ .Values.prometheus.prometheusSpec.enforcedSampleLimit }} -{{- end }} -{{- if .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} - allowOverlappingBlocks: {{ .Values.prometheus.prometheusSpec.allowOverlappingBlocks }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrole.yaml deleted file mode 100644 index a279fb241..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrole.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -rules: -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if semverCompare "> 1.15.0-0" $kubeTargetVersion }} -- apiGroups: ['policy'] -{{- else }} -- apiGroups: ['extensions'] -{{- end }} - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-prometheus -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrolebinding.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrolebinding.yaml deleted file mode 100644 index 27b73b74b..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp-clusterrolebinding.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus-psp -subjects: - - kind: ServiceAccount - name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} -{{- end }} - diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp.yaml deleted file mode 100644 index 08da5e124..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/psp.yaml +++ /dev/null @@ -1,62 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.global.rbac.create .Values.global.rbac.pspEnabled }} -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{- if .Values.global.rbac.pspAnnotations }} - annotations: -{{ toYaml .Values.global.rbac.pspAnnotations | indent 4 }} -{{- end }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - privileged: false - # Required to prevent escalations to root. - # allowPrivilegeEscalation: false - # This is redundant with non-root + disallow privilege escalation, - # but we can provide it for defense in depth. - #requiredDropCapabilities: - # - ALL - # Allow core volume types. - volumes: - - 'configMap' - - 'emptyDir' - - 'projected' - - 'secret' - - 'downwardAPI' - - 'persistentVolumeClaim' -{{- if .Values.prometheus.podSecurityPolicy.volumes }} -{{ toYaml .Values.prometheus.podSecurityPolicy.volumes | indent 4 }} -{{- end }} - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - # Permits the container to run with root privileges as well. - rule: 'RunAsAny' - seLinux: - # This policy assumes the nodes are using AppArmor rather than SELinux. - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - # Forbid adding the root group. - - min: 0 - max: 65535 - readOnlyRootFilesystem: false -{{- if .Values.prometheus.podSecurityPolicy.allowedCapabilities }} - allowedCapabilities: -{{ toYaml .Values.prometheus.podSecurityPolicy.allowedCapabilities | indent 4 }} -{{- end }} -{{- if .Values.prometheus.podSecurityPolicy.allowedHostPaths }} - allowedHostPaths: -{{ toYaml .Values.prometheus.podSecurityPolicy.allowedHostPaths | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/alertmanager.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/alertmanager.rules.yaml deleted file mode 100644 index 387a67715..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/alertmanager.rules.yaml +++ /dev/null @@ -1,70 +0,0 @@ -{{- /* -Generated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.alertmanager }} -{{- $alertmanagerJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: alertmanager.rules - rules: - - alert: AlertmanagerConfigInconsistent - annotations: - message: 'The configuration of the instances of the Alertmanager cluster `{{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.service {{`}}`}}` are out of sync. - - {{`{{`}} range printf "alertmanager_config_hash{namespace=\"%s\",service=\"%s\"}" $labels.namespace $labels.service | query {{`}}`}} - - Configuration hash for pod {{`{{`}} .Labels.pod {{`}}`}} is "{{`{{`}} printf "%.f" .Value {{`}}`}}" - - {{`{{`}} end {{`}}`}} - - ' - expr: count by(namespace,service) (count_values by(namespace,service) ("config_hash", alertmanager_config_hash{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"})) != 1 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AlertmanagerFailedReload - annotations: - message: Reloading Alertmanager's configuration has failed for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}}. - expr: alertmanager_config_last_reload_successful{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} == 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AlertmanagerMembersInconsistent - annotations: - message: Alertmanager has not found all other members of the cluster. - expr: |- - alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} - != on (service) GROUP_LEFT() - count by (service) (alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}) - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/etcd.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/etcd.yaml deleted file mode 100644 index 85287315c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/etcd.yaml +++ /dev/null @@ -1,181 +0,0 @@ -{{- /* -Generated from 'etcd' group from https://raw.githubusercontent.com/etcd-io/website/master/content/docs/v3.4.0/op-guide/etcd3_alert.rules.yml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.etcd }} -{{- if (include "exporter.kubeEtcd.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "etcd" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: etcd - rules: - - alert: etcdInsufficientMembers - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": insufficient members ({{`{{`}} $value {{`}}`}}).' - expr: sum(up{job=~".*etcd.*"} == bool 1) by (job) < ((count(up{job=~".*etcd.*"}) by (job) + 1) / 2) - for: 3m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdNoLeader - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member {{`{{`}} $labels.instance {{`}}`}} has no leader.' - expr: etcd_server_has_leader{job=~".*etcd.*"} == 0 - for: 1m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfLeaderChanges - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": instance {{`{{`}} $labels.instance {{`}}`}} has seen {{`{{`}} $value {{`}}`}} leader changes within the last hour.' - expr: rate(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}[15m]) > 3 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) - > 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) - > 5 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdGRPCRequestsSlow - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": gRPC requests to {{`{{`}} $labels.grpc_method {{`}}`}} are taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_type="unary"}[5m])) by (job, instance, grpc_service, grpc_method, le)) - > 0.15 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdMemberCommunicationSlow - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member communication with {{`{{`}} $labels.To {{`}}`}} is taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.15 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedProposals - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} proposal failures within the last hour on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighFsyncDurations - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile fync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.5 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighCommitDurations - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile commit durations {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.25 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedHTTPRequests - annotations: - message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}' - expr: |- - sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) - BY (method) > 0.01 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedHTTPRequests - annotations: - message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) - BY (method) > 0.05 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHTTPRequestsSlow - annotations: - message: etcd instance {{`{{`}} $labels.instance {{`}}`}} HTTP requests to {{`{{`}} $labels.method {{`}}`}} are slow. - expr: |- - histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m])) - > 0.15 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/general.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/general.rules.yaml deleted file mode 100644 index 80771f4f8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/general.rules.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- /* -Generated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.general }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "general.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: general.rules - rules: - - alert: TargetDown - annotations: - message: '{{`{{`}} printf "%.4g" $value {{`}}`}}% of the {{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.service {{`}}`}} targets in {{`{{`}} $labels.namespace {{`}}`}} namespace are down.' - expr: 100 * (count(up == 0) BY (job, namespace, service) / count(up) BY (job, namespace, service)) > 10 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: Watchdog - annotations: - message: 'This is an alert meant to ensure that the entire alerting pipeline is functional. - - This alert is always firing, therefore it should always be firing in Alertmanager - - and always fire against a receiver. There are integrations with various notification - - mechanisms that send a notification when this alert is not firing. For example the - - "DeadMansSnitch" integration in PagerDuty. - - ' - expr: vector(1) - labels: - severity: none -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/k8s.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/k8s.rules.yaml deleted file mode 100644 index 037d2c348..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/k8s.rules.yaml +++ /dev/null @@ -1,117 +0,0 @@ -{{- /* -Generated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.k8s }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: k8s.rules - rules: - - expr: |- - sum by (cluster, namespace, pod, container) ( - rate(container_cpu_usage_seconds_total{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!="", container!="POD"}[5m]) - ) * on (cluster, namespace, pod) group_left(node) topk by (cluster, namespace, pod) ( - 1, max by(cluster, namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_cpu_usage_seconds_total:sum_rate - - expr: |- - container_memory_working_set_bytes{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!=""} - * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, - max by(namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_working_set_bytes - - expr: |- - container_memory_rss{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!=""} - * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, - max by(namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_rss - - expr: |- - container_memory_cache{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!=""} - * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, - max by(namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_cache - - expr: |- - container_memory_swap{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics/cadvisor", image!=""} - * on (namespace, pod) group_left(node) topk by(namespace, pod) (1, - max by(namespace, pod, node) (kube_pod_info{node!=""}) - ) - record: node_namespace_pod_container:container_memory_swap - - expr: |- - sum by (namespace) ( - sum by (namespace, pod) ( - max by (namespace, pod, container) ( - kube_pod_container_resource_requests_memory_bytes{job="kube-state-metrics"} - ) * on(namespace, pod) group_left() max by (namespace, pod) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace:kube_pod_container_resource_requests_memory_bytes:sum - - expr: |- - sum by (namespace) ( - sum by (namespace, pod) ( - max by (namespace, pod, container) ( - kube_pod_container_resource_requests_cpu_cores{job="kube-state-metrics"} - ) * on(namespace, pod) group_left() max by (namespace, pod) ( - kube_pod_status_phase{phase=~"Pending|Running"} == 1 - ) - ) - ) - record: namespace:kube_pod_container_resource_requests_cpu_cores:sum - - expr: |- - max by (cluster, namespace, workload, pod) ( - label_replace( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="ReplicaSet"}, - "replicaset", "$1", "owner_name", "(.*)" - ) * on(replicaset, namespace) group_left(owner_name) topk by(replicaset, namespace) ( - 1, max by (replicaset, namespace, owner_name) ( - kube_replicaset_owner{job="kube-state-metrics"} - ) - ), - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: deployment - record: namespace_workload_pod:kube_pod_owner:relabel - - expr: |- - max by (cluster, namespace, workload, pod) ( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="DaemonSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: daemonset - record: namespace_workload_pod:kube_pod_owner:relabel - - expr: |- - max by (cluster, namespace, workload, pod) ( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="StatefulSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) - labels: - workload_type: statefulset - record: namespace_workload_pod:kube_pod_owner:relabel -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml deleted file mode 100644 index 7b00b54a7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-availability.rules.yaml +++ /dev/null @@ -1,160 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-availability.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverAvailability }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-availability.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - interval: 3m - name: kube-apiserver-availability.rules - rules: - - expr: |- - 1 - ( - ( - # write too slow - sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) - - - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) - ) + - ( - # read too slow - sum(increase(apiserver_request_duration_seconds_count{verb=~"LIST|GET"}[30d])) - - - ( - ( - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) - or - vector(0) - ) - + - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) - + - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"LIST|GET",scope="cluster",le="5"}[30d])) - ) - ) + - # errors - sum(code:apiserver_request_total:increase30d{code=~"5.."} or vector(0)) - ) - / - sum(code:apiserver_request_total:increase30d) - labels: - verb: all - record: apiserver_request:availability30d - - expr: |- - 1 - ( - sum(increase(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30d])) - - - ( - # too slow - ( - sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30d])) - or - vector(0) - ) - + - sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30d])) - + - sum(increase(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30d])) - ) - + - # errors - sum(code:apiserver_request_total:increase30d{verb="read",code=~"5.."} or vector(0)) - ) - / - sum(code:apiserver_request_total:increase30d{verb="read"}) - labels: - verb: read - record: apiserver_request:availability30d - - expr: |- - 1 - ( - ( - # too slow - sum(increase(apiserver_request_duration_seconds_count{verb=~"POST|PUT|PATCH|DELETE"}[30d])) - - - sum(increase(apiserver_request_duration_seconds_bucket{verb=~"POST|PUT|PATCH|DELETE",le="1"}[30d])) - ) - + - # errors - sum(code:apiserver_request_total:increase30d{verb="write",code=~"5.."} or vector(0)) - ) - / - sum(code:apiserver_request_total:increase30d{verb="write"}) - labels: - verb: write - record: apiserver_request:availability30d - - expr: avg_over_time(code_verb:apiserver_request_total:increase1h[30d]) * 24 * 30 - record: code_verb:apiserver_request_total:increase30d - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"2.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"3.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"4.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="LIST",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="GET",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="POST",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PUT",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="PATCH",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code, verb) (increase(apiserver_request_total{job="apiserver",verb="DELETE",code=~"5.."}[1h])) - record: code_verb:apiserver_request_total:increase1h - - expr: sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"LIST|GET"}) - labels: - verb: read - record: code:apiserver_request_total:increase30d - - expr: sum by (code) (code_verb:apiserver_request_total:increase30d{verb=~"POST|PUT|PATCH|DELETE"}) - labels: - verb: write - record: code:apiserver_request_total:increase30d -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml deleted file mode 100644 index 0f44ccc10..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver-slos.yaml +++ /dev/null @@ -1,95 +0,0 @@ -{{- /* -Generated from 'kube-apiserver-slos' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserverSlos }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver-slos" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-apiserver-slos - rules: - - alert: KubeAPIErrorBudgetBurn - annotations: - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn - summary: The API server is burning too much error budget. - expr: |- - sum(apiserver_request:burnrate1h) > (14.40 * 0.01000) - and - sum(apiserver_request:burnrate5m) > (14.40 * 0.01000) - for: 2m - labels: - long: 1h - severity: critical - short: 5m -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorBudgetBurn - annotations: - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn - summary: The API server is burning too much error budget. - expr: |- - sum(apiserver_request:burnrate6h) > (6.00 * 0.01000) - and - sum(apiserver_request:burnrate30m) > (6.00 * 0.01000) - for: 15m - labels: - long: 6h - severity: critical - short: 30m -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorBudgetBurn - annotations: - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn - summary: The API server is burning too much error budget. - expr: |- - sum(apiserver_request:burnrate1d) > (3.00 * 0.01000) - and - sum(apiserver_request:burnrate2h) > (3.00 * 0.01000) - for: 1h - labels: - long: 1d - severity: warning - short: 2h -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorBudgetBurn - annotations: - description: The API server is burning too much error budget. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorbudgetburn - summary: The API server is burning too much error budget. - expr: |- - sum(apiserver_request:burnrate3d) > (1.00 * 0.01000) - and - sum(apiserver_request:burnrate6h) > (1.00 * 0.01000) - for: 3h - labels: - long: 3d - severity: warning - short: 6h -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml deleted file mode 100644 index eddc1e40f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-apiserver.rules.yaml +++ /dev/null @@ -1,358 +0,0 @@ -{{- /* -Generated from 'kube-apiserver.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserver }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-apiserver.rules - rules: - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1d])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1d])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1d])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1d])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1d])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1d])) - labels: - verb: read - record: apiserver_request:burnrate1d - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[1h])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[1h])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[1h])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[1h])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[1h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[1h])) - labels: - verb: read - record: apiserver_request:burnrate1h - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[2h])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[2h])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[2h])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[2h])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[2h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[2h])) - labels: - verb: read - record: apiserver_request:burnrate2h - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[30m])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[30m])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[30m])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[30m])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[30m])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[30m])) - labels: - verb: read - record: apiserver_request:burnrate30m - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[3d])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[3d])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[3d])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[3d])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[3d])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[3d])) - labels: - verb: read - record: apiserver_request:burnrate3d - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[5m])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[5m])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[5m])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[5m])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[5m])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) - labels: - verb: read - record: apiserver_request:burnrate5m - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"LIST|GET"}[6h])) - - - ( - ( - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope=~"resource|",le="0.1"}[6h])) - or - vector(0) - ) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="namespace",le="0.5"}[6h])) - + - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET",scope="cluster",le="5"}[6h])) - ) - ) - + - # errors - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET",code=~"5.."}[6h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[6h])) - labels: - verb: read - record: apiserver_request:burnrate6h - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1d])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1d])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1d])) - labels: - verb: write - record: apiserver_request:burnrate1d - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[1h])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[1h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[1h])) - labels: - verb: write - record: apiserver_request:burnrate1h - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[2h])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[2h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[2h])) - labels: - verb: write - record: apiserver_request:burnrate2h - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[30m])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[30m])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[30m])) - labels: - verb: write - record: apiserver_request:burnrate30m - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[3d])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[3d])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[3d])) - labels: - verb: write - record: apiserver_request:burnrate3d - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[5m])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[5m])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - labels: - verb: write - record: apiserver_request:burnrate5m - - expr: |- - ( - ( - # too slow - sum(rate(apiserver_request_duration_seconds_count{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) - - - sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",le="1"}[6h])) - ) - + - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE",code=~"5.."}[6h])) - ) - / - sum(rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[6h])) - labels: - verb: write - record: apiserver_request:burnrate6h - - expr: sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"LIST|GET"}[5m])) - labels: - verb: read - record: code_resource:apiserver_request_total:rate5m - - expr: sum by (code,resource) (rate(apiserver_request_total{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m])) - labels: - verb: write - record: code_resource:apiserver_request_total:rate5m - - expr: histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"LIST|GET"}[5m]))) > 0 - labels: - quantile: '0.99' - verb: read - record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.99, sum by (le, resource) (rate(apiserver_request_duration_seconds_bucket{job="apiserver",verb=~"POST|PUT|PATCH|DELETE"}[5m]))) > 0 - labels: - quantile: '0.99' - verb: write - record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.99, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) - labels: - quantile: '0.99' - record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) - labels: - quantile: '0.9' - record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(apiserver_request_duration_seconds_bucket{job="apiserver",subresource!="log",verb!~"LIST|WATCH|WATCHLIST|DELETECOLLECTION|PROXY|CONNECT"}[5m])) without(instance, pod)) - labels: - quantile: '0.5' - record: cluster_quantile:apiserver_request_duration_seconds:histogram_quantile -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml deleted file mode 100644 index e54bee587..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-general.rules.yaml +++ /dev/null @@ -1,31 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusGeneral }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-general.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-prometheus-general.rules - rules: - - expr: count without(instance, pod, node) (up == 1) - record: count:up1 - - expr: count without(instance, pod, node) (up == 0) - record: count:up0 -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml deleted file mode 100644 index 27271f1b5..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-prometheus-node-recording.rules.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusNodeRecording }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-node-recording.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-prometheus-node-recording.rules - rules: - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[3m])) BY (instance) - record: instance:node_cpu:rate:sum - - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance) - record: instance:node_network_receive_bytes:rate:sum - - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance) - record: instance:node_network_transmit_bytes:rate:sum - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance) - record: instance:node_cpu:ratio - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait",mode!="steal"}[5m])) - record: cluster:node_cpu:sum_rate5m - - expr: cluster:node_cpu_seconds_total:rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu)) - record: cluster:node_cpu:ratio -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml deleted file mode 100644 index 3c0ff31b0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-scheduler.rules.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- /* -Generated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeScheduler }} -{{- if (include "exporter.kubeScheduler.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-scheduler.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-scheduler.rules - rules: - - expr: histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.99, sum(rate(scheduler_binding_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_binding_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_e2e_scheduling_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_scheduling_algorithm_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_binding_duration_seconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_binding_duration_seconds:histogram_quantile -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-state-metrics.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-state-metrics.yaml deleted file mode 100644 index 0fa5032ba..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kube-state-metrics.yaml +++ /dev/null @@ -1,59 +0,0 @@ -{{- /* -Generated from 'kube-state-metrics' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeStateMetrics }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-state-metrics" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-state-metrics - rules: - - alert: KubeStateMetricsListErrors - annotations: - description: kube-state-metrics is experiencing errors at an elevated rate in list operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatemetricslisterrors - summary: kube-state-metrics is experiencing errors in list operations. - expr: |- - (sum(rate(kube_state_metrics_list_total{job="kube-state-metrics",result="error"}[5m])) - / - sum(rate(kube_state_metrics_list_total{job="kube-state-metrics"}[5m]))) - > 0.01 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStateMetricsWatchErrors - annotations: - description: kube-state-metrics is experiencing errors at an elevated rate in watch operations. This is likely causing it to not be able to expose metrics about Kubernetes objects correctly or at all. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatemetricswatcherrors - summary: kube-state-metrics is experiencing errors in watch operations. - expr: |- - (sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics",result="error"}[5m])) - / - sum(rate(kube_state_metrics_watch_total{job="kube-state-metrics"}[5m]))) - > 0.01 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubelet.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubelet.rules.yaml deleted file mode 100644 index 216132ec8..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubelet.rules.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- /* -Generated from 'kubelet.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubelet }} -{{- if (include "exporter.kubelet.enabled" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubelet.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubelet.rules - rules: - - expr: histogram_quantile(0.99, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"}) - labels: - quantile: '0.99' - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"}) - labels: - quantile: '0.9' - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(kubelet_pleg_relist_duration_seconds_bucket[5m])) by (instance, le) * on(instance) group_left(node) kubelet_node_name{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"}) - labels: - quantile: '0.5' - record: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-apps.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-apps.yaml deleted file mode 100644 index 198bbb845..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-apps.yaml +++ /dev/null @@ -1,298 +0,0 @@ -{{- /* -Generated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesApps }} -{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-apps" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-apps - rules: - - alert: KubePodCrashLooping - annotations: - description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} ({{`{{`}} $labels.container {{`}}`}}) is restarting {{`{{`}} printf "%.2f" $value {{`}}`}} times / 10 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodcrashlooping - summary: Pod is crash looping. - expr: rate(kube_pod_container_status_restarts_total{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[10m]) * 60 * 5 > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePodNotReady - annotations: - description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodnotready - summary: Pod has been in a non-ready state for more than 15 minutes. - expr: |- - sum by (namespace, pod) ( - max by(namespace, pod) ( - kube_pod_status_phase{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}", phase=~"Pending|Unknown"} - ) * on(namespace, pod) group_left(owner_kind) topk by(namespace, pod) ( - 1, max by(namespace, pod, owner_kind) (kube_pod_owner{owner_kind!="Job"}) - ) - ) > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDeploymentGenerationMismatch - annotations: - description: Deployment generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} does not match, this indicates that the Deployment has failed but has not been rolled back. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentgenerationmismatch - summary: Deployment generation mismatch due to possible roll-back - expr: |- - kube_deployment_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_deployment_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDeploymentReplicasMismatch - annotations: - description: Deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentreplicasmismatch - summary: Deployment has not matched the expected number of replicas. - expr: |- - ( - kube_deployment_spec_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_deployment_status_replicas_available{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) and ( - changes(kube_deployment_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetReplicasMismatch - annotations: - description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetreplicasmismatch - summary: Deployment has not matched the expected number of replicas. - expr: |- - ( - kube_statefulset_status_replicas_ready{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) and ( - changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetGenerationMismatch - annotations: - description: StatefulSet generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} does not match, this indicates that the StatefulSet has failed but has not been rolled back. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetgenerationmismatch - summary: StatefulSet generation mismatch due to possible roll-back - expr: |- - kube_statefulset_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetUpdateNotRolledOut - annotations: - description: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetupdatenotrolledout - summary: StatefulSet update has not been rolled out. - expr: |- - ( - max without (revision) ( - kube_statefulset_status_current_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - unless - kube_statefulset_status_update_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) - * - ( - kube_statefulset_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) - ) and ( - changes(kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetRolloutStuck - annotations: - description: DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} has not finished or progressed for at least 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetrolloutstuck - summary: DaemonSet rollout is stuck. - expr: |- - ( - ( - kube_daemonset_status_current_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) or ( - kube_daemonset_status_number_misscheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - 0 - ) or ( - kube_daemonset_updated_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) or ( - kube_daemonset_status_number_available{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) - ) and ( - changes(kube_daemonset_updated_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[5m]) - == - 0 - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeContainerWaiting - annotations: - description: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} container {{`{{`}} $labels.container{{`}}`}} has been in waiting state for longer than 1 hour. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecontainerwaiting - summary: Pod container waiting longer than 1 hour - expr: sum by (namespace, pod, container) (kube_pod_container_status_waiting_reason{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) > 0 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetNotScheduled - annotations: - description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are not scheduled.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetnotscheduled - summary: DaemonSet pods are not scheduled. - expr: |- - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - - - kube_daemonset_status_current_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetMisScheduled - annotations: - description: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are running where they are not supposed to run.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetmisscheduled - summary: DaemonSet pods are misscheduled. - expr: kube_daemonset_status_number_misscheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeJobCompletion - annotations: - description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} is taking more than 12 hours to complete. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobcompletion - summary: Job did not complete in time - expr: kube_job_spec_completions{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - kube_job_status_succeeded{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 12h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeJobFailed - annotations: - description: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} failed to complete. Removing failed job after investigation should clear this alert. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobfailed - summary: Job failed to complete. - expr: kube_job_failed{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeHpaReplicasMismatch - annotations: - description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.hpa {{`}}`}} has not matched the desired number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubehpareplicasmismatch - summary: HPA has not matched descired number of replicas. - expr: |- - (kube_hpa_status_desired_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) - and - (kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - > - kube_hpa_spec_min_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) - and - (kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - < - kube_hpa_spec_max_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}) - and - changes(kube_hpa_status_current_replicas[15m]) == 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeHpaMaxedOut - annotations: - description: HPA {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.hpa {{`}}`}} has been running at max replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubehpamaxedout - summary: HPA is running at max replicas - expr: |- - kube_hpa_status_current_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - == - kube_hpa_spec_max_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-resources.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-resources.yaml deleted file mode 100644 index 898f8eed2..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-resources.yaml +++ /dev/null @@ -1,159 +0,0 @@ -{{- /* -Generated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesResources }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-resources" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-resources - rules: - - alert: KubeCPUOvercommit - annotations: - description: Cluster has overcommitted CPU resource requests for Pods and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuovercommit - summary: Cluster has overcommitted CPU resource requests. - expr: |- - sum(namespace:kube_pod_container_resource_requests_cpu_cores:sum{}) - / - sum(kube_node_status_allocatable_cpu_cores) - > - (count(kube_node_status_allocatable_cpu_cores)-1) / count(kube_node_status_allocatable_cpu_cores) - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeMemoryOvercommit - annotations: - description: Cluster has overcommitted memory resource requests for Pods and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememoryovercommit - summary: Cluster has overcommitted memory resource requests. - expr: |- - sum(namespace:kube_pod_container_resource_requests_memory_bytes:sum{}) - / - sum(kube_node_status_allocatable_memory_bytes) - > - (count(kube_node_status_allocatable_memory_bytes)-1) - / - count(kube_node_status_allocatable_memory_bytes) - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeCPUQuotaOvercommit - annotations: - description: Cluster has overcommitted CPU resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuquotaovercommit - summary: Cluster has overcommitted CPU resource requests. - expr: |- - sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"}) - / - sum(kube_node_status_allocatable_cpu_cores) - > 1.5 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeMemoryQuotaOvercommit - annotations: - description: Cluster has overcommitted memory resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememoryquotaovercommit - summary: Cluster has overcommitted memory resource requests. - expr: |- - sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"}) - / - sum(kube_node_status_allocatable_memory_bytes{job="kube-state-metrics"}) - > 1.5 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeQuotaAlmostFull - annotations: - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotaalmostfull - summary: Namespace quota is going to be full. - expr: |- - kube_resourcequota{job="kube-state-metrics", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) - > 0.9 < 1 - for: 15m - labels: - severity: info -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeQuotaFullyUsed - annotations: - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotafullyused - summary: Namespace quota is fully used. - expr: |- - kube_resourcequota{job="kube-state-metrics", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) - == 1 - for: 15m - labels: - severity: info -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeQuotaExceeded - annotations: - description: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} $value | humanizePercentage {{`}}`}} of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotaexceeded - summary: Namespace quota has exceeded the limits. - expr: |- - kube_resourcequota{job="kube-state-metrics", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) - > 1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: CPUThrottlingHigh - annotations: - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container {{`}}`}} in pod {{`{{`}} $labels.pod {{`}}`}}.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-cputhrottlinghigh - summary: Processes experience elevated CPU throttling. - expr: |- - sum(increase(container_cpu_cfs_throttled_periods_total{container!="", }[5m])) by (container, pod, namespace) - / - sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container, pod, namespace) - > ( 25 / 100 ) - for: 15m - labels: - severity: info -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-storage.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-storage.yaml deleted file mode 100644 index ff71f8ddc..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-storage.yaml +++ /dev/null @@ -1,75 +0,0 @@ -{{- /* -Generated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesStorage }} -{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-storage" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-storage - rules: - - alert: KubePersistentVolumeFillingUp - annotations: - description: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is only {{`{{`}} $value | humanizePercentage {{`}}`}} free. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumefillingup - summary: PersistentVolume is filling up. - expr: |- - kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - / - kubelet_volume_stats_capacity_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - < 0.03 - for: 1m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePersistentVolumeFillingUp - annotations: - description: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is expected to fill up within four days. Currently {{`{{`}} $value | humanizePercentage {{`}}`}} is available. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumefillingup - summary: PersistentVolume is filling up. - expr: |- - ( - kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - / - kubelet_volume_stats_capacity_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"} - ) < 0.15 - and - predict_linear(kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}", metrics_path="/metrics"}[6h], 4 * 24 * 3600) < 0 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePersistentVolumeErrors - annotations: - description: The persistent volume {{`{{`}} $labels.persistentvolume {{`}}`}} has status {{`{{`}} $labels.phase {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumeerrors - summary: PersistentVolume is having issues with provisioning. - expr: kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="kube-state-metrics"} > 0 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml deleted file mode 100644 index 2ed298b35..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-apiserver.yaml +++ /dev/null @@ -1,98 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-apiserver' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-apiserver" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system-apiserver - rules: - - alert: KubeClientCertificateExpiration - annotations: - description: A client certificate used to authenticate to the apiserver is expiring in less than 7.0 days. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration - summary: Client certificate is about to expire. - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 604800 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientCertificateExpiration - annotations: - description: A client certificate used to authenticate to the apiserver is expiring in less than 24.0 hours. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration - summary: Client certificate is about to expire. - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and on(job) histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 86400 - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AggregatedAPIErrors - annotations: - description: An aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has reported errors. It has appeared unavailable {{`{{`}} $value | humanize {{`}}`}} times averaged over the past 10m. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-aggregatedapierrors - summary: An aggregated API has reported errors. - expr: sum by(name, namespace)(increase(aggregator_unavailable_apiservice_count[10m])) > 4 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AggregatedAPIDown - annotations: - description: An aggregated API {{`{{`}} $labels.name {{`}}`}}/{{`{{`}} $labels.namespace {{`}}`}} has been only {{`{{`}} $value | humanize {{`}}`}}% available over the last 10m. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-aggregatedapidown - summary: An aggregated API is down. - expr: (1 - max by(name, namespace)(avg_over_time(aggregator_unavailable_apiservice[10m]))) * 100 < 85 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- if .Values.kubeApiServer.enabled }} - - alert: KubeAPIDown - annotations: - description: KubeAPI has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapidown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="apiserver"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} - - alert: KubeAPITerminatedRequests - annotations: - description: The apiserver has terminated {{`{{`}} $value | humanizePercentage {{`}}`}} of its incoming requests. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapiterminatedrequests - summary: The apiserver has terminated {{`{{`}} $value | humanizePercentage {{`}}`}} of its incoming requests. - expr: sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) / ( sum(rate(apiserver_request_total{job="apiserver"}[10m])) + sum(rate(apiserver_request_terminations_total{job="apiserver"}[10m])) ) > 0.20 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml deleted file mode 100644 index bbb5f9e23..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-controller-manager.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-controller-manager' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create }} -{{- if (include "exporter.kubeControllerManager.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-controller-manager" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system-controller-manager - rules: -{{- if (include "exporter.kubeControllerManager.enabled" .)}} - - alert: KubeControllerManagerDown - annotations: - description: KubeControllerManager has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecontrollermanagerdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubeControllerManager.jobName" . }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml deleted file mode 100644 index a4d15ec61..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-kubelet.yaml +++ /dev/null @@ -1,188 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-kubelet' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-kubelet" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system-kubelet - rules: - - alert: KubeNodeNotReady - annotations: - description: '{{`{{`}} $labels.node {{`}}`}} has been unready for more than 15 minutes.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodenotready - summary: Node is not ready. - expr: kube_node_status_condition{job="kube-state-metrics",condition="Ready",status="true"} == 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeNodeUnreachable - annotations: - description: '{{`{{`}} $labels.node {{`}}`}} is unreachable and some workloads may be rescheduled.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodeunreachable - summary: Node is unreachable. - expr: (kube_node_spec_taint{job="kube-state-metrics",key="node.kubernetes.io/unreachable",effect="NoSchedule"} unless ignoring(key,value) kube_node_spec_taint{job="kube-state-metrics",key=~"ToBeDeletedByClusterAutoscaler|cloud.google.com/impending-node-termination|aws-node-termination-handler/spot-itn"}) == 1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletTooManyPods - annotations: - description: Kubelet '{{`{{`}} $labels.node {{`}}`}}' is running at {{`{{`}} $value | humanizePercentage {{`}}`}} of its Pod capacity. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubelettoomanypods - summary: Kubelet is running at capacity. - expr: |- - count by(node) ( - (kube_pod_status_phase{job="kube-state-metrics",phase="Running"} == 1) * on(instance,pod,namespace,cluster) group_left(node) topk by(instance,pod,namespace,cluster) (1, kube_pod_info{job="kube-state-metrics"}) - ) - / - max by(node) ( - kube_node_status_capacity_pods{job="kube-state-metrics"} != 1 - ) > 0.95 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeNodeReadinessFlapping - annotations: - description: The readiness status of node {{`{{`}} $labels.node {{`}}`}} has changed {{`{{`}} $value {{`}}`}} times in the last 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodereadinessflapping - summary: Node readiness status is flapping. - expr: sum(changes(kube_node_status_condition{status="true",condition="Ready"}[15m])) by (node) > 2 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletPlegDurationHigh - annotations: - description: The Kubelet Pod Lifecycle Event Generator has a 99th percentile duration of {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletplegdurationhigh - summary: Kubelet Pod Lifecycle Event Generator is taking too long to relist. - expr: node_quantile:kubelet_pleg_relist_duration_seconds:histogram_quantile{quantile="0.99"} >= 10 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletPodStartUpLatencyHigh - annotations: - description: Kubelet Pod startup 99th percentile latency is {{`{{`}} $value {{`}}`}} seconds on node {{`{{`}} $labels.node {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletpodstartuplatencyhigh - summary: Kubelet Pod startup latency is too high. - expr: histogram_quantile(0.99, sum(rate(kubelet_pod_worker_duration_seconds_bucket{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"}[5m])) by (instance, le)) * on(instance) group_left(node) kubelet_node_name{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"} > 60 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletClientCertificateExpiration - annotations: - description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificateexpiration - summary: Kubelet client certificate is about to expire. - expr: kubelet_certificate_manager_client_ttl_seconds < 604800 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletClientCertificateExpiration - annotations: - description: Client certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificateexpiration - summary: Kubelet client certificate is about to expire. - expr: kubelet_certificate_manager_client_ttl_seconds < 86400 - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletServerCertificateExpiration - annotations: - description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificateexpiration - summary: Kubelet server certificate is about to expire. - expr: kubelet_certificate_manager_server_ttl_seconds < 604800 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletServerCertificateExpiration - annotations: - description: Server certificate for Kubelet on node {{`{{`}} $labels.node {{`}}`}} expires in {{`{{`}} $value | humanizeDuration {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificateexpiration - summary: Kubelet server certificate is about to expire. - expr: kubelet_certificate_manager_server_ttl_seconds < 86400 - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletClientCertificateRenewalErrors - annotations: - description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its client certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes). - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletclientcertificaterenewalerrors - summary: Kubelet has failed to renew its client certificate. - expr: increase(kubelet_certificate_manager_client_expiration_renew_errors[5m]) > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletServerCertificateRenewalErrors - annotations: - description: Kubelet on node {{`{{`}} $labels.node {{`}}`}} has failed to renew its server certificate ({{`{{`}} $value | humanize {{`}}`}} errors in the last 5 minutes). - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletservercertificaterenewalerrors - summary: Kubelet has failed to renew its server certificate. - expr: increase(kubelet_server_expiration_renew_errors[5m]) > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- if (include "exporter.kubeletService.enabled" .) }} - - alert: KubeletDown - annotations: - description: Kubelet has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubelet.jobName" . }}", metrics_path="/metrics"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml deleted file mode 100644 index f4f5589f4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system-scheduler.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- /* -Generated from 'kubernetes-system-scheduler' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeScheduler }} -{{- if (include "exporter.kubeScheduler.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system-scheduler" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system-scheduler - rules: -{{- if (include "exporter.kubeScheduler.enabled" .)}} - - alert: KubeSchedulerDown - annotations: - description: KubeScheduler has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeschedulerdown - summary: Target disappeared from Prometheus target discovery. - expr: absent(up{job="{{ include "exporter.kubeScheduler.jobName" . }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system.yaml deleted file mode 100644 index 52230c62e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/kubernetes-system.yaml +++ /dev/null @@ -1,55 +0,0 @@ -{{- /* -Generated from 'kubernetes-system' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system - rules: - - alert: KubeVersionMismatch - annotations: - description: There are {{`{{`}} $value {{`}}`}} different semantic versions of Kubernetes components running. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeversionmismatch - summary: Different semantic versions of Kubernetes components running. - expr: count(count by (gitVersion) (label_replace(kubernetes_build_info{job!~"kube-dns|coredns"},"gitVersion","$1","gitVersion","(v[0-9]*.[0-9]*).*"))) > 1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientErrors - annotations: - description: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} $value | humanizePercentage {{`}}`}} errors.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclienterrors - summary: Kubernetes API server client is experiencing errors. - expr: |- - (sum(rate(rest_client_requests_total{code=~"5.."}[5m])) by (instance, job) - / - sum(rate(rest_client_requests_total[5m])) by (instance, job)) - > 0.01 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.rules.yaml deleted file mode 100644 index ddb737647..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.rules.yaml +++ /dev/null @@ -1,79 +0,0 @@ -{{- /* -Generated from 'node-exporter.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/node-exporter-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-exporter.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node-exporter.rules - rules: - - expr: |- - count without (cpu) ( - count without (mode) ( - node_cpu_seconds_total{job="node-exporter"} - ) - ) - record: instance:node_num_cpu:sum - - expr: |- - 1 - avg without (cpu, mode) ( - rate(node_cpu_seconds_total{job="node-exporter", mode="idle"}[1m]) - ) - record: instance:node_cpu_utilisation:rate1m - - expr: |- - ( - node_load1{job="node-exporter"} - / - instance:node_num_cpu:sum{job="node-exporter"} - ) - record: instance:node_load1_per_cpu:ratio - - expr: |- - 1 - ( - node_memory_MemAvailable_bytes{job="node-exporter"} - / - node_memory_MemTotal_bytes{job="node-exporter"} - ) - record: instance:node_memory_utilisation:ratio - - expr: rate(node_vmstat_pgmajfault{job="node-exporter"}[1m]) - record: instance:node_vmstat_pgmajfault:rate1m - - expr: rate(node_disk_io_time_seconds_total{job="node-exporter", device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"}[1m]) - record: instance_device:node_disk_io_time_seconds:rate1m - - expr: rate(node_disk_io_time_weighted_seconds_total{job="node-exporter", device=~"mmcblk.p.+|nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+|dasd.+"}[1m]) - record: instance_device:node_disk_io_time_weighted_seconds:rate1m - - expr: |- - sum without (device) ( - rate(node_network_receive_bytes_total{job="node-exporter", device!="lo"}[1m]) - ) - record: instance:node_network_receive_bytes_excluding_lo:rate1m - - expr: |- - sum without (device) ( - rate(node_network_transmit_bytes_total{job="node-exporter", device!="lo"}[1m]) - ) - record: instance:node_network_transmit_bytes_excluding_lo:rate1m - - expr: |- - sum without (device) ( - rate(node_network_receive_drop_total{job="node-exporter", device!="lo"}[1m]) - ) - record: instance:node_network_receive_drop_excluding_lo:rate1m - - expr: |- - sum without (device) ( - rate(node_network_transmit_drop_total{job="node-exporter", device!="lo"}[1m]) - ) - record: instance:node_network_transmit_drop_excluding_lo:rate1m -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.yaml deleted file mode 100644 index 3be497c1f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-exporter.yaml +++ /dev/null @@ -1,262 +0,0 @@ -{{- /* -Generated from 'node-exporter' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/node-exporter-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-exporter" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node-exporter - rules: - - alert: NodeFilesystemSpaceFillingUp - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up. - summary: Filesystem is predicted to run out of space within the next 24 hours. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 40 - and - predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemSpaceFillingUp - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left and is filling up fast. - summary: Filesystem is predicted to run out of space within the next 4 hours. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 15 - and - predict_linear(node_filesystem_avail_bytes{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemAlmostOutOfSpace - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. - summary: Filesystem has less than 5% space left. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 5 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemAlmostOutOfSpace - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available space left. - summary: Filesystem has less than 3% space left. - expr: |- - ( - node_filesystem_avail_bytes{job="node-exporter",fstype!=""} / node_filesystem_size_bytes{job="node-exporter",fstype!=""} * 100 < 3 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemFilesFillingUp - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up. - summary: Filesystem is predicted to run out of inodes within the next 24 hours. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 40 - and - predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 24*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemFilesFillingUp - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left and is filling up fast. - summary: Filesystem is predicted to run out of inodes within the next 4 hours. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 20 - and - predict_linear(node_filesystem_files_free{job="node-exporter",fstype!=""}[6h], 4*60*60) < 0 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemAlmostOutOfFiles - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. - summary: Filesystem has less than 5% inodes left. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 5 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeFilesystemAlmostOutOfFiles - annotations: - description: Filesystem on {{`{{`}} $labels.device {{`}}`}} at {{`{{`}} $labels.instance {{`}}`}} has only {{`{{`}} printf "%.2f" $value {{`}}`}}% available inodes left. - summary: Filesystem has less than 3% inodes left. - expr: |- - ( - node_filesystem_files_free{job="node-exporter",fstype!=""} / node_filesystem_files{job="node-exporter",fstype!=""} * 100 < 3 - and - node_filesystem_readonly{job="node-exporter",fstype!=""} == 0 - ) - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeNetworkReceiveErrs - annotations: - description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} receive errors in the last two minutes.' - summary: Network interface is reporting many receive errors. - expr: rate(node_network_receive_errs_total[2m]) / rate(node_network_receive_packets_total[2m]) > 0.01 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeNetworkTransmitErrs - annotations: - description: '{{`{{`}} $labels.instance {{`}}`}} interface {{`{{`}} $labels.device {{`}}`}} has encountered {{`{{`}} printf "%.0f" $value {{`}}`}} transmit errors in the last two minutes.' - summary: Network interface is reporting many transmit errors. - expr: rate(node_network_transmit_errs_total[2m]) / rate(node_network_transmit_packets_total[2m]) > 0.01 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeHighNumberConntrackEntriesUsed - annotations: - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of conntrack entries are used.' - summary: Number of conntrack are getting close to the limit. - expr: (node_nf_conntrack_entries / node_nf_conntrack_entries_limit) > 0.75 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeTextFileCollectorScrapeError - annotations: - description: Node Exporter text file collector failed to scrape. - summary: Node Exporter text file collector failed to scrape. - expr: node_textfile_scrape_error{job="node-exporter"} == 1 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeClockSkewDetected - annotations: - message: Clock on {{`{{`}} $labels.instance {{`}}`}} is out of sync by more than 300s. Ensure NTP is configured correctly on this host. - summary: Clock skew detected. - expr: |- - ( - node_timex_offset_seconds > 0.05 - and - deriv(node_timex_offset_seconds[5m]) >= 0 - ) - or - ( - node_timex_offset_seconds < -0.05 - and - deriv(node_timex_offset_seconds[5m]) <= 0 - ) - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeClockNotSynchronising - annotations: - message: Clock on {{`{{`}} $labels.instance {{`}}`}} is not synchronising. Ensure NTP is configured on this host. - summary: Clock not synchronising. - expr: |- - min_over_time(node_timex_sync_status[5m]) == 0 - and - node_timex_maxerror_seconds >= 16 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeRAIDDegraded - annotations: - description: RAID array '{{`{{`}} $labels.device {{`}}`}}' on {{`{{`}} $labels.instance {{`}}`}} is in degraded state due to one or more disks failures. Number of spare drives is insufficient to fix issue automatically. - summary: RAID Array is degraded - expr: node_md_disks_required - ignoring (state) (node_md_disks{state="active"}) > 0 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeRAIDDiskFailure - annotations: - description: At least one device in RAID array on {{`{{`}} $labels.instance {{`}}`}} failed. Array '{{`{{`}} $labels.device {{`}}`}}' needs attention and possibly a disk swap. - summary: Failed device in RAID array - expr: node_md_disks{state="fail"} > 0 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-network.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-network.yaml deleted file mode 100644 index 9a6955ae9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node-network.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- /* -Generated from 'node-network' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.network }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-network" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node-network - rules: - - alert: NodeNetworkInterfaceFlapping - annotations: - message: Network interface "{{`{{`}} $labels.device {{`}}`}}" changing it's up status often on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}" - expr: changes(node_network_up{job="node-exporter",device!~"veth.+"}[2m]) > 2 - for: 2m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node.rules.yaml deleted file mode 100644 index c841e6f6e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/node.rules.yaml +++ /dev/null @@ -1,51 +0,0 @@ -{{- /* -Generated from 'node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/kubernetes-prometheusRule.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node.rules - rules: - - expr: |- - topk by(namespace, pod) (1, - max by (node, namespace, pod) ( - label_replace(kube_pod_info{job="kube-state-metrics",node!=""}, "pod", "$1", "pod", "(.*)") - )) - record: 'node_namespace_pod:kube_pod_info:' - - expr: |- - count by (cluster, node) (sum by (node, cpu) ( - node_cpu_seconds_total{job="node-exporter"} - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - )) - record: node:node_num_cpu:sum - - expr: |- - sum( - node_memory_MemAvailable_bytes{job="node-exporter"} or - ( - node_memory_Buffers_bytes{job="node-exporter"} + - node_memory_Cached_bytes{job="node-exporter"} + - node_memory_MemFree_bytes{job="node-exporter"} + - node_memory_Slab_bytes{job="node-exporter"} - ) - ) by (cluster) - record: :node_memory_MemAvailable_bytes:sum -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus-operator.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus-operator.yaml deleted file mode 100644 index d1c1f6545..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus-operator.yaml +++ /dev/null @@ -1,113 +0,0 @@ -{{- /* -Generated from 'prometheus-operator' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheusOperator }} -{{- $operatorJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "operator" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus-operator" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: prometheus-operator - rules: - - alert: PrometheusOperatorListErrors - annotations: - description: Errors while performing List operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorlisterrors - summary: Errors while performing list operations in controller. - expr: (sum by (controller,namespace) (rate(prometheus_operator_list_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m])) / sum by (controller,namespace) (rate(prometheus_operator_list_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m]))) > 0.4 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorWatchErrors - annotations: - description: Errors while performing watch operations in controller {{`{{`}}$labels.controller{{`}}`}} in {{`{{`}}$labels.namespace{{`}}`}} namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorwatcherrors - summary: Errors while performing watch operations in controller. - expr: (sum by (controller,namespace) (rate(prometheus_operator_watch_operations_failed_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m])) / sum by (controller,namespace) (rate(prometheus_operator_watch_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[10m]))) > 0.4 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorSyncFailed - annotations: - description: Controller {{`{{`}} $labels.controller {{`}}`}} in {{`{{`}} $labels.namespace {{`}}`}} namespace fails to reconcile {{`{{`}} $value {{`}}`}} objects. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorsyncfailed - summary: Last controller reconciliation failed - expr: min_over_time(prometheus_operator_syncs{status="failed",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorReconcileErrors - annotations: - description: '{{`{{`}} $value | humanizePercentage {{`}}`}} of reconciling operations failed for {{`{{`}} $labels.controller {{`}}`}} controller in {{`{{`}} $labels.namespace {{`}}`}} namespace.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorreconcileerrors - summary: Errors while reconciling controller. - expr: (sum by (controller,namespace) (rate(prometheus_operator_reconcile_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) / (sum by (controller,namespace) (rate(prometheus_operator_reconcile_operations_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]))) > 0.1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorNodeLookupErrors - annotations: - description: Errors while reconciling Prometheus in {{`{{`}} $labels.namespace {{`}}`}} Namespace. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatornodelookuperrors - summary: Errors while reconciling Prometheus. - expr: rate(prometheus_operator_node_address_lookup_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0.1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorNotReady - annotations: - description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace isn't ready to reconcile {{`{{`}} $labels.controller {{`}}`}} resources. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatornotready - summary: Prometheus operator not ready - expr: min by(namespace, controller) (max_over_time(prometheus_operator_ready{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) == 0) - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorRejectedResources - annotations: - description: Prometheus operator in {{`{{`}} $labels.namespace {{`}}`}} namespace rejected {{`{{`}} printf "%0.0f" $value {{`}}`}} {{`{{`}} $labels.controller {{`}}`}}/{{`{{`}} $labels.resource {{`}}`}} resources. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatorrejectedresources - summary: Resources rejected by Prometheus operator - expr: min_over_time(prometheus_operator_managed_resources{state="rejected",job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus.yaml deleted file mode 100644 index c9c805eea..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules-1.14/prometheus.yaml +++ /dev/null @@ -1,258 +0,0 @@ -{{- /* -Generated from 'prometheus' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/master/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.14.0-0" $kubeTargetVersion) (semverCompare "<9.9.9-9" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheus }} -{{- $prometheusJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: prometheus - rules: - - alert: PrometheusBadConfig - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to reload its configuration. - summary: Failed Prometheus configuration reload. - expr: |- - # Without max_over_time, failed scrapes could create false negatives, see - # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. - max_over_time(prometheus_config_last_reload_successful{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) == 0 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotificationQueueRunningFull - annotations: - description: Alert notification queue of Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is running full. - summary: Prometheus alert notification queue predicted to run full in less than 30m. - expr: |- - # Without min_over_time, failed scrapes could create false negatives, see - # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. - ( - predict_linear(prometheus_notifications_queue_length{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m], 60 * 30) - > - min_over_time(prometheus_notifications_queue_capacity{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusErrorSendingAlertsToSomeAlertmanagers - annotations: - description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.alertmanager{{`}}`}}.' - summary: Prometheus has encountered more than 1% errors sending alerts to a specific Alertmanager. - expr: |- - ( - rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - / - rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - * 100 - > 1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusErrorSendingAlertsToAnyAlertmanager - annotations: - description: '{{`{{`}} printf "%.1f" $value {{`}}`}}% minimum errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} to any Alertmanager.' - summary: Prometheus encounters more than 3% errors sending alerts to any Alertmanager. - expr: |- - min without(alertmanager) ( - rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - / - rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - * 100 - > 3 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotConnectedToAlertmanagers - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not connected to any Alertmanagers. - summary: Prometheus is not connected to any Alertmanagers. - expr: |- - # Without max_over_time, failed scrapes could create false negatives, see - # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. - max_over_time(prometheus_notifications_alertmanagers_discovered{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) < 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTSDBReloadsFailing - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} reload failures over the last 3h. - summary: Prometheus has issues reloading blocks from disk. - expr: increase(prometheus_tsdb_reloads_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 - for: 4h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTSDBCompactionsFailing - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has detected {{`{{`}}$value | humanize{{`}}`}} compaction failures over the last 3h. - summary: Prometheus has issues compacting blocks. - expr: increase(prometheus_tsdb_compactions_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[3h]) > 0 - for: 4h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotIngestingSamples - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is not ingesting samples. - summary: Prometheus is not ingesting samples. - expr: rate(prometheus_tsdb_head_samples_appended_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) <= 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusDuplicateTimestamps - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with different values but duplicated timestamp. - summary: Prometheus is dropping samples with duplicate timestamps. - expr: rate(prometheus_target_scrapes_sample_duplicate_timestamp_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOutOfOrderTimestamps - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} is dropping {{`{{`}} printf "%.4g" $value {{`}}`}} samples/s with timestamps arriving out of order. - summary: Prometheus drops samples with out-of-order timestamps. - expr: rate(prometheus_target_scrapes_sample_out_of_order_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusRemoteStorageFailures - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} failed to send {{`{{`}} printf "%.1f" $value {{`}}`}}% of the samples to {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}} - summary: Prometheus fails to send samples to remote storage. - expr: |- - ( - rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - / - ( - rate(prometheus_remote_storage_failed_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - + - rate(prometheus_remote_storage_succeeded_samples_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - ) - * 100 - > 1 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusRemoteWriteBehind - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write is {{`{{`}} printf "%.1f" $value {{`}}`}}s behind for {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}. - summary: Prometheus remote write is behind. - expr: |- - # Without max_over_time, failed scrapes could create false negatives, see - # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. - ( - max_over_time(prometheus_remote_storage_highest_timestamp_in_seconds{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - - on(job, instance) group_right - max_over_time(prometheus_remote_storage_queue_highest_sent_timestamp_seconds{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - > 120 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusRemoteWriteDesiredShards - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} remote write desired shards calculation wants to run {{`{{`}} $value {{`}}`}} shards for queue {{`{{`}} $labels.remote_name{{`}}`}}:{{`{{`}} $labels.url {{`}}`}}, which is more than the max of {{`{{`}} printf `prometheus_remote_storage_shards_max{instance="%s",job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}` $labels.instance | query | first | value {{`}}`}}. - summary: Prometheus remote write desired shards calculation wants to run more than configured max shards. - expr: |- - # Without max_over_time, failed scrapes could create false negatives, see - # https://www.robustperception.io/alerting-on-gauges-in-prometheus-2-0 for details. - ( - max_over_time(prometheus_remote_storage_shards_desired{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - > - max_over_time(prometheus_remote_storage_shards_max{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) - ) - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusRuleFailures - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has failed to evaluate {{`{{`}} printf "%.0f" $value {{`}}`}} rules in the last 5m. - summary: Prometheus is failing rule evaluations. - expr: increase(prometheus_rule_evaluation_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusMissingRuleEvaluations - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has missed {{`{{`}} printf "%.0f" $value {{`}}`}} rule group evaluations in the last 5m. - summary: Prometheus is missing rule evaluations due to slow rule group evaluation. - expr: increase(prometheus_rule_group_iterations_missed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTargetLimitHit - annotations: - description: Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has dropped {{`{{`}} printf "%.0f" $value {{`}}`}} targets because the number of targets exceeded the configured target_limit. - summary: Prometheus has dropped targets because some scrape configs have exceeded the targets limit. - expr: increase(prometheus_target_scrape_pool_exceeded_target_limit_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/alertmanager.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/alertmanager.rules.yaml deleted file mode 100644 index 71159849c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/alertmanager.rules.yaml +++ /dev/null @@ -1,63 +0,0 @@ -{{- /* -Generated from 'alertmanager.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.alertmanager }} -{{- $operatorJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "operator" }} -{{- $alertmanagerJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: alertmanager.rules - rules: - - alert: AlertmanagerConfigInconsistent - annotations: - message: The configuration of the instances of the Alertmanager cluster `{{`{{`}}$labels.service{{`}}`}}` are out of sync. - expr: count_values("config_hash", alertmanager_config_hash{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}) BY (service) / ON(service) GROUP_LEFT() label_replace(max(prometheus_operator_spec_replicas{job="{{ $operatorJob }}",namespace="{{ $namespace }}",controller="alertmanager"}) by (name, job, namespace, controller), "service", "$1", "name", "(.*)") != 1 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AlertmanagerFailedReload - annotations: - message: Reloading Alertmanager's configuration has failed for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}}. - expr: alertmanager_config_last_reload_successful{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} == 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: AlertmanagerMembersInconsistent - annotations: - message: Alertmanager has not found all other members of the cluster. - expr: |- - alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} - != on (service) GROUP_LEFT() - count by (service) (alertmanager_cluster_members{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"}) - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/etcd.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/etcd.yaml deleted file mode 100644 index 048410bc3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/etcd.yaml +++ /dev/null @@ -1,181 +0,0 @@ -{{- /* -Generated from 'etcd' group from https://raw.githubusercontent.com/etcd-io/website/master/content/docs/v3.4.0/op-guide/etcd3_alert.rules.yml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.etcd }} -{{- if (include "exporter.kubeEtcd.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "etcd" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: etcd - rules: - - alert: etcdInsufficientMembers - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": insufficient members ({{`{{`}} $value {{`}}`}}).' - expr: sum(up{job=~".*etcd.*"} == bool 1) by (job) < ((count(up{job=~".*etcd.*"}) by (job) + 1) / 2) - for: 3m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdNoLeader - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member {{`{{`}} $labels.instance {{`}}`}} has no leader.' - expr: etcd_server_has_leader{job=~".*etcd.*"} == 0 - for: 1m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfLeaderChanges - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": instance {{`{{`}} $labels.instance {{`}}`}} has seen {{`{{`}} $value {{`}}`}} leader changes within the last hour.' - expr: rate(etcd_server_leader_changes_seen_total{job=~".*etcd.*"}[15m]) > 3 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) - > 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedGRPCRequests - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.grpc_method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - 100 * sum(rate(grpc_server_handled_total{job=~".*etcd.*", grpc_code!="OK"}[5m])) BY (job, instance, grpc_service, grpc_method) - / - sum(rate(grpc_server_handled_total{job=~".*etcd.*"}[5m])) BY (job, instance, grpc_service, grpc_method) - > 5 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdGRPCRequestsSlow - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": gRPC requests to {{`{{`}} $labels.grpc_method {{`}}`}} are taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, sum(rate(grpc_server_handling_seconds_bucket{job=~".*etcd.*", grpc_type="unary"}[5m])) by (job, instance, grpc_service, grpc_method, le)) - > 0.15 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdMemberCommunicationSlow - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": member communication with {{`{{`}} $labels.To {{`}}`}} is taking {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_network_peer_round_trip_time_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.15 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedProposals - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": {{`{{`}} $value {{`}}`}} proposal failures within the last hour on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: rate(etcd_server_proposals_failed_total{job=~".*etcd.*"}[15m]) > 5 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighFsyncDurations - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile fync durations are {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_disk_wal_fsync_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.5 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighCommitDurations - annotations: - message: 'etcd cluster "{{`{{`}} $labels.job {{`}}`}}": 99th percentile commit durations {{`{{`}} $value {{`}}`}}s on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - histogram_quantile(0.99, rate(etcd_disk_backend_commit_duration_seconds_bucket{job=~".*etcd.*"}[5m])) - > 0.25 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedHTTPRequests - annotations: - message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}' - expr: |- - sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) - BY (method) > 0.01 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHighNumberOfFailedHTTPRequests - annotations: - message: '{{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.method {{`}}`}} failed on etcd instance {{`{{`}} $labels.instance {{`}}`}}.' - expr: |- - sum(rate(etcd_http_failed_total{job=~".*etcd.*", code!="404"}[5m])) BY (method) / sum(rate(etcd_http_received_total{job=~".*etcd.*"}[5m])) - BY (method) > 0.05 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: etcdHTTPRequestsSlow - annotations: - message: etcd instance {{`{{`}} $labels.instance {{`}}`}} HTTP requests to {{`{{`}} $labels.method {{`}}`}} are slow. - expr: |- - histogram_quantile(0.99, rate(etcd_http_successful_duration_seconds_bucket[5m])) - > 0.15 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/general.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/general.rules.yaml deleted file mode 100644 index cde6feb5c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/general.rules.yaml +++ /dev/null @@ -1,56 +0,0 @@ -{{- /* -Generated from 'general.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.general }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "general.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: general.rules - rules: - - alert: TargetDown - annotations: - message: '{{`{{`}} $value {{`}}`}}% of the {{`{{`}} $labels.job {{`}}`}} targets are down.' - expr: 100 * (count(up == 0) BY (job) / count(up) BY (job)) > 10 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: Watchdog - annotations: - message: 'This is an alert meant to ensure that the entire alerting pipeline is functional. - - This alert is always firing, therefore it should always be firing in Alertmanager - - and always fire against a receiver. There are integrations with various notification - - mechanisms that send a notification when this alert is not firing. For example the - - "DeadMansSnitch" integration in PagerDuty. - - ' - expr: vector(1) - labels: - severity: none -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/k8s.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/k8s.rules.yaml deleted file mode 100644 index b29956aaf..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/k8s.rules.yaml +++ /dev/null @@ -1,83 +0,0 @@ -{{- /* -Generated from 'k8s.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.k8s }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "k8s.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: k8s.rules - rules: - - expr: sum(rate(container_cpu_usage_seconds_total{job="{{ include "exporter.kubelet.jobName" . }}", image!="", container_name!=""}[5m])) by (namespace) - record: namespace:container_cpu_usage_seconds_total:sum_rate - - expr: sum(container_memory_usage_bytes{job="{{ include "exporter.kubelet.jobName" . }}", image!="", container_name!=""}) by (namespace) - record: namespace:container_memory_usage_bytes:sum - - expr: |- - sum by (namespace, pod_name, container_name) ( - rate(container_cpu_usage_seconds_total{job="{{ include "exporter.kubelet.jobName" . }}", image!="", container_name!=""}[5m]) - ) - record: namespace_pod_name_container_name:container_cpu_usage_seconds_total:sum_rate - - expr: |- - sum by(namespace) ( - kube_pod_container_resource_requests_memory_bytes{job="kube-state-metrics"} - * on (endpoint, instance, job, namespace, pod, service) - group_left(phase) (kube_pod_status_phase{phase=~"^(Pending|Running)$"} == 1) - ) - record: namespace_name:kube_pod_container_resource_requests_memory_bytes:sum - - expr: |- - sum by (namespace) ( - kube_pod_container_resource_requests_cpu_cores{job="kube-state-metrics"} - * on (endpoint, instance, job, namespace, pod, service) - group_left(phase) (kube_pod_status_phase{phase=~"^(Pending|Running)$"} == 1) - ) - record: namespace_name:kube_pod_container_resource_requests_cpu_cores:sum - - expr: |- - sum( - label_replace( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="ReplicaSet"}, - "replicaset", "$1", "owner_name", "(.*)" - ) * on(replicaset, namespace) group_left(owner_name) kube_replicaset_owner{job="kube-state-metrics"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) by (namespace, workload, pod) - labels: - workload_type: deployment - record: mixin_pod_workload - - expr: |- - sum( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="DaemonSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) by (namespace, workload, pod) - labels: - workload_type: daemonset - record: mixin_pod_workload - - expr: |- - sum( - label_replace( - kube_pod_owner{job="kube-state-metrics", owner_kind="StatefulSet"}, - "workload", "$1", "owner_name", "(.*)" - ) - ) by (namespace, workload, pod) - labels: - workload_type: statefulset - record: mixin_pod_workload -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-apiserver.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-apiserver.rules.yaml deleted file mode 100644 index e3a929692..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-apiserver.rules.yaml +++ /dev/null @@ -1,39 +0,0 @@ -{{- /* -Generated from 'kube-apiserver.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.kubeApiServer.enabled .Values.defaultRules.rules.kubeApiserver }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-apiserver.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-apiserver.rules - rules: - - expr: histogram_quantile(0.99, sum(rate(apiserver_request_latencies_bucket{job="apiserver"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.99' - record: cluster_quantile:apiserver_request_latencies:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(apiserver_request_latencies_bucket{job="apiserver"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.9' - record: cluster_quantile:apiserver_request_latencies:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(apiserver_request_latencies_bucket{job="apiserver"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.5' - record: cluster_quantile:apiserver_request_latencies:histogram_quantile -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml deleted file mode 100644 index a8d5400cb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-alerting.rules.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-node-alerting.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusNodeAlerting }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-node-alerting.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-prometheus-node-alerting.rules - rules: - - alert: NodeDiskRunningFull - annotations: - message: Device {{`{{`}} $labels.device {{`}}`}} of node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} will be full within the next 24 hours. - expr: '(node:node_filesystem_usage: > 0.85) and (predict_linear(node:node_filesystem_avail:[6h], 3600 * 24) < 0)' - for: 30m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeDiskRunningFull - annotations: - message: Device {{`{{`}} $labels.device {{`}}`}} of node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} will be full within the next 2 hours. - expr: '(node:node_filesystem_usage: > 0.85) and (predict_linear(node:node_filesystem_avail:[30m], 3600 * 2) < 0)' - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml deleted file mode 100644 index 87f072fd0..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-prometheus-node-recording.rules.yaml +++ /dev/null @@ -1,41 +0,0 @@ -{{- /* -Generated from 'kube-prometheus-node-recording.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubePrometheusNodeRecording }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-prometheus-node-recording.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-prometheus-node-recording.rules - rules: - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait"}[3m])) BY (instance) - record: instance:node_cpu:rate:sum - - expr: sum((node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"})) BY (instance) - record: instance:node_filesystem_usage:sum - - expr: sum(rate(node_network_receive_bytes_total[3m])) BY (instance) - record: instance:node_network_receive_bytes:rate:sum - - expr: sum(rate(node_network_transmit_bytes_total[3m])) BY (instance) - record: instance:node_network_transmit_bytes:rate:sum - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait"}[5m])) WITHOUT (cpu, mode) / ON(instance) GROUP_LEFT() count(sum(node_cpu_seconds_total) BY (instance, cpu)) BY (instance) - record: instance:node_cpu:ratio - - expr: sum(rate(node_cpu_seconds_total{mode!="idle",mode!="iowait"}[5m])) - record: cluster:node_cpu:sum_rate5m - - expr: cluster:node_cpu_seconds_total:rate5m / count(sum(node_cpu_seconds_total) BY (instance, cpu)) - record: cluster:node_cpu:ratio -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-scheduler.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-scheduler.rules.yaml deleted file mode 100644 index e8de8ed6e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kube-scheduler.rules.yaml +++ /dev/null @@ -1,65 +0,0 @@ -{{- /* -Generated from 'kube-scheduler.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubeScheduler }} -{{- if (include "exporter.kubeScheduler.enabled" .)}} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kube-scheduler.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kube-scheduler.rules - rules: - - expr: histogram_quantile(0.99, sum(rate(scheduler_e2e_scheduling_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_e2e_scheduling_latency:histogram_quantile - - expr: histogram_quantile(0.99, sum(rate(scheduler_scheduling_algorithm_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_scheduling_algorithm_latency:histogram_quantile - - expr: histogram_quantile(0.99, sum(rate(scheduler_binding_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.99' - record: cluster_quantile:scheduler_binding_latency:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_e2e_scheduling_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_e2e_scheduling_latency:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_scheduling_algorithm_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_scheduling_algorithm_latency:histogram_quantile - - expr: histogram_quantile(0.9, sum(rate(scheduler_binding_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.9' - record: cluster_quantile:scheduler_binding_latency:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_e2e_scheduling_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_e2e_scheduling_latency:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_scheduling_algorithm_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_scheduling_algorithm_latency:histogram_quantile - - expr: histogram_quantile(0.5, sum(rate(scheduler_binding_latency_microseconds_bucket{job="{{ include "exporter.kubeScheduler.jobName" . }}"}[5m])) without(instance, pod)) / 1e+06 - labels: - quantile: '0.5' - record: cluster_quantile:scheduler_binding_latency:histogram_quantile -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-absent.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-absent.yaml deleted file mode 100644 index b7a6622e3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-absent.yaml +++ /dev/null @@ -1,159 +0,0 @@ -{{- /* -Generated from 'kubernetes-absent' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesAbsent }} -{{- $operatorJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "operator" }} -{{- $prometheusJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} -{{- $alertmanagerJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "alertmanager" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-absent" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-absent - rules: -{{- if .Values.alertmanager.enabled }} - - alert: AlertmanagerDown - annotations: - message: Alertmanager has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-alertmanagerdown - expr: absent(up{job="{{ $alertmanagerJob }}",namespace="{{ $namespace }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if .Values.kubeDns.enabled }} - - alert: CoreDNSDown - annotations: - message: CoreDNS has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-corednsdown - expr: absent(up{job="kube-dns"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if .Values.kubeApiServer.enabled }} - - alert: KubeAPIDown - annotations: - message: KubeAPI has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapidown - expr: absent(up{job="apiserver"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if (include "exporter.kubeControllerManager.enabled" .)}} - - alert: KubeControllerManagerDown - annotations: - message: KubeControllerManager has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecontrollermanagerdown - expr: absent(up{job="{{ include "exporter.kubeControllerManager.jobName" . }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if (include "exporter.kubeScheduler.enabled" .)}} - - alert: KubeSchedulerDown - annotations: - message: KubeScheduler has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeschedulerdown - expr: absent(up{job="{{ include "exporter.kubeScheduler.jobName" . }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if .Values.kubeStateMetrics.enabled }} - - alert: KubeStateMetricsDown - annotations: - message: KubeStateMetrics has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatemetricsdown - expr: absent(up{job="kube-state-metrics"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if (include "exporter.kubeletService.enabled" .) }} - - alert: KubeletDown - annotations: - message: Kubelet has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeletdown - expr: absent(up{job="{{ include "exporter.kubelet.jobName" . }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- if .Values.nodeExporter.enabled }} - - alert: NodeExporterDown - annotations: - message: NodeExporter has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-nodeexporterdown - expr: absent(up{job="node-exporter"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} - - alert: PrometheusDown - annotations: - message: Prometheus has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusdown - expr: absent(up{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- if .Values.prometheusOperator.enabled }} - - alert: PrometheusOperatorDown - annotations: - message: PrometheusOperator has disappeared from Prometheus target discovery. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-prometheusoperatordown - expr: absent(up{job="{{ $operatorJob }}",namespace="{{ $namespace }}"} == 1) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-apps.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-apps.yaml deleted file mode 100644 index e7a41ca2a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-apps.yaml +++ /dev/null @@ -1,200 +0,0 @@ -{{- /* -Generated from 'kubernetes-apps' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesApps }} -{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-apps" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-apps - rules: - - alert: KubePodCrashLooping - annotations: - message: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} ({{`{{`}} $labels.container {{`}}`}}) is restarting {{`{{`}} printf "%.2f" $value {{`}}`}} times / 5 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodcrashlooping - expr: rate(kube_pod_container_status_restarts_total{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"}[15m]) * 60 * 5 > 0 - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePodNotReady - annotations: - message: Pod {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}} has been in a non-ready state for longer than an hour. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepodnotready - expr: sum by (namespace, pod) (kube_pod_status_phase{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}", phase=~"Pending|Unknown"}) > 0 - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDeploymentGenerationMismatch - annotations: - message: Deployment generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} does not match, this indicates that the Deployment has failed but has not been rolled back. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentgenerationmismatch - expr: |- - kube_deployment_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_deployment_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDeploymentReplicasMismatch - annotations: - message: Deployment {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.deployment {{`}}`}} has not matched the expected number of replicas for longer than an hour. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedeploymentreplicasmismatch - expr: |- - kube_deployment_spec_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_deployment_status_replicas_available{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 1h - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetReplicasMismatch - annotations: - message: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} has not matched the expected number of replicas for longer than 15 minutes. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetreplicasmismatch - expr: |- - kube_statefulset_status_replicas_ready{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetGenerationMismatch - annotations: - message: StatefulSet generation for {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} does not match, this indicates that the StatefulSet has failed but has not been rolled back. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetgenerationmismatch - expr: |- - kube_statefulset_status_observed_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_metadata_generation{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeStatefulSetUpdateNotRolledOut - annotations: - message: StatefulSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.statefulset {{`}}`}} update has not been rolled out. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubestatefulsetupdatenotrolledout - expr: |- - max without (revision) ( - kube_statefulset_status_current_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - unless - kube_statefulset_status_update_revision{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) - * - ( - kube_statefulset_replicas{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - != - kube_statefulset_status_replicas_updated{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - ) - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetRolloutStuck - annotations: - message: Only {{`{{`}} $value {{`}}`}}% of the desired Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are scheduled and ready. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetrolloutstuck - expr: |- - kube_daemonset_status_number_ready{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - / - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} * 100 < 100 - for: 15m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetNotScheduled - annotations: - message: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are not scheduled.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetnotscheduled - expr: |- - kube_daemonset_status_desired_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - - - kube_daemonset_status_current_number_scheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeDaemonSetMisScheduled - annotations: - message: '{{`{{`}} $value {{`}}`}} Pods of DaemonSet {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.daemonset {{`}}`}} are running where they are not supposed to run.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubedaemonsetmisscheduled - expr: kube_daemonset_status_number_misscheduled{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeCronJobRunning - annotations: - message: CronJob {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.cronjob {{`}}`}} is taking more than 1h to complete. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecronjobrunning - expr: time() - kube_cronjob_next_schedule_time{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 3600 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeJobCompletion - annotations: - message: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} is taking more than one hour to complete. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobcompletion - expr: kube_job_spec_completions{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} - kube_job_status_succeeded{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeJobFailed - annotations: - message: Job {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.job_name {{`}}`}} failed to complete. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubejobfailed - expr: kube_job_status_failed{job="kube-state-metrics", namespace=~"{{ $targetNamespace }}"} > 0 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-resources.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-resources.yaml deleted file mode 100644 index b34b442f3..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-resources.yaml +++ /dev/null @@ -1,121 +0,0 @@ -{{- /* -Generated from 'kubernetes-resources' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesResources }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-resources" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-resources - rules: - - alert: KubeCPUOvercommit - annotations: - message: Cluster has overcommitted CPU resource requests for Pods and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuovercommit - expr: |- - sum(namespace_name:kube_pod_container_resource_requests_cpu_cores:sum) - / - sum(node:node_num_cpu:sum) - > - (count(node:node_num_cpu:sum)-1) / count(node:node_num_cpu:sum) - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeMemOvercommit - annotations: - message: Cluster has overcommitted memory resource requests for Pods and cannot tolerate node failure. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememovercommit - expr: |- - sum(namespace_name:kube_pod_container_resource_requests_memory_bytes:sum) - / - sum(node_memory_MemTotal_bytes) - > - (count(node:node_num_cpu:sum)-1) - / - count(node:node_num_cpu:sum) - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeCPUOvercommit - annotations: - message: Cluster has overcommitted CPU resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubecpuovercommit - expr: |- - sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="cpu"}) - / - sum(node:node_num_cpu:sum) - > 1.5 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeMemOvercommit - annotations: - message: Cluster has overcommitted memory resource requests for Namespaces. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubememovercommit - expr: |- - sum(kube_resourcequota{job="kube-state-metrics", type="hard", resource="memory"}) - / - sum(node_memory_MemTotal_bytes{job="node-exporter"}) - > 1.5 - for: 5m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeQuotaExceeded - annotations: - message: Namespace {{`{{`}} $labels.namespace {{`}}`}} is using {{`{{`}} printf "%0.0f" $value {{`}}`}}% of its {{`{{`}} $labels.resource {{`}}`}} quota. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubequotaexceeded - expr: |- - 100 * kube_resourcequota{job="kube-state-metrics", type="used"} - / ignoring(instance, job, type) - (kube_resourcequota{job="kube-state-metrics", type="hard"} > 0) - > 90 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: CPUThrottlingHigh - annotations: - message: '{{`{{`}} printf "%0.0f" $value {{`}}`}}% throttling of CPU in namespace {{`{{`}} $labels.namespace {{`}}`}} for container {{`{{`}} $labels.container_name {{`}}`}} in pod {{`{{`}} $labels.pod_name {{`}}`}}.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-cputhrottlinghigh - expr: |- - 100 * sum(increase(container_cpu_cfs_throttled_periods_total{container_name!="", }[5m])) by (container_name, pod_name, namespace) - / - sum(increase(container_cpu_cfs_periods_total{}[5m])) by (container_name, pod_name, namespace) - > 25 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-storage.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-storage.yaml deleted file mode 100644 index f654eb78c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-storage.yaml +++ /dev/null @@ -1,72 +0,0 @@ -{{- /* -Generated from 'kubernetes-storage' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesStorage }} -{{- $targetNamespace := .Values.defaultRules.appNamespacesTarget }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-storage" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-storage - rules: - - alert: KubePersistentVolumeUsageCritical - annotations: - message: The PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is only {{`{{`}} printf "%0.2f" $value {{`}}`}}% free. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumeusagecritical - expr: |- - 100 * kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}"} - / - kubelet_volume_stats_capacity_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}"} - < 3 - for: 1m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePersistentVolumeFullInFourDays - annotations: - message: Based on recent sampling, the PersistentVolume claimed by {{`{{`}} $labels.persistentvolumeclaim {{`}}`}} in Namespace {{`{{`}} $labels.namespace {{`}}`}} is expected to fill up within four days. Currently {{`{{`}} printf "%0.2f" $value {{`}}`}}% is available. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumefullinfourdays - expr: |- - 100 * ( - kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}"} - / - kubelet_volume_stats_capacity_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}"} - ) < 15 - and - predict_linear(kubelet_volume_stats_available_bytes{job="{{ include "exporter.kubelet.jobName" . }}", namespace=~"{{ $targetNamespace }}"}[6h], 4 * 24 * 3600) < 0 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubePersistentVolumeErrors - annotations: - message: The persistent volume {{`{{`}} $labels.persistentvolume {{`}}`}} has status {{`{{`}} $labels.phase {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubepersistentvolumeerrors - expr: kube_persistentvolume_status_phase{phase=~"Failed|Pending",job="kube-state-metrics"} > 0 - for: 5m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-system.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-system.yaml deleted file mode 100644 index 34cdd7c01..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/kubernetes-system.yaml +++ /dev/null @@ -1,184 +0,0 @@ -{{- /* -Generated from 'kubernetes-system' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.kubernetesSystem }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "kubernetes-system" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: kubernetes-system - rules: - - alert: KubeNodeNotReady - annotations: - message: '{{`{{`}} $labels.node {{`}}`}} has been unready for more than an hour.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubenodenotready - expr: kube_node_status_condition{job="kube-state-metrics",condition="Ready",status="true"} == 0 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeVersionMismatch - annotations: - message: There are {{`{{`}} $value {{`}}`}} different semantic versions of Kubernetes components running. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeversionmismatch - expr: count(count by (gitVersion) (label_replace(kubernetes_build_info{job!~"kube-dns|coredns"},"gitVersion","$1","gitVersion","(v[0-9]*.[0-9]*.[0-9]*).*"))) > 1 - for: 1h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientErrors - annotations: - message: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} printf "%0.0f" $value {{`}}`}}% errors.' - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclienterrors - expr: |- - (sum(rate(rest_client_requests_total{code=~"5.."}[5m])) by (instance, job) - / - sum(rate(rest_client_requests_total[5m])) by (instance, job)) - * 100 > 1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientErrors - annotations: - message: Kubernetes API server client '{{`{{`}} $labels.job {{`}}`}}/{{`{{`}} $labels.instance {{`}}`}}' is experiencing {{`{{`}} printf "%0.0f" $value {{`}}`}} errors / second. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclienterrors - expr: sum(rate(ksm_scrape_error_total{job="kube-state-metrics"}[5m])) by (instance, job) > 0.1 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeletTooManyPods - annotations: - message: Kubelet {{`{{`}} $labels.instance {{`}}`}} is running {{`{{`}} $value {{`}}`}} Pods, close to the limit of 110. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubelettoomanypods - expr: kubelet_running_pod_count{job="{{ include "exporter.kubelet.jobName" . }}"} > 110 * 0.9 - for: 15m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPILatencyHigh - annotations: - message: The API server has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for {{`{{`}} $labels.verb {{`}}`}} {{`{{`}} $labels.resource {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapilatencyhigh - expr: cluster_quantile:apiserver_request_latencies:histogram_quantile{job="apiserver",quantile="0.99",subresource!="log",verb!~"^(?:LIST|WATCH|WATCHLIST|PROXY|CONNECT)$"} > 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPILatencyHigh - annotations: - message: The API server has a 99th percentile latency of {{`{{`}} $value {{`}}`}} seconds for {{`{{`}} $labels.verb {{`}}`}} {{`{{`}} $labels.resource {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapilatencyhigh - expr: cluster_quantile:apiserver_request_latencies:histogram_quantile{job="apiserver",quantile="0.99",subresource!="log",verb!~"^(?:LIST|WATCH|WATCHLIST|PROXY|CONNECT)$"} > 4 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorsHigh - annotations: - message: API server is returning errors for {{`{{`}} $value {{`}}`}}% of requests. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorshigh - expr: |- - sum(rate(apiserver_request_count{job="apiserver",code=~"^(?:5..)$"}[5m])) - / - sum(rate(apiserver_request_count{job="apiserver"}[5m])) * 100 > 3 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorsHigh - annotations: - message: API server is returning errors for {{`{{`}} $value {{`}}`}}% of requests. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorshigh - expr: |- - sum(rate(apiserver_request_count{job="apiserver",code=~"^(?:5..)$"}[5m])) - / - sum(rate(apiserver_request_count{job="apiserver"}[5m])) * 100 > 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorsHigh - annotations: - message: API server is returning errors for {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.verb {{`}}`}} {{`{{`}} $labels.resource {{`}}`}} {{`{{`}} $labels.subresource {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorshigh - expr: |- - sum(rate(apiserver_request_count{job="apiserver",code=~"^(?:5..)$"}[5m])) by (resource,subresource,verb) - / - sum(rate(apiserver_request_count{job="apiserver"}[5m])) by (resource,subresource,verb) * 100 > 10 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeAPIErrorsHigh - annotations: - message: API server is returning errors for {{`{{`}} $value {{`}}`}}% of requests for {{`{{`}} $labels.verb {{`}}`}} {{`{{`}} $labels.resource {{`}}`}} {{`{{`}} $labels.subresource {{`}}`}}. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeapierrorshigh - expr: |- - sum(rate(apiserver_request_count{job="apiserver",code=~"^(?:5..)$"}[5m])) by (resource,subresource,verb) - / - sum(rate(apiserver_request_count{job="apiserver"}[5m])) by (resource,subresource,verb) * 100 > 5 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientCertificateExpiration - annotations: - message: A client certificate used to authenticate to the apiserver is expiring in less than 7.0 days. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 604800 - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: KubeClientCertificateExpiration - annotations: - message: A client certificate used to authenticate to the apiserver is expiring in less than 24.0 hours. - runbook_url: {{ .Values.defaultRules.runbookUrl }}alert-name-kubeclientcertificateexpiration - expr: apiserver_client_certificate_expiration_seconds_count{job="apiserver"} > 0 and histogram_quantile(0.01, sum by (job, le) (rate(apiserver_client_certificate_expiration_seconds_bucket{job="apiserver"}[5m]))) < 86400 - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-network.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-network.yaml deleted file mode 100644 index c75f1ae07..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-network.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- /* -Generated from 'node-network' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.network }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-network" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node-network - rules: - - alert: NetworkReceiveErrors - annotations: - message: Network interface "{{`{{`}} $labels.device {{`}}`}}" showing receive errors on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}" - expr: rate(node_network_receive_errs_total{job="node-exporter",device!~"veth.+"}[2m]) > 0 - for: 2m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NetworkTransmitErrors - annotations: - message: Network interface "{{`{{`}} $labels.device {{`}}`}}" showing transmit errors on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}" - expr: rate(node_network_transmit_errs_total{job="node-exporter",device!~"veth.+"}[2m]) > 0 - for: 2m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: NodeNetworkInterfaceFlapping - annotations: - message: Network interface "{{`{{`}} $labels.device {{`}}`}}" changing it's up status often on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}" - expr: changes(node_network_up{job="node-exporter",device!~"veth.+"}[2m]) > 2 - for: 2m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-time.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-time.yaml deleted file mode 100644 index b7a2fc92f..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node-time.yaml +++ /dev/null @@ -1,37 +0,0 @@ -{{- /* -Generated from 'node-time' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.time }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node-time" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node-time - rules: - - alert: ClockSkewDetected - annotations: - message: Clock skew detected on node-exporter {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod {{`}}`}}. Ensure NTP is configured correctly on this host. - expr: abs(node_timex_offset_seconds{job="node-exporter"}) > 0.03 - for: 2m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node.rules.yaml deleted file mode 100644 index 2bc7af3a9..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/node.rules.yaml +++ /dev/null @@ -1,202 +0,0 @@ -{{- /* -Generated from 'node.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.node }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "node.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: node.rules - rules: - - expr: sum(min(kube_pod_info) by (node)) - record: ':kube_pod_info_node_count:' - - expr: max(label_replace(kube_pod_info{job="kube-state-metrics"}, "pod", "$1", "pod", "(.*)")) by (node, namespace, pod) - record: 'node_namespace_pod:kube_pod_info:' - - expr: |- - count by (node) (sum by (node, cpu) ( - node_cpu_seconds_total{job="node-exporter"} - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - )) - record: node:node_num_cpu:sum - - expr: 1 - avg(rate(node_cpu_seconds_total{job="node-exporter",mode="idle"}[1m])) - record: :node_cpu_utilisation:avg1m - - expr: |- - 1 - avg by (node) ( - rate(node_cpu_seconds_total{job="node-exporter",mode="idle"}[1m]) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info:) - record: node:node_cpu_utilisation:avg1m - - expr: |- - node:node_cpu_utilisation:avg1m - * - node:node_num_cpu:sum - / - scalar(sum(node:node_num_cpu:sum)) - record: node:cluster_cpu_utilisation:ratio - - expr: |- - sum(node_load1{job="node-exporter"}) - / - sum(node:node_num_cpu:sum) - record: ':node_cpu_saturation_load1:' - - expr: |- - sum by (node) ( - node_load1{job="node-exporter"} - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - / - node:node_num_cpu:sum - record: 'node:node_cpu_saturation_load1:' - - expr: |- - 1 - - sum(node_memory_MemFree_bytes{job="node-exporter"} + node_memory_Cached_bytes{job="node-exporter"} + node_memory_Buffers_bytes{job="node-exporter"}) - / - sum(node_memory_MemTotal_bytes{job="node-exporter"}) - record: ':node_memory_utilisation:' - - expr: sum(node_memory_MemFree_bytes{job="node-exporter"} + node_memory_Cached_bytes{job="node-exporter"} + node_memory_Buffers_bytes{job="node-exporter"}) - record: :node_memory_MemFreeCachedBuffers_bytes:sum - - expr: sum(node_memory_MemTotal_bytes{job="node-exporter"}) - record: :node_memory_MemTotal_bytes:sum - - expr: |- - sum by (node) ( - (node_memory_MemFree_bytes{job="node-exporter"} + node_memory_Cached_bytes{job="node-exporter"} + node_memory_Buffers_bytes{job="node-exporter"}) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_memory_bytes_available:sum - - expr: |- - sum by (node) ( - node_memory_MemTotal_bytes{job="node-exporter"} - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_memory_bytes_total:sum - - expr: |- - (node:node_memory_bytes_total:sum - node:node_memory_bytes_available:sum) - / - node:node_memory_bytes_total:sum - record: node:node_memory_utilisation:ratio - - expr: |- - (node:node_memory_bytes_total:sum - node:node_memory_bytes_available:sum) - / - scalar(sum(node:node_memory_bytes_total:sum)) - record: node:cluster_memory_utilisation:ratio - - expr: |- - 1e3 * sum( - (rate(node_vmstat_pgpgin{job="node-exporter"}[1m]) - + rate(node_vmstat_pgpgout{job="node-exporter"}[1m])) - ) - record: :node_memory_swap_io_bytes:sum_rate - - expr: |- - 1 - - sum by (node) ( - (node_memory_MemFree_bytes{job="node-exporter"} + node_memory_Cached_bytes{job="node-exporter"} + node_memory_Buffers_bytes{job="node-exporter"}) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - / - sum by (node) ( - node_memory_MemTotal_bytes{job="node-exporter"} - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: 'node:node_memory_utilisation:' - - expr: 1 - (node:node_memory_bytes_available:sum / node:node_memory_bytes_total:sum) - record: 'node:node_memory_utilisation_2:' - - expr: |- - 1e3 * sum by (node) ( - (rate(node_vmstat_pgpgin{job="node-exporter"}[1m]) - + rate(node_vmstat_pgpgout{job="node-exporter"}[1m])) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_memory_swap_io_bytes:sum_rate - - expr: avg(irate(node_disk_io_time_seconds_total{job="node-exporter",device=~"nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+"}[1m])) - record: :node_disk_utilisation:avg_irate - - expr: |- - avg by (node) ( - irate(node_disk_io_time_seconds_total{job="node-exporter",device=~"nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+"}[1m]) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_disk_utilisation:avg_irate - - expr: avg(irate(node_disk_io_time_weighted_seconds_total{job="node-exporter",device=~"nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+"}[1m])) - record: :node_disk_saturation:avg_irate - - expr: |- - avg by (node) ( - irate(node_disk_io_time_weighted_seconds_total{job="node-exporter",device=~"nvme.+|rbd.+|sd.+|vd.+|xvd.+|dm-.+"}[1m]) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_disk_saturation:avg_irate - - expr: |- - max by (instance, namespace, pod, device) ((node_filesystem_size_bytes{fstype=~"ext[234]|btrfs|xfs|zfs"} - - node_filesystem_avail_bytes{fstype=~"ext[234]|btrfs|xfs|zfs"}) - / node_filesystem_size_bytes{fstype=~"ext[234]|btrfs|xfs|zfs"}) - record: 'node:node_filesystem_usage:' - - expr: max by (instance, namespace, pod, device) (node_filesystem_avail_bytes{fstype=~"ext[234]|btrfs|xfs|zfs"} / node_filesystem_size_bytes{fstype=~"ext[234]|btrfs|xfs|zfs"}) - record: 'node:node_filesystem_avail:' - - expr: |- - sum(irate(node_network_receive_bytes_total{job="node-exporter",device!~"veth.+"}[1m])) + - sum(irate(node_network_transmit_bytes_total{job="node-exporter",device!~"veth.+"}[1m])) - record: :node_net_utilisation:sum_irate - - expr: |- - sum by (node) ( - (irate(node_network_receive_bytes_total{job="node-exporter",device!~"veth.+"}[1m]) + - irate(node_network_transmit_bytes_total{job="node-exporter",device!~"veth.+"}[1m])) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_net_utilisation:sum_irate - - expr: |- - sum(irate(node_network_receive_drop_total{job="node-exporter",device!~"veth.+"}[1m])) + - sum(irate(node_network_transmit_drop_total{job="node-exporter",device!~"veth.+"}[1m])) - record: :node_net_saturation:sum_irate - - expr: |- - sum by (node) ( - (irate(node_network_receive_drop_total{job="node-exporter",device!~"veth.+"}[1m]) + - irate(node_network_transmit_drop_total{job="node-exporter",device!~"veth.+"}[1m])) - * on (namespace, pod) group_left(node) - node_namespace_pod:kube_pod_info: - ) - record: node:node_net_saturation:sum_irate - - expr: |- - max( - max( - kube_pod_info{job="kube-state-metrics", host_ip!=""} - ) by (node, host_ip) - * on (host_ip) group_right (node) - label_replace( - (max(node_filesystem_files{job="node-exporter", mountpoint="/"}) by (instance)), "host_ip", "$1", "instance", "(.*):.*" - ) - ) by (node) - record: 'node:node_inodes_total:' - - expr: |- - max( - max( - kube_pod_info{job="kube-state-metrics", host_ip!=""} - ) by (node, host_ip) - * on (host_ip) group_right (node) - label_replace( - (max(node_filesystem_files_free{job="node-exporter", mountpoint="/"}) by (instance)), "host_ip", "$1", "instance", "(.*):.*" - ) - ) by (node) - record: 'node:node_inodes_free:' -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus-operator.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus-operator.yaml deleted file mode 100644 index a8a8915b6..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus-operator.yaml +++ /dev/null @@ -1,49 +0,0 @@ -{{- /* -Generated from 'prometheus-operator' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheusOperator }} -{{- $operatorJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "operator" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus-operator" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: prometheus-operator - rules: - - alert: PrometheusOperatorReconcileErrors - annotations: - message: Errors while reconciling {{`{{`}} $labels.controller {{`}}`}} in {{`{{`}} $labels.namespace {{`}}`}} Namespace. - expr: rate(prometheus_operator_reconcile_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0.1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusOperatorNodeLookupErrors - annotations: - message: Errors while reconciling Prometheus in {{`{{`}} $labels.namespace {{`}}`}} Namespace. - expr: rate(prometheus_operator_node_address_lookup_errors_total{job="{{ $operatorJob }}",namespace="{{ $namespace }}"}[5m]) > 0.1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus.rules.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus.rules.yaml deleted file mode 100644 index 0480c83b5..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/rules/prometheus.rules.yaml +++ /dev/null @@ -1,139 +0,0 @@ -{{- /* -Generated from 'prometheus.rules' group from https://raw.githubusercontent.com/prometheus-operator/kube-prometheus/release-0.1/manifests/prometheus-rules.yaml -Do not change in-place! In order to change this file first read following link: -https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/hack -*/ -}} -{{- $kubeTargetVersion := default .Capabilities.KubeVersion.GitVersion .Values.kubeTargetVersionOverride }} -{{- if and (semverCompare ">=1.10.0-0" $kubeTargetVersion) (semverCompare "<1.14.0-0" $kubeTargetVersion) .Values.defaultRules.create .Values.defaultRules.rules.prometheus }} -{{- $prometheusJob := printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus" }} -{{- $namespace := printf "%s" (include "kube-prometheus-stack.namespace" .) }} -apiVersion: monitoring.coreos.com/v1 -kind: PrometheusRule -metadata: - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" .) "prometheus.rules" | trunc 63 | trimSuffix "-" }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.defaultRules.labels }} -{{ toYaml .Values.defaultRules.labels | indent 4 }} -{{- end }} -{{- if .Values.defaultRules.annotations }} - annotations: -{{ toYaml .Values.defaultRules.annotations | indent 4 }} -{{- end }} -spec: - groups: - - name: prometheus.rules - rules: - - alert: PrometheusConfigReloadFailed - annotations: - description: Reloading Prometheus' configuration has failed for {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} - summary: Reloading Prometheus' configuration failed - expr: prometheus_config_last_reload_successful{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"} == 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotificationQueueRunningFull - annotations: - description: Prometheus' alert notification queue is running full for {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} - summary: Prometheus' alert notification queue is running full - expr: predict_linear(prometheus_notifications_queue_length{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m], 60 * 30) > prometheus_notifications_queue_capacity{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"} - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusErrorSendingAlerts - annotations: - description: Errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.Alertmanager{{`}}`}} - summary: Errors while sending alert from Prometheus - expr: rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) / rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0.01 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusErrorSendingAlerts - annotations: - description: Errors while sending alerts from Prometheus {{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} to Alertmanager {{`{{`}}$labels.Alertmanager{{`}}`}} - summary: Errors while sending alerts from Prometheus - expr: rate(prometheus_notifications_errors_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) / rate(prometheus_notifications_sent_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0.03 - for: 10m - labels: - severity: critical -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotConnectedToAlertmanagers - annotations: - description: Prometheus {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} is not connected to any Alertmanagers - summary: Prometheus is not connected to any Alertmanagers - expr: prometheus_notifications_alertmanagers_discovered{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"} < 1 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTSDBReloadsFailing - annotations: - description: '{{`{{`}}$labels.job{{`}}`}} at {{`{{`}}$labels.instance{{`}}`}} had {{`{{`}}$value | humanize{{`}}`}} reload failures over the last four hours.' - summary: Prometheus has issues reloading data blocks from disk - expr: increase(prometheus_tsdb_reloads_failures_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[2h]) > 0 - for: 12h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTSDBCompactionsFailing - annotations: - description: '{{`{{`}}$labels.job{{`}}`}} at {{`{{`}}$labels.instance{{`}}`}} had {{`{{`}}$value | humanize{{`}}`}} compaction failures over the last four hours.' - summary: Prometheus has issues compacting sample blocks - expr: increase(prometheus_tsdb_compactions_failed_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[2h]) > 0 - for: 12h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTSDBWALCorruptions - annotations: - description: '{{`{{`}}$labels.job{{`}}`}} at {{`{{`}}$labels.instance{{`}}`}} has a corrupted write-ahead log (WAL).' - summary: Prometheus write-ahead log is corrupted - expr: prometheus_tsdb_wal_corruptions_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"} > 0 - for: 4h - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusNotIngestingSamples - annotations: - description: Prometheus {{`{{`}} $labels.namespace {{`}}`}}/{{`{{`}} $labels.pod{{`}}`}} isn't ingesting samples. - summary: Prometheus isn't ingesting samples - expr: rate(prometheus_tsdb_head_samples_appended_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) <= 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} - - alert: PrometheusTargetScrapesDuplicate - annotations: - description: '{{`{{`}}$labels.namespace{{`}}`}}/{{`{{`}}$labels.pod{{`}}`}} has many samples rejected due to duplicate timestamps but different values' - summary: Prometheus has many samples rejected - expr: increase(prometheus_target_scrapes_sample_duplicate_timestamp_total{job="{{ $prometheusJob }}",namespace="{{ $namespace }}"}[5m]) > 0 - for: 10m - labels: - severity: warning -{{- if .Values.defaultRules.additionalRuleLabels }} -{{ toYaml .Values.defaultRules.additionalRuleLabels | indent 8 }} -{{- end }} -{{- end }} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/service.yaml deleted file mode 100644 index 8676b81ea..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/service.yaml +++ /dev/null @@ -1,60 +0,0 @@ -{{- if .Values.prometheus.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus - self-monitor: {{ .Values.prometheus.serviceMonitor.selfMonitor | quote }} -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.service.labels }} -{{ toYaml .Values.prometheus.service.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheus.service.annotations }} - annotations: -{{ toYaml .Values.prometheus.service.annotations | indent 4 }} -{{- end }} -spec: -{{- if .Values.prometheus.service.clusterIP }} - clusterIP: {{ .Values.prometheus.service.clusterIP }} -{{- end }} -{{- if .Values.prometheus.service.externalIPs }} - externalIPs: -{{ toYaml .Values.prometheus.service.externalIPs | indent 4 }} -{{- end }} -{{- if .Values.prometheus.service.loadBalancerIP }} - loadBalancerIP: {{ .Values.prometheus.service.loadBalancerIP }} -{{- end }} -{{- if .Values.prometheus.service.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := .Values.prometheus.service.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} -{{- end }} - ports: - - name: {{ .Values.prometheus.prometheusSpec.portName }} - {{- if eq .Values.prometheus.service.type "NodePort" }} - nodePort: {{ .Values.prometheus.service.nodePort }} - {{- end }} - port: {{ .Values.prometheus.service.port }} - targetPort: {{ .Values.prometheus.service.targetPort }} - {{- if .Values.prometheus.thanosIngress.enabled }} - - name: grpc - {{- if eq .Values.prometheus.service.type "NodePort" }} - nodePort: {{ .Values.prometheus.thanosIngress.nodePort }} - {{- end }} - port: {{ .Values.prometheus.thanosIngress.servicePort }} - targetPort: {{ .Values.prometheus.thanosIngress.servicePort }} - {{- end }} -{{- if .Values.prometheus.service.additionalPorts }} -{{ toYaml .Values.prometheus.service.additionalPorts | indent 2 }} -{{- end }} - selector: - app: prometheus - prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus -{{- if .Values.prometheus.service.sessionAffinity }} - sessionAffinity: {{ .Values.prometheus.service.sessionAffinity }} -{{- end }} - type: "{{ .Values.prometheus.service.type }}" -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceThanosSidecar.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceThanosSidecar.yaml deleted file mode 100644 index 7c33379cb..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceThanosSidecar.yaml +++ /dev/null @@ -1,30 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.thanosService.enabled }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-thanos-discovery - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-thanos-discovery -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.thanosService.labels }} -{{ toYaml .Values.prometheus.thanosService.labels | indent 4 }} -{{- end }} -{{- if .Values.prometheus.thanosService.annotations }} - annotations: -{{ toYaml .Values.prometheus.thanosService.annotations | indent 4 }} -{{- end }} -spec: - type: {{ .Values.prometheus.thanosService.type }} - clusterIP: {{ .Values.prometheus.thanosService.clusterIP }} - ports: - - name: {{ .Values.prometheus.thanosService.portName }} - port: {{ .Values.prometheus.thanosService.port }} - targetPort: {{ .Values.prometheus.thanosService.targetPort }} - {{- if eq .Values.prometheus.thanosService.type "NodePort" }} - nodePort: {{ .Values.prometheus.thanosService.nodePort }} - {{- end }} - selector: - app: prometheus - prometheus: {{ template "kube-prometheus-stack.fullname" . }}-prometheus -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceaccount.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceaccount.yaml deleted file mode 100644 index 862d5f8e4..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceaccount.yaml +++ /dev/null @@ -1,16 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.serviceAccount.create }} -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ template "kube-prometheus-stack.prometheus.serviceAccountName" . }} - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -{{- if .Values.prometheus.serviceAccount.annotations }} - annotations: -{{ toYaml .Values.prometheus.serviceAccount.annotations | indent 4 }} -{{- end }} -imagePullSecrets: -{{ toYaml .Values.global.imagePullSecrets | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitor.yaml deleted file mode 100644 index 356c013ff..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitor.yaml +++ /dev/null @@ -1,42 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.serviceMonitor.selfMonitor }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-prometheus - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-prometheus - release: {{ $.Release.Name | quote }} - self-monitor: "true" - namespaceSelector: - matchNames: - - {{ printf "%s" (include "kube-prometheus-stack.namespace" .) | quote }} - endpoints: - - port: {{ .Values.prometheus.prometheusSpec.portName }} - {{- if .Values.prometheus.serviceMonitor.interval }} - interval: {{ .Values.prometheus.serviceMonitor.interval }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.scheme }} - scheme: {{ .Values.prometheus.serviceMonitor.scheme }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.tlsConfig }} - tlsConfig: {{ toYaml .Values.prometheus.serviceMonitor.tlsConfig | nindent 6 }} - {{- end }} - {{- if .Values.prometheus.serviceMonitor.bearerTokenFile }} - bearerTokenFile: {{ .Values.prometheus.serviceMonitor.bearerTokenFile }} - {{- end }} - path: "{{ trimSuffix "/" .Values.prometheus.prometheusSpec.routePrefix }}/metrics" -{{- if .Values.prometheus.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.prometheus.serviceMonitor.metricRelabelings | indent 6) . }} -{{- end }} -{{- if .Values.prometheus.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.prometheus.serviceMonitor.relabelings | indent 6 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitors.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitors.yaml deleted file mode 100644 index a78d1cd00..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/servicemonitors.yaml +++ /dev/null @@ -1,38 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.additionalServiceMonitors }} -apiVersion: v1 -kind: List -items: -{{- range .Values.prometheus.additionalServiceMonitors }} - - apiVersion: monitoring.coreos.com/v1 - kind: ServiceMonitor - metadata: - name: {{ .name }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ template "kube-prometheus-stack.name" $ }}-prometheus -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if .additionalLabels }} -{{ toYaml .additionalLabels | indent 8 }} - {{- end }} - spec: - endpoints: -{{ toYaml .endpoints | indent 8 }} - {{- if .jobLabel }} - jobLabel: {{ .jobLabel }} - {{- end }} - {{- if .namespaceSelector }} - namespaceSelector: -{{ toYaml .namespaceSelector | indent 8 }} - {{- end }} - selector: -{{ toYaml .selector | indent 8 }} - {{- if .targetLabels }} - targetLabels: -{{ toYaml .targetLabels | indent 8 }} - {{- end }} - {{- if .podTargetLabels }} - podTargetLabels: -{{ toYaml .podTargetLabels | indent 8 }} - {{- end }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceperreplica.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceperreplica.yaml deleted file mode 100644 index 1a5543362..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/prometheus/serviceperreplica.yaml +++ /dev/null @@ -1,46 +0,0 @@ -{{- if and .Values.prometheus.enabled .Values.prometheus.servicePerReplica.enabled }} -{{- $count := .Values.prometheus.prometheusSpec.replicas | int -}} -{{- $serviceValues := .Values.prometheus.servicePerReplica -}} -apiVersion: v1 -kind: List -metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-serviceperreplica - namespace: {{ template "kube-prometheus-stack.namespace" . }} -items: -{{- range $i, $e := until $count }} - - apiVersion: v1 - kind: Service - metadata: - name: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - namespace: {{ template "kube-prometheus-stack.namespace" $ }} - labels: - app: {{ include "kube-prometheus-stack.name" $ }}-prometheus -{{ include "kube-prometheus-stack.labels" $ | indent 8 }} - {{- if $serviceValues.annotations }} - annotations: -{{ toYaml $serviceValues.annotations | indent 8 }} - {{- end }} - spec: - {{- if $serviceValues.clusterIP }} - clusterIP: {{ $serviceValues.clusterIP }} - {{- end }} - {{- if $serviceValues.loadBalancerSourceRanges }} - loadBalancerSourceRanges: - {{- range $cidr := $serviceValues.loadBalancerSourceRanges }} - - {{ $cidr }} - {{- end }} - {{- end }} - ports: - - name: {{ $.Values.prometheus.prometheusSpec.portName }} - {{- if eq $serviceValues.type "NodePort" }} - nodePort: {{ $serviceValues.nodePort }} - {{- end }} - port: {{ $serviceValues.port }} - targetPort: {{ $serviceValues.targetPort }} - selector: - app: prometheus - prometheus: {{ include "kube-prometheus-stack.fullname" $ }}-prometheus - statefulset.kubernetes.io/pod-name: prometheus-{{ include "kube-prometheus-stack.fullname" $ }}-prometheus-{{ $i }} - type: "{{ $serviceValues.type }}" -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/clusterrole.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/clusterrole.yaml deleted file mode 100644 index a115de7ca..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/clusterrole.yaml +++ /dev/null @@ -1,131 +0,0 @@ -{{- if and .Values.global.rbac.create .Values.global.rbac.userRoles.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: monitoring-admin - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - {{- if .Values.global.rbac.userRoles.aggregateToDefaultRoles }} - rbac.authorization.k8s.io/aggregate-to-admin: "true" - {{- end }} -rules: -- apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - prometheuses - - prometheuses/finalizers - - alertmanagers/finalizers - verbs: - - 'get' - - 'list' - - 'watch' -- apiGroups: - - monitoring.coreos.com - resources: - - thanosrulers - - thanosrulers/finalizers - - servicemonitors - - podmonitors - - prometheusrules - - podmonitors - - probes - - probes/finalizers - - alertmanagerconfigs - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: monitoring-edit - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - {{- if .Values.global.rbac.userRoles.aggregateToDefaultRoles }} - rbac.authorization.k8s.io/aggregate-to-edit: "true" - {{- end }} -rules: -rules: -- apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - prometheuses - - prometheuses/finalizers - - alertmanagers/finalizers - verbs: - - 'get' - - 'list' - - 'watch' -- apiGroups: - - monitoring.coreos.com - resources: - - thanosrulers - - thanosrulers/finalizers - - servicemonitors - - podmonitors - - prometheusrules - - podmonitors - - probes - - alertmanagerconfigs - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: monitoring-view - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} - {{- if .Values.global.rbac.userRoles.aggregateToDefaultRoles }} - rbac.authorization.k8s.io/aggregate-to-view: "true" - {{- end }} -rules: -- apiGroups: - - monitoring.coreos.com - resources: - - alertmanagers - - prometheuses - - prometheuses/finalizers - - alertmanagers/finalizers - - thanosrulers - - thanosrulers/finalizers - - servicemonitors - - podmonitors - - prometheusrules - - podmonitors - - probes - - probes/finalizers - - alertmanagerconfigs - verbs: - - 'get' - - 'list' - - 'watch' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: monitoring-ui-view - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - services/proxy - resourceNames: - - "http:{{ template "kube-prometheus-stack.fullname" . }}-prometheus:{{ .Values.prometheus.service.port }}" - - "https:{{ template "kube-prometheus-stack.fullname" . }}-prometheus:{{ .Values.prometheus.service.port }}" - - "http:{{ template "kube-prometheus-stack.fullname" . }}-alertmanager:{{ .Values.alertmanager.service.port }}" - - "https:{{ template "kube-prometheus-stack.fullname" . }}-alertmanager:{{ .Values.alertmanager.service.port }}" - - "http:{{ include "call-nested" (list . "grafana" "grafana.fullname") }}:{{ .Values.grafana.service.port }}" - - "https:{{ include "call-nested" (list . "grafana" "grafana.fullname") }}:{{ .Values.grafana.service.port }}" - verbs: - - 'get' -- apiGroups: - - "" - resourceNames: - - {{ template "kube-prometheus-stack.fullname" . }}-prometheus - - {{ template "kube-prometheus-stack.fullname" . }}-alertmanager - - {{ include "call-nested" (list . "grafana" "grafana.fullname") }} - resources: - - endpoints - verbs: - - list -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/config-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/config-role.yaml deleted file mode 100644 index f48ffc827..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/config-role.yaml +++ /dev/null @@ -1,48 +0,0 @@ -{{- if and .Values.global.rbac.create .Values.global.rbac.userRoles.create }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-config-admin - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-config-edit - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-config-view - namespace: {{ template "kube-prometheus-stack.namespace" . }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - - secrets - verbs: - - 'get' - - 'list' - - 'watch' -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboard-role.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboard-role.yaml deleted file mode 100644 index d2f81976a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboard-role.yaml +++ /dev/null @@ -1,47 +0,0 @@ -{{- if and .Values.global.rbac.create .Values.global.rbac.userRoles.create .Values.grafana.enabled }} -{{- if .Values.grafana.defaultDashboardsEnabled }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-dashboard-admin - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-dashboard-edit - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - '*' ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: monitoring-dashboard-view - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - labels: {{ include "kube-prometheus-stack.labels" . | nindent 4 }} -rules: -- apiGroups: - - "" - resources: - - configmaps - verbs: - - 'get' - - 'list' - - 'watch' -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml deleted file mode 100644 index 7b51a0bf7..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/addons/ingress-nginx-dashboard.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled .Values.ingressNginx.enabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: {{ printf "%s-%s" (include "kube-prometheus-stack.fullname" $) "ingress-nginx" | trunc 63 | trimSuffix "-" }} - {{- if .Values.grafana.sidecar.dashboards.annotations }} - annotations: {{ toYaml .Values.grafana.sidecar.dashboards.annotations | nindent 4 }} - {{- end }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/ingress-nginx/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml deleted file mode 100644 index d73b25745..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/cluster-dashboards.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-cluster - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/cluster/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml deleted file mode 100644 index 8865efa93..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/default-dashboard.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-home - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/home/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml deleted file mode 100644 index 37afc6495..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/k8s-dashboards.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-k8s - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/k8s/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml deleted file mode 100644 index 172c36e9d..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/nodes-dashboards.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-nodes - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/nodes/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml deleted file mode 100644 index 940f18869..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/pods-dashboards.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-pods - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/pods/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml deleted file mode 100644 index d146dacdd..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/dashboards/rancher/workload-dashboards.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled }} -apiVersion: v1 -kind: ConfigMap -metadata: - namespace: {{ .Values.grafana.defaultDashboards.namespace }} - name: rancher-default-dashboards-workloads - annotations: -{{ toYaml .Values.grafana.sidecar.dashboards.annotations | indent 4 }} - labels: - {{- if $.Values.grafana.sidecar.dashboards.label }} - {{ $.Values.grafana.sidecar.dashboards.label }}: "1" - {{- end }} - app: {{ template "kube-prometheus-stack.name" $ }}-grafana -{{ include "kube-prometheus-stack.labels" $ | indent 4 }} -data: -{{ (.Files.Glob "files/rancher/workloads/*").AsConfig | indent 2 }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml deleted file mode 100644 index 53a9ad689..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/service.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and (not .Values.ingressNginx.enabled) (.Values.rkeIngressNginx.enabled) }} -{{- fail "Cannot set .Values.rkeIngressNginx.enabled=true when .Values.ingressNginx.enabled=false" }} -{{- end }} -{{- if and .Values.ingressNginx.enabled (not .Values.rkeIngressNginx.enabled) }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-ingress-nginx - labels: - app: {{ template "kube-prometheus-stack.name" . }}-ingress-nginx - jobLabel: ingress-nginx -{{ include "kube-prometheus-stack.labels" . | indent 4 }} - namespace: {{ .Values.ingressNginx.namespace }} -spec: - clusterIP: None - ports: - - name: http-metrics - port: {{ .Values.ingressNginx.service.port }} - protocol: TCP - targetPort: {{ .Values.ingressNginx.service.targetPort }} - selector: - {{- if .Values.ingressNginx.service.selector }} -{{ toYaml .Values.ingressNginx.service.selector | indent 4 }} - {{- else }} - app: ingress-nginx - {{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml deleted file mode 100644 index a42f46e5c..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/exporters/ingress-nginx/servicemonitor.yaml +++ /dev/null @@ -1,36 +0,0 @@ -{{- if and (not .Values.ingressNginx.enabled) (.Values.rkeIngressNginx.enabled) }} -{{- fail "Cannot set .Values.rkeIngressNginx.enabled=true when .Values.ingressNginx.enabled=false" }} -{{- end }} -{{- if and .Values.ingressNginx.enabled (not .Values.rkeIngressNginx.enabled) }} -apiVersion: monitoring.coreos.com/v1 -kind: ServiceMonitor -metadata: - name: {{ template "kube-prometheus-stack.fullname" . }}-ingress-nginx - namespace: {{ .Values.ingressNginx.namespace }} - labels: - app: {{ template "kube-prometheus-stack.name" . }}-ingress-nginx -{{ include "kube-prometheus-stack.labels" . | indent 4 }} -spec: - jobLabel: jobLabel - selector: - matchLabels: - app: {{ template "kube-prometheus-stack.name" . }}-ingress-nginx - release: {{ $.Release.Name | quote }} - namespaceSelector: - matchNames: - - {{ .Values.ingressNginx.namespace }} - endpoints: - - port: http-metrics - {{- if .Values.ingressNginx.serviceMonitor.interval}} - interval: {{ .Values.ingressNginx.serviceMonitor.interval }} - {{- end }} - bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token -{{- if .Values.ingressNginx.serviceMonitor.metricRelabelings }} - metricRelabelings: -{{ tpl (toYaml .Values.ingressNginx.serviceMonitor.metricRelabelings | indent 4) . }} -{{- end }} -{{- if .Values.ingressNginx.serviceMonitor.relabelings }} - relabelings: -{{ toYaml .Values.ingressNginx.serviceMonitor.relabelings | indent 4 }} -{{- end }} -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/hardened.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/hardened.yaml deleted file mode 100644 index f9bf57c7e..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/rancher-monitoring/hardened.yaml +++ /dev/null @@ -1,124 +0,0 @@ -{{- $namespaces := dict "_0" .Release.Namespace -}} -{{- if and .Values.grafana.enabled .Values.grafana.defaultDashboardsEnabled (not .Values.grafana.defaultDashboards.useExistingNamespace) -}} -{{- $_ := set $namespaces "_1" .Values.grafana.defaultDashboards.namespace -}} -{{- end -}} -apiVersion: batch/v1 -kind: Job -metadata: - name: {{ .Chart.Name }}-patch-sa - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-patch-sa - annotations: - "helm.sh/hook": post-install, post-upgrade - "helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation -spec: - template: - metadata: - name: {{ .Chart.Name }}-patch-sa - labels: - app: {{ .Chart.Name }}-patch-sa - spec: - serviceAccountName: {{ .Chart.Name }}-patch-sa - securityContext: - runAsNonRoot: true - runAsUser: 1000 - restartPolicy: Never - nodeSelector: {{ include "linux-node-selector" . | nindent 8 }} - tolerations: {{ include "linux-node-tolerations" . | nindent 8 }} - containers: - {{- range $_, $ns := $namespaces }} - - name: patch-sa-{{ $ns }} - image: {{ template "system_default_registry" $ }}{{ $.Values.global.kubectl.repository }}:{{ $.Values.global.kubectl.tag }} - imagePullPolicy: {{ $.Values.global.kubectl.pullPolicy }} - command: ["kubectl", "patch", "serviceaccount", "default", "-p", "{\"automountServiceAccountToken\": false}"] - args: ["-n", "{{ $ns }}"] - {{- end }} ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRole -metadata: - name: {{ .Chart.Name }}-patch-sa - labels: - app: {{ .Chart.Name }}-patch-sa -rules: -- apiGroups: - - "" - resources: - - serviceaccounts - verbs: ['get', 'patch'] -- apiGroups: ['policy'] - resources: ['podsecuritypolicies'] - verbs: ['use'] - resourceNames: - - {{ .Chart.Name }}-patch-sa ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: ClusterRoleBinding -metadata: - name: {{ .Chart.Name }}-patch-sa - labels: - app: {{ .Chart.Name }}-patch-sa -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: ClusterRole - name: {{ .Chart.Name }}-patch-sa -subjects: -- kind: ServiceAccount - name: {{ .Chart.Name }}-patch-sa - namespace: {{ .Release.Namespace }} ---- -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Chart.Name }}-patch-sa - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-patch-sa ---- -apiVersion: policy/v1beta1 -kind: PodSecurityPolicy -metadata: - name: {{ .Chart.Name }}-patch-sa - namespace: {{ .Release.Namespace }} - labels: - app: {{ .Chart.Name }}-patch-sa -spec: - privileged: false - hostNetwork: false - hostIPC: false - hostPID: false - runAsUser: - rule: 'MustRunAsNonRoot' - seLinux: - rule: 'RunAsAny' - supplementalGroups: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - fsGroup: - rule: 'MustRunAs' - ranges: - - min: 1 - max: 65535 - readOnlyRootFilesystem: false - volumes: - - 'secret' -{{- range $_, $ns := $namespaces }} ---- -apiVersion: networking.k8s.io/v1 -kind: NetworkPolicy -metadata: - name: default-allow-all - namespace: {{ $ns }} -spec: - podSelector: {} - ingress: - - {} - egress: - - {} - policyTypes: - - Ingress - - Egress -{{- end }} diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/validate-install-crd.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/validate-install-crd.yaml deleted file mode 100644 index ac7921f58..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/templates/validate-install-crd.yaml +++ /dev/null @@ -1,21 +0,0 @@ -#{{- if gt (len (lookup "rbac.authorization.k8s.io/v1" "ClusterRole" "" "")) 0 -}} -# {{- $found := dict -}} -# {{- set $found "monitoring.coreos.com/v1alpha1/AlertmanagerConfig" false -}} -# {{- set $found "monitoring.coreos.com/v1/Alertmanager" false -}} -# {{- set $found "monitoring.coreos.com/v1/PodMonitor" false -}} -# {{- set $found "monitoring.coreos.com/v1/Probe" false -}} -# {{- set $found "monitoring.coreos.com/v1/Prometheus" false -}} -# {{- set $found "monitoring.coreos.com/v1/PrometheusRule" false -}} -# {{- set $found "monitoring.coreos.com/v1/ServiceMonitor" false -}} -# {{- set $found "monitoring.coreos.com/v1/ThanosRuler" false -}} -# {{- range .Capabilities.APIVersions -}} -# {{- if hasKey $found (toString .) -}} -# {{- set $found (toString .) true -}} -# {{- end -}} -# {{- end -}} -# {{- range $_, $exists := $found -}} -# {{- if (eq $exists false) -}} -# {{- required "Required CRDs are missing. Please install the corresponding CRD chart before installing this chart." "" -}} -# {{- end -}} -# {{- end -}} -#{{- end -}} \ No newline at end of file diff --git a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/values.yaml b/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/values.yaml deleted file mode 100644 index fc6a6240a..000000000 --- a/charts/rancher-monitoring/rancher-monitoring/14.5.101+up14.5.0/values.yaml +++ /dev/null @@ -1,3101 +0,0 @@ -# Default values for kube-prometheus-stack. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -# Rancher Monitoring Configuration - -## Configuration for prometheus-adapter -## ref: https://github.com/prometheus-community/helm-charts/tree/main/charts/prometheus-adapter -## -prometheus-adapter: - enabled: true - prometheus: - # Change this if you change the namespaceOverride or nameOverride of prometheus-operator - url: http://rancher-monitoring-prometheus.cattle-monitoring-system.svc - port: 9090 - psp: - create: true - -## RKE PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-pushprox -## -rkeControllerManager: - enabled: false - metricsPort: 10252 - component: kube-controller-manager - clients: - port: 10011 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/controlplane: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rkeScheduler: - enabled: false - metricsPort: 10251 - component: kube-scheduler - clients: - port: 10012 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/controlplane: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rkeProxy: - enabled: false - metricsPort: 10249 - component: kube-proxy - clients: - port: 10013 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rkeEtcd: - enabled: false - metricsPort: 2379 - component: kube-etcd - clients: - port: 10014 - https: - enabled: true - certDir: /etc/kubernetes/ssl - certFile: kube-etcd-*.pem - keyFile: kube-etcd-*-key.pem - caCertFile: kube-ca.pem - nodeSelector: - node-role.kubernetes.io/etcd: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rkeIngressNginx: - enabled: false - metricsPort: 10254 - component: ingress-nginx - clients: - port: 10015 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - nodeSelector: - node-role.kubernetes.io/worker: "true" - -## k3s PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-pushprox -## -k3sServer: - enabled: false - metricsPort: 10250 - component: k3s-server - clients: - port: 10013 - useLocalhost: true - https: - enabled: true - useServiceAccountCredentials: true - insecureSkipVerify: true - rbac: - additionalRules: - - nonResourceURLs: ["/metrics/cadvisor"] - verbs: ["get"] - - apiGroups: [""] - resources: ["nodes/metrics"] - verbs: ["get"] - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - serviceMonitor: - endpoints: - - port: metrics - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - - port: metrics - path: /metrics/cadvisor - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - - port: metrics - path: /metrics/probes - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - -## KubeADM PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-pushprox -## -kubeAdmControllerManager: - enabled: false - metricsPort: 10257 - component: kube-controller-manager - clients: - port: 10011 - useLocalhost: true - https: - enabled: true - useServiceAccountCredentials: true - insecureSkipVerify: true - nodeSelector: - node-role.kubernetes.io/master: "" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -kubeAdmScheduler: - enabled: false - metricsPort: 10259 - component: kube-scheduler - clients: - port: 10012 - useLocalhost: true - https: - enabled: true - useServiceAccountCredentials: true - insecureSkipVerify: true - nodeSelector: - node-role.kubernetes.io/master: "" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -kubeAdmProxy: - enabled: false - metricsPort: 10249 - component: kube-proxy - clients: - port: 10013 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -kubeAdmEtcd: - enabled: false - metricsPort: 2381 - component: kube-etcd - clients: - port: 10014 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/master: "" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -## rke2 PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-pushprox -## -rke2ControllerManager: - enabled: false - metricsPort: 10252 - component: kube-controller-manager - clients: - port: 10011 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/master: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rke2Scheduler: - enabled: false - metricsPort: 10251 - component: kube-scheduler - clients: - port: 10012 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/master: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rke2Proxy: - enabled: false - metricsPort: 10249 - component: kube-proxy - clients: - port: 10013 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rke2Etcd: - enabled: false - metricsPort: 2381 - component: kube-etcd - clients: - port: 10014 - useLocalhost: true - nodeSelector: - node-role.kubernetes.io/etcd: "true" - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -rke2IngressNginx: - enabled: false - metricsPort: 10254 - component: ingress-nginx - clients: - port: 10015 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - affinity: - podAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchExpressions: - - key: "app.kubernetes.io/component" - operator: "In" - values: - - "controller" - topologyKey: "kubernetes.io/hostname" - namespaces: - - "kube-system" - # in the RKE2 cluster, the ingress-nginx-controller is deployed as - # a Deployment with 1 pod when RKE2 version is <= 1.20, - # a DaemonSet when RKE2 version is >= 1.21 - deployment: - enabled: false - replicas: 1 - - - -## Additional PushProx Monitoring -## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-pushprox -## - -# hardenedKubelet can only be deployed if kubelet.enabled=true -# If enabled, it replaces the ServiceMonitor deployed by the default kubelet option with a -# PushProx-based exporter that does not require a host port to be open to scrape metrics. -hardenedKubelet: - enabled: false - metricsPort: 10250 - component: kubelet - clients: - port: 10015 - useLocalhost: true - https: - enabled: true - useServiceAccountCredentials: true - insecureSkipVerify: true - rbac: - additionalRules: - - nonResourceURLs: ["/metrics/cadvisor"] - verbs: ["get"] - - apiGroups: [""] - resources: ["nodes/metrics"] - verbs: ["get"] - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - serviceMonitor: - endpoints: - - port: metrics - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - - port: metrics - path: /metrics/cadvisor - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - - port: metrics - path: /metrics/probes - honorLabels: true - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - -# hardenedNodeExporter can only be deployed if nodeExporter.enabled=true -# If enabled, it replaces the ServiceMonitor deployed by the default nodeExporter with a -# PushProx-based exporter that does not require a host port to be open to scrape metrics. -hardenedNodeExporter: - enabled: false - metricsPort: 9796 - component: node-exporter - clients: - port: 10016 - useLocalhost: true - tolerations: - - effect: "NoExecute" - operator: "Exists" - - effect: "NoSchedule" - operator: "Exists" - -## Component scraping nginx-ingress-controller -## -ingressNginx: - enabled: false - - ## The namespace to search for your nginx-ingress-controller - ## - namespace: ingress-nginx - - service: - port: 9913 - targetPort: 10254 - # selector: - # app: ingress-nginx - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -# Prometheus Operator Configuration - -## Provide a name in place of kube-prometheus-stack for `app:` labels -## NOTE: If you change this value, you must update the prometheus-adapter.prometheus.url -## -nameOverride: "rancher-monitoring" - -## Override the deployment namespace -## NOTE: If you change this value, you must update the prometheus-adapter.prometheus.url -## -namespaceOverride: "cattle-monitoring-system" - -## Provide a k8s version to auto dashboard import script example: kubeTargetVersionOverride: 1.16.6 -## -kubeTargetVersionOverride: "" - -## Provide a name to substitute for the full names of resources -## -fullnameOverride: "" - -## Labels to apply to all resources -## -commonLabels: {} -# scmhash: abc123 -# myLabel: aakkmd - -## Create default rules for monitoring the cluster -## -defaultRules: - create: true - rules: - alertmanager: true - etcd: true - general: true - k8s: true - kubeApiserver: true - kubeApiserverAvailability: true - kubeApiserverError: true - kubeApiserverSlos: true - kubelet: true - kubePrometheusGeneral: true - kubePrometheusNodeAlerting: true - kubePrometheusNodeRecording: true - kubernetesAbsent: true - kubernetesApps: true - kubernetesResources: true - kubernetesStorage: true - kubernetesSystem: true - kubeScheduler: true - kubeStateMetrics: true - network: true - node: true - prometheus: true - prometheusOperator: true - time: true - - ## Runbook url prefix for default rules - runbookUrl: https://github.com/kubernetes-monitoring/kubernetes-mixin/tree/master/runbook.md# - ## Reduce app namespace alert scope - appNamespacesTarget: ".*" - - ## Labels for default rules - labels: {} - ## Annotations for default rules - annotations: {} - - ## Additional labels for PrometheusRule alerts - additionalRuleLabels: {} - -## Deprecated way to provide custom recording or alerting rules to be deployed into the cluster. -## -# additionalPrometheusRules: [] -# - name: my-rule-file -# groups: -# - name: my_group -# rules: -# - record: my_record -# expr: 100 * my_record - -## Provide custom recording or alerting rules to be deployed into the cluster. -## -additionalPrometheusRulesMap: {} -# rule-name: -# groups: -# - name: my_group -# rules: -# - record: my_record -# expr: 100 * my_record - -## -global: - cattle: - systemDefaultRegistry: "" - ## Windows Monitoring - ## ref: https://github.com/rancher/charts/tree/dev-v2.5-source/packages/rancher-windows-exporter - ## - ## Deploys a DaemonSet of Prometheus exporters based on https://github.com/prometheus-community/windows_exporter. - ## Every Windows host must have a wins version of 0.1.0+ to use this chart (default as of Rancher 2.5.8). - ## To upgrade wins versions on Windows hosts, see https://github.com/rancher/wins/tree/master/charts/rancher-wins-upgrader. - ## - windows: - enabled: false - kubectl: - repository: rancher/kubectl - tag: v1.20.2 - pullPolicy: IfNotPresent - rbac: - ## Create RBAC resources for ServiceAccounts and users - ## - create: true - - userRoles: - ## Create default user ClusterRoles to allow users to interact with Prometheus CRs, ConfigMaps, and Secrets - create: true - ## Aggregate default user ClusterRoles into default k8s ClusterRoles - aggregateToDefaultRoles: true - - pspEnabled: true - pspAnnotations: {} - ## Specify pod annotations - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#apparmor - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#seccomp - ## Ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/#sysctl - ## - # seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' - # seccomp.security.alpha.kubernetes.io/defaultProfileName: 'docker/default' - # apparmor.security.beta.kubernetes.io/defaultProfileName: 'runtime/default' - - ## Reference to one or more secrets to be used when pulling images - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ - ## - imagePullSecrets: [] - # - name: "image-pull-secret" - -## Configuration for alertmanager -## ref: https://prometheus.io/docs/alerting/alertmanager/ -## -alertmanager: - - ## Deploy alertmanager - ## - enabled: true - - ## Api that prometheus will use to communicate with alertmanager. Possible values are v1, v2 - ## - apiVersion: v2 - - ## Service account for Alertmanager to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - create: true - name: "" - annotations: {} - - ## Configure pod disruption budgets for Alertmanager - ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget - ## This configuration is immutable once created and will require the PDB to be deleted to be changed - ## https://github.com/kubernetes/kubernetes/issues/45398 - ## - podDisruptionBudget: - enabled: false - minAvailable: 1 - maxUnavailable: "" - - ## Alertmanager configuration directives - ## ref: https://prometheus.io/docs/alerting/configuration/#configuration-file - ## https://prometheus.io/webtools/alerting/routing-tree-editor/ - ## - ## Example Slack Config - ## config: - ## route: - ## group_by: ['job'] - ## group_wait: 30s - ## group_interval: 5m - ## repeat_interval: 3h - ## receiver: 'slack-notifications' - ## receivers: - ## - name: 'slack-notifications' - ## slack_configs: - ## - send_resolved: true - ## text: '{{ template "slack.rancher.text" . }}' - ## api_url: - ## templates: - ## - /etc/alertmanager/config/*.tmpl - 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' - templates: - - '/etc/alertmanager/config/*.tmpl' - - ## Pass the Alertmanager configuration directives through Helm's templating - ## engine. If the Alertmanager configuration contains Alertmanager templates, - ## they'll need to be properly escaped so that they are not interpreted by - ## Helm - ## ref: https://helm.sh/docs/developing_charts/#using-the-tpl-function - ## https://prometheus.io/docs/alerting/configuration/#tmpl_string - ## https://prometheus.io/docs/alerting/notifications/ - ## https://prometheus.io/docs/alerting/notification_examples/ - tplConfig: false - - ## Alertmanager template files to format alerts - ## By default, templateFiles are placed in /etc/alertmanager/config/ and if - ## they have a .tmpl file suffix will be loaded. See config.templates above - ## to change, add other suffixes. If adding other suffixes, be sure to update - ## config.templates above to include those suffixes. - ## ref: https://prometheus.io/docs/alerting/notifications/ - ## https://prometheus.io/docs/alerting/notification_examples/ - ## - templateFiles: - rancher_defaults.tmpl: |- - {{- define "slack.rancher.text" -}} - {{ template "rancher.text_multiple" . }} - {{- end -}} - - {{- define "rancher.text_multiple" -}} - *[GROUP - Details]* - One or more alarms in this group have triggered a notification. - - {{- if gt (len .GroupLabels.Values) 0 }} - *Group Labels:* - {{- range .GroupLabels.SortedPairs }} - • *{{ .Name }}:* `{{ .Value }}` - {{- end }} - {{- end }} - {{- if .ExternalURL }} - *Link to AlertManager:* {{ .ExternalURL }} - {{- end }} - - {{- range .Alerts }} - {{ template "rancher.text_single" . }} - {{- end }} - {{- end -}} - - {{- define "rancher.text_single" -}} - {{- if .Labels.alertname }} - *[ALERT - {{ .Labels.alertname }}]* - {{- else }} - *[ALERT]* - {{- end }} - {{- if .Labels.severity }} - *Severity:* `{{ .Labels.severity }}` - {{- end }} - {{- if .Labels.cluster }} - *Cluster:* {{ .Labels.cluster }} - {{- end }} - {{- if .Annotations.summary }} - *Summary:* {{ .Annotations.summary }} - {{- end }} - {{- if .Annotations.message }} - *Message:* {{ .Annotations.message }} - {{- end }} - {{- if .Annotations.description }} - *Description:* {{ .Annotations.description }} - {{- end }} - {{- if .Annotations.runbook_url }} - *Runbook URL:* <{{ .Annotations.runbook_url }}|:spiral_note_pad:> - {{- end }} - {{- with .Labels }} - {{- with .Remove (stringSlice "alertname" "severity" "cluster") }} - {{- if gt (len .) 0 }} - *Additional Labels:* - {{- range .SortedPairs }} - • *{{ .Name }}:* `{{ .Value }}` - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- with .Annotations }} - {{- with .Remove (stringSlice "summary" "message" "description" "runbook_url") }} - {{- if gt (len .) 0 }} - *Additional Annotations:* - {{- range .SortedPairs }} - • *{{ .Name }}:* `{{ .Value }}` - {{- end }} - {{- end }} - {{- end }} - {{- end }} - {{- end -}} - - ingress: - enabled: false - - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - - annotations: {} - - labels: {} - - ## Hosts must be provided if Ingress is enabled. - ## - hosts: [] - # - alertmanager.domain.com - - ## Paths to use for ingress rules - one path should match the alertmanagerSpec.routePrefix - ## - paths: [] - # - / - - ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) - ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types - # pathType: ImplementationSpecific - - ## TLS configuration for Alertmanager Ingress - ## Secret must be manually created in the namespace - ## - tls: [] - # - secretName: alertmanager-general-tls - # hosts: - # - alertmanager.example.com - - ## Configuration for Alertmanager secret - ## - secret: - - # Should the Alertmanager Config Secret be cleaned up on an uninstall? - # This is set to false by default to prevent the loss of alerting configuration on an uninstall - # Only used Alertmanager is deployed and alertmanager.alertmanagerSpec.useExistingSecret=false - # - cleanupOnUninstall: false - - # The image used to manage the Alertmanager Config Secret's lifecycle - # Only used Alertmanager is deployed and alertmanager.alertmanagerSpec.useExistingSecret=false - # - image: - repository: rancher/rancher-agent - tag: v2.5.7 - pullPolicy: IfNotPresent - - securityContext: - runAsNonRoot: true - runAsUser: 1000 - - annotations: {} - - ## Configuration for creating an Ingress that will map to each Alertmanager replica service - ## alertmanager.servicePerReplica must be enabled - ## - ingressPerReplica: - enabled: false - - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - - annotations: {} - labels: {} - - ## Final form of the hostname for each per replica ingress is - ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }} - ## - ## Prefix for the per replica ingress that will have `-$replicaNumber` - ## appended to the end - hostPrefix: "" - ## Domain that will be used for the per replica ingress - hostDomain: "" - - ## Paths to use for ingress rules - ## - paths: [] - # - / - - ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) - ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types - # pathType: ImplementationSpecific - - ## Secret name containing the TLS certificate for alertmanager per replica ingress - ## Secret must be manually created in the namespace - tlsSecretName: "" - - ## Separated secret for each per replica Ingress. Can be used together with cert-manager - ## - tlsSecretPerReplica: - enabled: false - ## Final form of the secret for each per replica ingress is - ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }} - ## - prefix: "alertmanager" - - ## Configuration for Alertmanager service - ## - service: - annotations: {} - labels: {} - clusterIP: "" - - ## Port for Alertmanager Service to listen on - ## - port: 9093 - ## To be used with a proxy extraContainer port - ## - targetPort: 9093 - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 30903 - ## List of IP addresses at which the Prometheus server service is available - ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips - ## - - ## Additional ports to open for Alertmanager service - additionalPorts: [] - - externalIPs: [] - loadBalancerIP: "" - loadBalancerSourceRanges: [] - ## Service type - ## - type: ClusterIP - - ## Configuration for creating a separate Service for each statefulset Alertmanager replica - ## - servicePerReplica: - enabled: false - annotations: {} - - ## Port for Alertmanager Service per replica to listen on - ## - port: 9093 - - ## To be used with a proxy extraContainer port - targetPort: 9093 - - ## Port to expose on each node - ## Only used if servicePerReplica.type is 'NodePort' - ## - nodePort: 30904 - - ## Loadbalancer source IP ranges - ## Only used if servicePerReplica.type is "LoadBalancer" - loadBalancerSourceRanges: [] - ## Service type - ## - type: ClusterIP - - ## If true, create a serviceMonitor for alertmanager - ## - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - selfMonitor: true - - ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. - scheme: "" - - ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. - ## Of type: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#tlsconfig - tlsConfig: {} - - bearerTokenFile: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Settings affecting alertmanagerSpec - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerspec - ## - alertmanagerSpec: - ## Standard object’s metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata - ## Metadata Labels and Annotations gets propagated to the Alertmanager pods. - ## - podMetadata: {} - - ## Image of Alertmanager - ## - image: - repository: rancher/mirrored-prom-alertmanager - tag: v0.21.0 - sha: "" - - ## If true then the user will be responsible to provide a secret with alertmanager configuration - ## So when true the config part will be ignored (including templateFiles) and the one in the secret will be used - ## - useExistingSecret: false - - ## Secrets is a list of Secrets in the same namespace as the Alertmanager object, which shall be mounted into the - ## Alertmanager Pods. The Secrets are mounted into /etc/alertmanager/secrets/. - ## - secrets: [] - - ## ConfigMaps is a list of ConfigMaps in the same namespace as the Alertmanager object, which shall be mounted into the Alertmanager Pods. - ## The ConfigMaps are mounted into /etc/alertmanager/configmaps/. - ## - configMaps: [] - - ## ConfigSecret is the name of a Kubernetes Secret in the same namespace as the Alertmanager object, which contains configuration for - ## this Alertmanager instance. Defaults to 'alertmanager-' The secret is mounted into /etc/alertmanager/config. - ## - # configSecret: - - ## AlertmanagerConfigs to be selected to merge and configure Alertmanager with. - ## - alertmanagerConfigSelector: {} - ## Example which selects all alertmanagerConfig resources - ## with label "alertconfig" with values any of "example-config" or "example-config-2" - # alertmanagerConfigSelector: - # matchExpressions: - # - key: alertconfig - # operator: In - # values: - # - example-config - # - example-config-2 - # - ## Example which selects all alertmanagerConfig resources with label "role" set to "example-config" - # alertmanagerConfigSelector: - # matchLabels: - # role: example-config - - ## Namespaces to be selected for AlertmanagerConfig discovery. If nil, only check own namespace. - ## - alertmanagerConfigNamespaceSelector: {} - ## Example which selects all namespaces - ## with label "alertmanagerconfig" with values any of "example-namespace" or "example-namespace-2" - # alertmanagerConfigNamespaceSelector: - # matchExpressions: - # - key: alertmanagerconfig - # operator: In - # values: - # - example-namespace - # - example-namespace-2 - - ## Example which selects all namespaces with label "alertmanagerconfig" set to "enabled" - # alertmanagerConfigNamespaceSelector: - # matchLabels: - # alertmanagerconfig: enabled - - ## Define Log Format - # Use logfmt (default) or json logging - logFormat: logfmt - - ## Log level for Alertmanager to be configured with. - ## - logLevel: info - - ## Size is the expected size of the alertmanager cluster. The controller will eventually make the size of the - ## running cluster equal to the expected size. - replicas: 1 - - ## Time duration Alertmanager shall retain data for. Default is '120h', and must match the regular expression - ## [0-9]+(ms|s|m|h) (milliseconds seconds minutes hours). - ## - retention: 120h - - ## Storage is the definition of how storage will be used by the Alertmanager instances. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md - ## - storage: {} - # volumeClaimTemplate: - # spec: - # storageClassName: gluster - # accessModes: ["ReadWriteOnce"] - # resources: - # requests: - # storage: 50Gi - # selector: {} - - - ## The external URL the Alertmanager instances will be available under. This is necessary to generate correct URLs. This is necessary if Alertmanager is not served from root of a DNS name. string false - ## - externalUrl: - - ## The route prefix Alertmanager registers HTTP handlers for. This is useful, if using ExternalURL and a proxy is rewriting HTTP routes of a request, and the actual ExternalURL is still true, - ## but the server serves requests under a different route prefix. For example for use with kubectl proxy. - ## - routePrefix: / - - ## If set to true all actions on the underlying managed objects are not going to be performed, except for delete actions. - ## - paused: false - - ## Define which Nodes the Pods are scheduled on. - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - - ## Define resources requests and limits for single Pods. - ## ref: https://kubernetes.io/docs/user-guide/compute-resources/ - ## - resources: - limits: - memory: 500Mi - cpu: 1000m - requests: - memory: 100Mi - cpu: 100m - - ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. - ## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. - ## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. - ## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. - ## - podAntiAffinity: "" - - ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity. - ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone - ## - podAntiAffinityTopologyKey: kubernetes.io/hostname - - ## Assign custom affinity rules to the alertmanager instance - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ - ## - affinity: {} - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: kubernetes.io/e2e-az-name - # operator: In - # values: - # - e2e-az1 - # - e2e-az2 - - ## If specified, the pod's tolerations. - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - - ## If specified, the pod's topology spread constraints. - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ - ## - topologySpreadConstraints: [] - # - maxSkew: 1 - # topologyKey: topology.kubernetes.io/zone - # whenUnsatisfiable: DoNotSchedule - # labelSelector: - # matchLabels: - # app: alertmanager - - ## SecurityContext holds pod-level security attributes and common container settings. - ## This defaults to non root user with uid 1000 and gid 2000. *v1.PodSecurityContext false - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ - ## - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - - ## ListenLocal makes the Alertmanager server listen on loopback, so that it does not bind against the Pod IP. - ## Note this is only for the Alertmanager UI, not the gossip communication. - ## - listenLocal: false - - ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to an Alertmanager pod. - ## - containers: [] - - # Additional volumes on the output StatefulSet definition. - volumes: [] - - # Additional VolumeMounts on the output StatefulSet definition. - volumeMounts: [] - - ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes - ## (permissions, dir tree) on mounted volumes before starting prometheus - initContainers: [] - - ## Priority class assigned to the Pods - ## - priorityClassName: "" - - ## AdditionalPeers allows injecting a set of additional Alertmanagers to peer with to form a highly available cluster. - ## - additionalPeers: [] - - ## PortName to use for Alert Manager. - ## - portName: "web" - - ## ClusterAdvertiseAddress is the explicit address to advertise in cluster. Needs to be provided for non RFC1918 [1] (public) addresses. [1] RFC1918: https://tools.ietf.org/html/rfc1918 - ## - clusterAdvertiseAddress: false - - ## ForceEnableClusterMode ensures Alertmanager does not deactivate the cluster mode when running with a single replica. - ## Use case is e.g. spanning an Alertmanager cluster across Kubernetes clusters with a single replica in each. - forceEnableClusterMode: false - - -## Using default values from https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml -## -grafana: - enabled: true - namespaceOverride: "" - - ## Grafana's primary configuration - ## NOTE: values in map will be converted to ini format - ## ref: http://docs.grafana.org/installation/configuration/ - ## - grafana.ini: - users: - auto_assign_org_role: Viewer - auth: - disable_login_form: false - auth.anonymous: - enabled: true - org_role: Viewer - auth.basic: - enabled: false - dashboards: - # Modify this value to change the default dashboard shown on the main Grafana page - default_home_dashboard_path: /tmp/dashboards/rancher-default-home.json - security: - # Required to embed dashboards in Rancher Cluster Overview Dashboard on Cluster Explorer - allow_embedding: true - - deploymentStrategy: - type: Recreate - - ## Deploy default dashboards. - ## - defaultDashboardsEnabled: true - - # Additional options for defaultDashboards - defaultDashboards: - # The default namespace to place defaultDashboards within - namespace: cattle-dashboards - # Whether to create the default namespace as a Helm managed namespace or use an existing namespace - # If false, the defaultDashboards.namespace will be created as a Helm managed namespace - useExistingNamespace: false - # Whether the Helm managed namespace created by this chart should be left behind on a Helm uninstall - # If you place other dashboards in this namespace, then they will be deleted on a helm uninstall - # Ignore if useExistingNamespace is true - cleanupOnUninstall: false - - adminPassword: prom-operator - - ingress: - ## If true, Grafana Ingress will be created - ## - enabled: false - - ## Annotations for Grafana Ingress - ## - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - - ## Labels to be added to the Ingress - ## - labels: {} - - ## Hostnames. - ## Must be provided if Ingress is enable. - ## - # hosts: - # - grafana.domain.com - hosts: [] - - ## Path for grafana ingress - path: / - - ## TLS configuration for grafana Ingress - ## Secret must be manually created in the namespace - ## - tls: [] - # - secretName: grafana-general-tls - # hosts: - # - grafana.example.com - - sidecar: - dashboards: - enabled: true - label: grafana_dashboard - searchNamespace: cattle-dashboards - - ## Annotations for Grafana dashboard configmaps - ## - annotations: {} - multicluster: false - datasources: - enabled: true - defaultDatasourceEnabled: true - - # If not defined, will use prometheus.prometheusSpec.scrapeInterval or its default - # defaultDatasourceScrapeInterval: 15s - - ## Annotations for Grafana datasource configmaps - ## - annotations: {} - - ## Create datasource for each Pod of Prometheus StatefulSet; - ## this uses headless service `prometheus-operated` which is - ## created by Prometheus Operator - ## ref: https://git.io/fjaBS - createPrometheusReplicasDatasources: false - label: grafana_datasource - - extraConfigmapMounts: [] - # - name: certs-configmap - # mountPath: /etc/grafana/ssl/ - # configMap: certs-configmap - # readOnly: true - - ## Configure additional grafana datasources (passed through tpl) - ## ref: http://docs.grafana.org/administration/provisioning/#datasources - additionalDataSources: [] - # - name: prometheus-sample - # access: proxy - # basicAuth: true - # basicAuthPassword: pass - # basicAuthUser: daco - # editable: false - # jsonData: - # tlsSkipVerify: true - # orgId: 1 - # type: prometheus - # url: https://{{ printf "%s-prometheus.svc" .Release.Name }}:9090 - # version: 1 - - ## Passed to grafana subchart and used by servicemonitor below - ## - service: - portName: nginx-http - ## Port for Grafana Service to listen on - ## - port: 80 - ## To be used with a proxy extraContainer port - ## - targetPort: 8080 - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 30950 - ## Service type - ## - type: ClusterIP - - proxy: - image: - repository: rancher/mirrored-library-nginx - tag: 1.19.9-alpine - - ## Enable an Specify container in extraContainers. This is meant to allow adding an authentication proxy to a grafana pod - extraContainers: | - - name: grafana-proxy - args: - - nginx - - -g - - daemon off; - - -c - - /nginx/nginx.conf - image: "{{ template "system_default_registry" . }}{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }}" - ports: - - containerPort: 8080 - name: nginx-http - protocol: TCP - volumeMounts: - - mountPath: /nginx - name: grafana-nginx - - mountPath: /var/cache/nginx - name: nginx-home - securityContext: - runAsUser: 101 - runAsGroup: 101 - - ## Volumes that can be used in containers - extraContainerVolumes: - - name: nginx-home - emptyDir: {} - - name: grafana-nginx - configMap: - name: grafana-nginx-proxy-config - items: - - key: nginx.conf - mode: 438 - path: nginx.conf - - ## If true, create a serviceMonitor for grafana - ## - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - selfMonitor: true - - # Path to use for scraping metrics. Might be different if server.root_url is set - # in grafana.ini - path: "/metrics" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - resources: - limits: - memory: 200Mi - cpu: 200m - requests: - memory: 100Mi - cpu: 100m - -## Component scraping the kube api server -## -kubeApiServer: - enabled: true - tlsConfig: - serverName: kubernetes - insecureSkipVerify: false - - ## If your API endpoint address is not reachable (as in AKS) you can replace it with the kubernetes service - ## - relabelings: [] - # - sourceLabels: - # - __meta_kubernetes_namespace - # - __meta_kubernetes_service_name - # - __meta_kubernetes_endpoint_port_name - # action: keep - # regex: default;kubernetes;https - # - targetLabel: __address__ - # replacement: kubernetes.default.svc:443 - - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - jobLabel: component - selector: - matchLabels: - component: apiserver - provider: kubernetes - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - -## Component scraping the kubelet and kubelet-hosted cAdvisor -## -kubelet: - enabled: true - namespace: kube-system - - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## Enable scraping the kubelet over https. For requirements to enable this see - ## https://github.com/prometheus-operator/prometheus-operator/issues/926 - ## - https: true - - ## Enable scraping /metrics/cadvisor from kubelet's service - ## - cAdvisor: true - - ## Enable scraping /metrics/probes from kubelet's service - ## - probes: true - - ## Enable scraping /metrics/resource from kubelet's service - ## This is disabled by default because container metrics are already exposed by cAdvisor - ## - resource: false - # From kubernetes 1.18, /metrics/resource/v1alpha1 renamed to /metrics/resource - resourcePath: "/metrics/resource/v1alpha1" - ## Metric relabellings to apply to samples before ingestion - ## - cAdvisorMetricRelabelings: [] - # - sourceLabels: [__name__, image] - # separator: ; - # regex: container_([a-z_]+); - # replacement: $1 - # action: drop - # - sourceLabels: [__name__] - # separator: ; - # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) - # replacement: $1 - # action: drop - - ## Metric relabellings to apply to samples before ingestion - ## - probesMetricRelabelings: [] - # - sourceLabels: [__name__, image] - # separator: ; - # regex: container_([a-z_]+); - # replacement: $1 - # action: drop - # - sourceLabels: [__name__] - # separator: ; - # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) - # replacement: $1 - # action: drop - - # relabel configs to apply to samples before ingestion. - # metrics_path is required to match upstream rules and charts - ## - cAdvisorRelabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - probesRelabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - resourceRelabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - metricRelabelings: [] - # - sourceLabels: [__name__, image] - # separator: ; - # regex: container_([a-z_]+); - # replacement: $1 - # action: drop - # - sourceLabels: [__name__] - # separator: ; - # regex: container_(network_tcp_usage_total|network_udp_usage_total|tasks_state|cpu_load_average_10s) - # replacement: $1 - # action: drop - - # relabel configs to apply to samples before ingestion. - # metrics_path is required to match upstream rules and charts - ## - relabelings: - - sourceLabels: [__metrics_path__] - targetLabel: metrics_path - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Component scraping the kube controller manager -## -kubeControllerManager: - enabled: false - - ## If your kube controller manager is not deployed as a pod, specify IPs it can be found on - ## - endpoints: [] - # - 10.141.4.22 - # - 10.141.4.23 - # - 10.141.4.24 - - ## If using kubeControllerManager.endpoints only the port and targetPort are used - ## - service: - enabled: true - port: 10252 - targetPort: 10252 - # selector: - # component: kube-controller-manager - - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## Enable scraping kube-controller-manager over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks - ## - https: false - - # Skip TLS certificate validation when scraping - insecureSkipVerify: null - - # Name of the server to use when validating TLS certificate - serverName: null - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Component scraping coreDns. Use either this or kubeDns -## -coreDns: - enabled: true - service: - port: 9153 - targetPort: 9153 - # selector: - # k8s-app: kube-dns - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Component scraping kubeDns. Use either this or coreDns -## -kubeDns: - enabled: false - service: - dnsmasq: - port: 10054 - targetPort: 10054 - skydns: - port: 10055 - targetPort: 10055 - # selector: - # k8s-app: kube-dns - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - dnsmasqMetricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - dnsmasqRelabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Component scraping etcd -## -kubeEtcd: - enabled: false - - ## If your etcd is not deployed as a pod, specify IPs it can be found on - ## - endpoints: [] - # - 10.141.4.22 - # - 10.141.4.23 - # - 10.141.4.24 - - ## Etcd service. If using kubeEtcd.endpoints only the port and targetPort are used - ## - service: - enabled: true - port: 2379 - targetPort: 2379 - # selector: - # component: etcd - - ## Configure secure access to the etcd cluster by loading a secret into prometheus and - ## specifying security configuration below. For example, with a secret named etcd-client-cert - ## - ## serviceMonitor: - ## scheme: https - ## insecureSkipVerify: false - ## serverName: localhost - ## caFile: /etc/prometheus/secrets/etcd-client-cert/etcd-ca - ## certFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client - ## keyFile: /etc/prometheus/secrets/etcd-client-cert/etcd-client-key - ## - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - scheme: http - insecureSkipVerify: false - serverName: "" - caFile: "" - certFile: "" - keyFile: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - -## Component scraping kube scheduler -## -kubeScheduler: - enabled: false - - ## If your kube scheduler is not deployed as a pod, specify IPs it can be found on - ## - endpoints: [] - # - 10.141.4.22 - # - 10.141.4.23 - # - 10.141.4.24 - - ## If using kubeScheduler.endpoints only the port and targetPort are used - ## - service: - enabled: true - port: 10251 - targetPort: 10251 - # selector: - # component: kube-scheduler - - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - ## Enable scraping kube-scheduler over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks - ## - https: false - - ## Skip TLS certificate validation when scraping - insecureSkipVerify: null - - ## Name of the server to use when validating TLS certificate - serverName: null - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - -## Component scraping kube proxy -## -kubeProxy: - enabled: false - - ## If your kube proxy is not deployed as a pod, specify IPs it can be found on - ## - endpoints: [] - # - 10.141.4.22 - # - 10.141.4.23 - # - 10.141.4.24 - - service: - enabled: true - port: 10249 - targetPort: 10249 - # selector: - # k8s-app: kube-proxy - - serviceMonitor: - enabled: true - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## Enable scraping kube-proxy over https. - ## Requires proper certs (not self-signed) and delegated authentication/authorization checks - ## - https: false - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - -## Component scraping kube state metrics -## -kubeStateMetrics: - enabled: true - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - ## Override serviceMonitor selector - ## - selectorOverride: {} - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Configuration for kube-state-metrics subchart -## -kube-state-metrics: - namespaceOverride: "" - rbac: - create: true - podSecurityPolicy: - enabled: true - resources: - limits: - cpu: 100m - memory: 200Mi - requests: - cpu: 100m - memory: 130Mi - -## Deploy node exporter as a daemonset to all nodes -## -nodeExporter: - enabled: true - - ## Use the value configured in prometheus-node-exporter.podLabels - ## - jobLabel: jobLabel - - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - - ## How long until a scrape request times out. If not set, the Prometheus default scape timeout is used. - ## - scrapeTimeout: "" - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - sourceLabels: [__name__] - # separator: ; - # regex: ^node_mountstats_nfs_(event|operations|transport)_.+ - # replacement: $1 - # action: drop - - ## relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - -## Configuration for prometheus-node-exporter subchart -## -prometheus-node-exporter: - namespaceOverride: "" - podLabels: - ## Add the 'node-exporter' label to be used by serviceMonitor to match standard common usage in rules and grafana dashboards - ## - jobLabel: node-exporter - extraArgs: - - --collector.filesystem.ignored-mount-points=^/(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)($|/) - - --collector.filesystem.ignored-fs-types=^(autofs|binfmt_misc|bpf|cgroup2?|configfs|debugfs|devpts|devtmpfs|fusectl|hugetlbfs|iso9660|mqueue|nsfs|overlay|proc|procfs|pstore|rpc_pipefs|securityfs|selinuxfs|squashfs|sysfs|tracefs)$ - service: - port: 9796 - targetPort: 9796 - resources: - limits: - cpu: 200m - memory: 50Mi - requests: - cpu: 100m - memory: 30Mi - -## Manages Prometheus and Alertmanager components -## -prometheusOperator: - enabled: true - - ## Prometheus-Operator v0.39.0 and later support TLS natively. - ## - tls: - enabled: true - # Value must match version names from https://golang.org/pkg/crypto/tls/#pkg-constants - tlsMinVersion: VersionTLS13 - # Users who are deploying this chart in GKE private clusters will need to add firewall rules to expose this port for admissions webhooks - internalPort: 8443 - - ## Admission webhook support for PrometheusRules resources added in Prometheus Operator 0.30 can be enabled to prevent incorrectly formatted - ## rules from making their way into prometheus and potentially preventing the container from starting - admissionWebhooks: - failurePolicy: Fail - enabled: true - ## A PEM encoded CA bundle which will be used to validate the webhook's server certificate. - ## If unspecified, system trust roots on the apiserver are used. - caBundle: "" - ## If enabled, generate a self-signed certificate, then patch the webhook configurations with the generated data. - ## On chart upgrades (or if the secret exists) the cert will not be re-generated. You can use this to provide your own - ## certs ahead of time if you wish. - ## - patch: - enabled: true - image: - repository: rancher/mirrored-jettech-kube-webhook-certgen - tag: v1.5.0 - sha: "" - pullPolicy: IfNotPresent - resources: {} - ## Provide a priority class name to the webhook patching job - ## - priorityClassName: "" - podAnnotations: {} - nodeSelector: {} - affinity: {} - tolerations: [] - # Use certmanager to generate webhook certs - certManager: - enabled: false - # issuerRef: - # name: "issuer" - # kind: "ClusterIssuer" - - ## Namespaces to scope the interaction of the Prometheus Operator and the apiserver (allow list). - ## This is mutually exclusive with denyNamespaces. Setting this to an empty object will disable the configuration - ## - namespaces: {} - # releaseNamespace: true - # additional: - # - kube-system - - ## Namespaces not to scope the interaction of the Prometheus Operator (deny list). - ## - denyNamespaces: [] - - ## Filter namespaces to look for prometheus-operator custom resources - ## - alertmanagerInstanceNamespaces: [] - prometheusInstanceNamespaces: [] - thanosRulerInstanceNamespaces: [] - - ## The clusterDomain value will be added to the cluster.peer option of the alertmanager. - ## Without this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated:9094 (default value) - ## With this specified option cluster.peer will have value alertmanager-monitoring-alertmanager-0.alertmanager-operated.namespace.svc.cluster-domain:9094 - ## - # clusterDomain: "cluster.local" - - ## Service account for Alertmanager to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - create: true - name: "" - - ## Configuration for Prometheus operator service - ## - service: - annotations: {} - labels: {} - clusterIP: "" - - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 30080 - - nodePortTls: 30443 - - ## Additional ports to open for Prometheus service - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#multi-port-services - ## - additionalPorts: [] - - ## Loadbalancer IP - ## Only use if service.type is "LoadBalancer" - ## - loadBalancerIP: "" - loadBalancerSourceRanges: [] - - ## Service type - ## NodePort, ClusterIP, LoadBalancer - ## - type: ClusterIP - - ## List of IP addresses at which the Prometheus server service is available - ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips - ## - externalIPs: [] - - ## Labels to add to the operator pod - ## - podLabels: {} - - ## Annotations to add to the operator pod - ## - podAnnotations: {} - - ## Assign a PriorityClassName to pods if set - # priorityClassName: "" - - ## Define Log Format - # Use logfmt (default) or json logging - # logFormat: logfmt - - ## Decrease log verbosity to errors only - # logLevel: error - - ## If true, the operator will create and maintain a service for scraping kubelets - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/helm/prometheus-operator/README.md - ## - kubeletService: - enabled: true - namespace: kube-system - - ## Create a servicemonitor for the operator - ## - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - ## Scrape timeout. If not set, the Prometheus default scrape timeout is used. - scrapeTimeout: "" - selfMonitor: true - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Resource limits & requests - ## - resources: - limits: - cpu: 200m - memory: 500Mi - requests: - cpu: 100m - memory: 100Mi - - # Required for use in managed kubernetes clusters (such as AWS EKS) with custom CNI (such as calico), - # because control-plane managed by AWS cannot communicate with pods' IP CIDR and admission webhooks are not working - ## - hostNetwork: false - - ## Define which Nodes the Pods are scheduled on. - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - - ## Tolerations for use with node taints - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - - ## Assign custom affinity rules to the prometheus operator - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ - ## - affinity: {} - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: kubernetes.io/e2e-az-name - # operator: In - # values: - # - e2e-az1 - # - e2e-az2 - dnsConfig: {} - # nameservers: - # - 1.2.3.4 - # searches: - # - ns1.svc.cluster-domain.example - # - my.dns.search.suffix - # options: - # - name: ndots - # value: "2" - # - name: edns0 - securityContext: - fsGroup: 65534 - runAsGroup: 65534 - runAsNonRoot: true - runAsUser: 65534 - - ## Prometheus-operator image - ## - image: - repository: rancher/mirrored-prometheus-operator-prometheus-operator - tag: v0.46.0 - sha: "" - pullPolicy: IfNotPresent - - ## Prometheus image to use for prometheuses managed by the operator - ## - # prometheusDefaultBaseImage: quay.io/prometheus/prometheus - - ## Alertmanager image to use for alertmanagers managed by the operator - ## - # alertmanagerDefaultBaseImage: quay.io/prometheus/alertmanager - - ## Prometheus-config-reloader image to use for config and rule reloading - ## - prometheusConfigReloaderImage: - repository: rancher/mirrored-prometheus-operator-prometheus-config-reloader - tag: v0.46.0 - sha: "" - - ## Set the prometheus config reloader side-car CPU limit - ## - configReloaderCpu: 100m - - ## Set the prometheus config reloader side-car memory limit - ## - configReloaderMemory: 50Mi - - ## Set a Field Selector to filter watched secrets - ## - secretFieldSelector: "" - -## Deploy a Prometheus instance -## -prometheus: - - enabled: true - - ## Annotations for Prometheus - ## - annotations: {} - - ## Service account for Prometheuses to use. - ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/ - ## - serviceAccount: - create: true - name: "" - - # Service for thanos service discovery on sidecar - # Enable this can make Thanos Query can use - # `--store=dnssrv+_grpc._tcp.${kube-prometheus-stack.fullname}-thanos-discovery.${namespace}.svc.cluster.local` to discovery - # Thanos sidecar on prometheus nodes - # (Please remember to change ${kube-prometheus-stack.fullname} and ${namespace}. Not just copy and paste!) - thanosService: - enabled: false - annotations: {} - labels: {} - portName: grpc - port: 10901 - targetPort: "grpc" - clusterIP: "None" - - ## Service type - ## - type: ClusterIP - - ## Port to expose on each node - ## - nodePort: 30901 - - ## Service type - ## - type: ClusterIP - - ## Port to expose on each node - ## - nodePort: 30901 - - ## Configuration for Prometheus service - ## - service: - annotations: {} - labels: {} - clusterIP: "" - - ## Port for Prometheus Service to listen on - ## - port: 9090 - - ## To be used with a proxy extraContainer port - targetPort: 8081 - - ## List of IP addresses at which the Prometheus server service is available - ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips - ## - externalIPs: [] - - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 30090 - - ## Loadbalancer IP - ## Only use if service.type is "LoadBalancer" - loadBalancerIP: "" - loadBalancerSourceRanges: [] - ## Service type - ## - type: ClusterIP - - sessionAffinity: "" - - ## Configuration for creating a separate Service for each statefulset Prometheus replica - ## - servicePerReplica: - enabled: false - annotations: {} - - ## Port for Prometheus Service per replica to listen on - ## - port: 9090 - - ## To be used with a proxy extraContainer port - targetPort: 9090 - - ## Port to expose on each node - ## Only used if servicePerReplica.type is 'NodePort' - ## - nodePort: 30091 - - ## Loadbalancer source IP ranges - ## Only used if servicePerReplica.type is "LoadBalancer" - loadBalancerSourceRanges: [] - ## Service type - ## - type: ClusterIP - - ## Configure pod disruption budgets for Prometheus - ## ref: https://kubernetes.io/docs/tasks/run-application/configure-pdb/#specifying-a-poddisruptionbudget - ## This configuration is immutable once created and will require the PDB to be deleted to be changed - ## https://github.com/kubernetes/kubernetes/issues/45398 - ## - podDisruptionBudget: - enabled: false - minAvailable: 1 - maxUnavailable: "" - - # Ingress exposes thanos sidecar outside the cluster - thanosIngress: - enabled: false - - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - - annotations: {} - labels: {} - servicePort: 10901 - - ## Port to expose on each node - ## Only used if service.type is 'NodePort' - ## - nodePort: 30901 - - ## Hosts must be provided if Ingress is enabled. - ## - hosts: [] - # - thanos-gateway.domain.com - - ## Paths to use for ingress rules - ## - paths: [] - # - / - - ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) - ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types - # pathType: ImplementationSpecific - - ## TLS configuration for Thanos Ingress - ## Secret must be manually created in the namespace - ## - tls: [] - # - secretName: thanos-gateway-tls - # hosts: - # - thanos-gateway.domain.com - - ingress: - enabled: false - - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - - annotations: {} - labels: {} - - ## Hostnames. - ## Must be provided if Ingress is enabled. - ## - # hosts: - # - prometheus.domain.com - hosts: [] - - ## Paths to use for ingress rules - one path should match the prometheusSpec.routePrefix - ## - paths: [] - # - / - - ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) - ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types - # pathType: ImplementationSpecific - - ## TLS configuration for Prometheus Ingress - ## Secret must be manually created in the namespace - ## - tls: [] - # - secretName: prometheus-general-tls - # hosts: - # - prometheus.example.com - - ## Configuration for creating an Ingress that will map to each Prometheus replica service - ## prometheus.servicePerReplica must be enabled - ## - ingressPerReplica: - enabled: false - - # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName - # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress - # ingressClassName: nginx - - annotations: {} - labels: {} - - ## Final form of the hostname for each per replica ingress is - ## {{ ingressPerReplica.hostPrefix }}-{{ $replicaNumber }}.{{ ingressPerReplica.hostDomain }} - ## - ## Prefix for the per replica ingress that will have `-$replicaNumber` - ## appended to the end - hostPrefix: "" - ## Domain that will be used for the per replica ingress - hostDomain: "" - - ## Paths to use for ingress rules - ## - paths: [] - # - / - - ## For Kubernetes >= 1.18 you should specify the pathType (determines how Ingress paths should be matched) - ## See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#better-path-matching-with-path-types - # pathType: ImplementationSpecific - - ## Secret name containing the TLS certificate for Prometheus per replica ingress - ## Secret must be manually created in the namespace - tlsSecretName: "" - - ## Separated secret for each per replica Ingress. Can be used together with cert-manager - ## - tlsSecretPerReplica: - enabled: false - ## Final form of the secret for each per replica ingress is - ## {{ tlsSecretPerReplica.prefix }}-{{ $replicaNumber }} - ## - prefix: "prometheus" - - ## Configure additional options for default pod security policy for Prometheus - ## ref: https://kubernetes.io/docs/concepts/policy/pod-security-policy/ - podSecurityPolicy: - allowedCapabilities: [] - allowedHostPaths: [] - volumes: [] - - serviceMonitor: - ## Scrape interval. If not set, the Prometheus default scrape interval is used. - ## - interval: "" - selfMonitor: true - - ## scheme: HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS. - scheme: "" - - ## tlsConfig: TLS configuration to use when scraping the endpoint. For example if using istio mTLS. - ## Of type: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#tlsconfig - tlsConfig: {} - - bearerTokenFile: - - ## metric relabel configs to apply to samples before ingestion. - ## - metricRelabelings: [] - # - action: keep - # regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+' - # sourceLabels: [__name__] - - # relabel configs to apply to samples before ingestion. - ## - relabelings: [] - # - sourceLabels: [__meta_kubernetes_pod_node_name] - # separator: ; - # regex: ^(.*)$ - # targetLabel: nodename - # replacement: $1 - # action: replace - - ## Settings affecting prometheusSpec - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#prometheusspec - ## - prometheusSpec: - ## If true, pass --storage.tsdb.max-block-duration=2h to prometheus. This is already done if using Thanos - ## - disableCompaction: false - ## APIServerConfig - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#apiserverconfig - ## - apiserverConfig: {} - - ## Interval between consecutive scrapes. - ## Defaults to 30s. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/release-0.44/pkg/prometheus/promcfg.go#L180-L183 - ## - scrapeInterval: "" - - ## Number of seconds to wait for target to respond before erroring - ## - scrapeTimeout: "" - - ## Interval between consecutive evaluations. - ## - evaluationInterval: "" - - ## ListenLocal makes the Prometheus server listen on loopback, so that it does not bind against the Pod IP. - ## - listenLocal: false - - ## EnableAdminAPI enables Prometheus the administrative HTTP API which includes functionality such as deleting time series. - ## This is disabled by default. - ## ref: https://prometheus.io/docs/prometheus/latest/querying/api/#tsdb-admin-apis - ## - enableAdminAPI: false - - ## Image of Prometheus. - ## - image: - repository: rancher/mirrored-prometheus-prometheus - tag: v2.24.0 - sha: "" - - ## Tolerations for use with node taints - ## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ - ## - tolerations: [] - # - key: "key" - # operator: "Equal" - # value: "value" - # effect: "NoSchedule" - - ## If specified, the pod's topology spread constraints. - ## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ - ## - topologySpreadConstraints: [] - # - maxSkew: 1 - # topologyKey: topology.kubernetes.io/zone - # whenUnsatisfiable: DoNotSchedule - # labelSelector: - # matchLabels: - # app: prometheus - - ## Alertmanagers to which alerts will be sent - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#alertmanagerendpoints - ## - ## Default configuration will connect to the alertmanager deployed as part of this release - ## - alertingEndpoints: [] - # - name: "" - # namespace: "" - # port: http - # scheme: http - # pathPrefix: "" - # tlsConfig: {} - # bearerTokenFile: "" - # apiVersion: v2 - - ## External labels to add to any time series or alerts when communicating with external systems - ## - externalLabels: {} - - ## Name of the external label used to denote replica name - ## - replicaExternalLabelName: "" - - ## If true, the Operator won't add the external label used to denote replica name - ## - replicaExternalLabelNameClear: false - - ## Name of the external label used to denote Prometheus instance name - ## - prometheusExternalLabelName: "" - - ## If true, the Operator won't add the external label used to denote Prometheus instance name - ## - prometheusExternalLabelNameClear: false - - ## External URL at which Prometheus will be reachable. - ## - externalUrl: "" - - ## Ignore NamespaceSelector settings from the PodMonitor and ServiceMonitor configs - ## If true, PodMonitors and ServiceMonitors can only discover Pods and Services within the namespace they are deployed into - ## - ignoreNamespaceSelectors: false - - ## Define which Nodes the Pods are scheduled on. - ## ref: https://kubernetes.io/docs/user-guide/node-selection/ - ## - nodeSelector: {} - - ## Secrets is a list of Secrets in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. - ## The Secrets are mounted into /etc/prometheus/secrets/. Secrets changes after initial creation of a Prometheus object are not - ## reflected in the running Pods. To change the secrets mounted into the Prometheus Pods, the object must be deleted and recreated - ## with the new list of secrets. - ## - secrets: [] - - ## ConfigMaps is a list of ConfigMaps in the same namespace as the Prometheus object, which shall be mounted into the Prometheus Pods. - ## The ConfigMaps are mounted into /etc/prometheus/configmaps/. - ## - configMaps: [] - - ## QuerySpec defines the query command line flags when starting Prometheus. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#queryspec - ## - query: {} - - ## Namespaces to be selected for PrometheusRules discovery. - ## If nil, select own namespace. Namespaces to be selected for ServiceMonitor discovery. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - ruleNamespaceSelector: {} - - ## If true, a nil or {} value for prometheus.prometheusSpec.ruleSelector will cause the - ## prometheus resource to be created with selectors based on values in the helm deployment, - ## which will also match the PrometheusRule resources created - ## - ruleSelectorNilUsesHelmValues: false - - ## PrometheusRules to be selected for target discovery. - ## If {}, select all PrometheusRules - ## - ruleSelector: {} - ## Example which select all PrometheusRules resources - ## with label "prometheus" with values any of "example-rules" or "example-rules-2" - # ruleSelector: - # matchExpressions: - # - key: prometheus - # operator: In - # values: - # - example-rules - # - example-rules-2 - # - ## Example which select all PrometheusRules resources with label "role" set to "example-rules" - # ruleSelector: - # matchLabels: - # role: example-rules - - ## If true, a nil or {} value for prometheus.prometheusSpec.serviceMonitorSelector will cause the - ## prometheus resource to be created with selectors based on values in the helm deployment, - ## which will also match the servicemonitors created - ## - serviceMonitorSelectorNilUsesHelmValues: false - - ## ServiceMonitors to be selected for target discovery. - ## If {}, select all ServiceMonitors - ## - serviceMonitorSelector: {} - ## Example which selects ServiceMonitors with label "prometheus" set to "somelabel" - # serviceMonitorSelector: - # matchLabels: - # prometheus: somelabel - - ## Namespaces to be selected for ServiceMonitor discovery. - ## - serviceMonitorNamespaceSelector: {} - ## Example which selects ServiceMonitors in namespaces with label "prometheus" set to "somelabel" - # serviceMonitorNamespaceSelector: - # matchLabels: - # prometheus: somelabel - - ## If true, a nil or {} value for prometheus.prometheusSpec.podMonitorSelector will cause the - ## prometheus resource to be created with selectors based on values in the helm deployment, - ## which will also match the podmonitors created - ## - podMonitorSelectorNilUsesHelmValues: false - - ## PodMonitors to be selected for target discovery. - ## If {}, select all PodMonitors - ## - podMonitorSelector: {} - ## Example which selects PodMonitors with label "prometheus" set to "somelabel" - # podMonitorSelector: - # matchLabels: - # prometheus: somelabel - - ## Namespaces to be selected for PodMonitor discovery. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - podMonitorNamespaceSelector: {} - - ## If true, a nil or {} value for prometheus.prometheusSpec.probeSelector will cause the - ## prometheus resource to be created with selectors based on values in the helm deployment, - ## which will also match the probes created - ## - probeSelectorNilUsesHelmValues: true - - ## Probes to be selected for target discovery. - ## If {}, select all Probes - ## - probeSelector: {} - ## Example which selects Probes with label "prometheus" set to "somelabel" - # probeSelector: - # matchLabels: - # prometheus: somelabel - - ## Namespaces to be selected for Probe discovery. - ## See https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#namespaceselector for usage - ## - probeNamespaceSelector: {} - - ## How long to retain metrics - ## - retention: 10d - - ## Maximum size of metrics - ## - retentionSize: "" - - ## Enable compression of the write-ahead log using Snappy. - ## - walCompression: false - - ## If true, the Operator won't process any Prometheus configuration changes - ## - paused: false - - ## Number of replicas of each shard to deploy for a Prometheus deployment. - ## Number of replicas multiplied by shards is the total number of Pods created. - ## - replicas: 1 - - ## EXPERIMENTAL: Number of shards to distribute targets onto. - ## Number of replicas multiplied by shards is the total number of Pods created. - ## Note that scaling down shards will not reshard data onto remaining instances, it must be manually moved. - ## Increasing shards will not reshard data either but it will continue to be available from the same instances. - ## To query globally use Thanos sidecar and Thanos querier or remote write data to a central location. - ## Sharding is done on the content of the `__address__` target meta-label. - ## - shards: 1 - - ## Log level for Prometheus be configured in - ## - logLevel: info - - ## Log format for Prometheus be configured in - ## - logFormat: logfmt - - ## Prefix used to register routes, overriding externalUrl route. - ## Useful for proxies that rewrite URLs. - ## - routePrefix: / - - ## Standard object’s metadata. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/api-conventions.md#metadata - ## Metadata Labels and Annotations gets propagated to the prometheus pods. - ## - podMetadata: {} - # labels: - # app: prometheus - # k8s-app: prometheus - - ## Pod anti-affinity can prevent the scheduler from placing Prometheus replicas on the same node. - ## The default value "soft" means that the scheduler should *prefer* to not schedule two replica pods onto the same node but no guarantee is provided. - ## The value "hard" means that the scheduler is *required* to not schedule two replica pods onto the same node. - ## The value "" will disable pod anti-affinity so that no anti-affinity rules will be configured. - podAntiAffinity: "" - - ## If anti-affinity is enabled sets the topologyKey to use for anti-affinity. - ## This can be changed to, for example, failure-domain.beta.kubernetes.io/zone - ## - podAntiAffinityTopologyKey: kubernetes.io/hostname - - ## Assign custom affinity rules to the prometheus instance - ## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ - ## - affinity: {} - # nodeAffinity: - # requiredDuringSchedulingIgnoredDuringExecution: - # nodeSelectorTerms: - # - matchExpressions: - # - key: kubernetes.io/e2e-az-name - # operator: In - # values: - # - e2e-az1 - # - e2e-az2 - - ## 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 - - ## 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 - - ## Enable/Disable Grafana dashboards provisioning for prometheus remote write feature - remoteWriteDashboards: false - - ## Resource limits & requests - ## - resources: - limits: - memory: 1500Mi - cpu: 1000m - requests: - memory: 750Mi - cpu: 750m - - ## Prometheus StorageSpec for persistent data - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/user-guides/storage.md - ## - storageSpec: {} - ## Using PersistentVolumeClaim - ## - # volumeClaimTemplate: - # spec: - # storageClassName: gluster - # accessModes: ["ReadWriteOnce"] - # resources: - # requests: - # storage: 50Gi - # selector: {} - - ## Using tmpfs volume - ## - # emptyDir: - # medium: Memory - - # Additional volumes on the output StatefulSet definition. - volumes: - - name: nginx-home - emptyDir: {} - - name: prometheus-nginx - configMap: - name: prometheus-nginx-proxy-config - defaultMode: 438 - - # Additional VolumeMounts on the output StatefulSet definition. - volumeMounts: [] - - ## AdditionalScrapeConfigs allows specifying additional Prometheus scrape configurations. Scrape configurations - ## are appended to the configurations generated by the Prometheus Operator. Job configurations must have the form - ## as specified in the official Prometheus documentation: - ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config. As scrape configs are - ## appended, the user is responsible to make sure it is valid. Note that using this feature may expose the possibility - ## to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible - ## scrape configs are going to break Prometheus after the upgrade. - ## - ## The scrape configuration example below will find master nodes, provided they have the name .*mst.*, relabel the - ## port to 2379 and allow etcd scraping provided it is running on all Kubernetes master nodes - ## - additionalScrapeConfigs: [] - # - job_name: kube-etcd - # kubernetes_sd_configs: - # - role: node - # scheme: https - # tls_config: - # ca_file: /etc/prometheus/secrets/etcd-client-cert/etcd-ca - # cert_file: /etc/prometheus/secrets/etcd-client-cert/etcd-client - # key_file: /etc/prometheus/secrets/etcd-client-cert/etcd-client-key - # relabel_configs: - # - action: labelmap - # regex: __meta_kubernetes_node_label_(.+) - # - source_labels: [__address__] - # action: replace - # targetLabel: __address__ - # regex: ([^:;]+):(\d+) - # replacement: ${1}:2379 - # - source_labels: [__meta_kubernetes_node_name] - # action: keep - # regex: .*mst.* - # - source_labels: [__meta_kubernetes_node_name] - # action: replace - # targetLabel: node - # regex: (.*) - # replacement: ${1} - # metric_relabel_configs: - # - regex: (kubernetes_io_hostname|failure_domain_beta_kubernetes_io_region|beta_kubernetes_io_os|beta_kubernetes_io_arch|beta_kubernetes_io_instance_type|failure_domain_beta_kubernetes_io_zone) - # action: labeldrop - - ## If additional scrape configurations are already deployed in a single secret file you can use this section. - ## Expected values are the secret name and key - ## Cannot be used with additionalScrapeConfigs - additionalScrapeConfigsSecret: {} - # enabled: false - # name: - # key: - - ## additionalPrometheusSecretsAnnotations allows to add annotations to the kubernetes secret. This can be useful - ## when deploying via spinnaker to disable versioning on the secret, strategy.spinnaker.io/versioned: 'false' - additionalPrometheusSecretsAnnotations: {} - - ## AdditionalAlertManagerConfigs allows for manual configuration of alertmanager jobs in the form as specified - ## in the official Prometheus documentation https://prometheus.io/docs/prometheus/latest/configuration/configuration/#. - ## AlertManager configurations specified are appended to the configurations generated by the Prometheus Operator. - ## As AlertManager configs are appended, the user is responsible to make sure it is valid. Note that using this - ## feature may expose the possibility to break upgrades of Prometheus. It is advised to review Prometheus release - ## notes to ensure that no incompatible AlertManager configs are going to break Prometheus after the upgrade. - ## - additionalAlertManagerConfigs: [] - # - consul_sd_configs: - # - server: consul.dev.test:8500 - # scheme: http - # datacenter: dev - # tag_separator: ',' - # services: - # - metrics-prometheus-alertmanager - - ## AdditionalAlertRelabelConfigs allows specifying Prometheus alert relabel configurations. Alert relabel configurations specified are appended - ## to the configurations generated by the Prometheus Operator. Alert relabel configurations specified must have the form as specified in the - ## official Prometheus documentation: https://prometheus.io/docs/prometheus/latest/configuration/configuration/#alert_relabel_configs. - ## As alert relabel configs are appended, the user is responsible to make sure it is valid. Note that using this feature may expose the - ## possibility to break upgrades of Prometheus. It is advised to review Prometheus release notes to ensure that no incompatible alert relabel - ## configs are going to break Prometheus after the upgrade. - ## - additionalAlertRelabelConfigs: [] - # - separator: ; - # regex: prometheus_replica - # replacement: $1 - # action: labeldrop - - ## SecurityContext holds pod-level security attributes and common container settings. - ## This defaults to non root user with uid 1000 and gid 2000. - ## https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md - ## - securityContext: - runAsGroup: 2000 - runAsNonRoot: true - runAsUser: 1000 - fsGroup: 2000 - - ## Priority class assigned to the Pods - ## - priorityClassName: "" - - ## Thanos configuration allows configuring various aspects of a Prometheus server in a Thanos environment. - ## This section is experimental, it may change significantly without deprecation notice in any release. - ## This is experimental and may change significantly without backward compatibility in any release. - ## ref: https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#thanosspec - ## - thanos: {} - - proxy: - image: - repository: rancher/mirrored-library-nginx - tag: 1.19.9-alpine - - ## Containers allows injecting additional containers. This is meant to allow adding an authentication proxy to a Prometheus pod. - ## if using proxy extraContainer update targetPort with proxy container port - containers: | - - name: prometheus-proxy - args: - - nginx - - -g - - daemon off; - - -c - - /nginx/nginx.conf - image: "{{ template "system_default_registry" . }}{{ .Values.prometheus.prometheusSpec.proxy.image.repository }}:{{ .Values.prometheus.prometheusSpec.proxy.image.tag }}" - ports: - - containerPort: 8081 - name: nginx-http - protocol: TCP - volumeMounts: - - mountPath: /nginx - name: prometheus-nginx - - mountPath: /var/cache/nginx - name: nginx-home - securityContext: - runAsUser: 101 - runAsGroup: 101 - - ## InitContainers allows injecting additional initContainers. This is meant to allow doing some changes - ## (permissions, dir tree) on mounted volumes before starting prometheus - initContainers: [] - - ## PortName to use for Prometheus. - ## - portName: "nginx-http" - - ## ArbitraryFSAccessThroughSMs configures whether configuration based on a service monitor can access arbitrary files - ## on the file system of the Prometheus container e.g. bearer token files. - arbitraryFSAccessThroughSMs: false - - ## OverrideHonorLabels if set to true overrides all user configured honor_labels. If HonorLabels is set in ServiceMonitor - ## or PodMonitor to true, this overrides honor_labels to false. - overrideHonorLabels: false - - ## OverrideHonorTimestamps allows to globally enforce honoring timestamps in all scrape configs. - overrideHonorTimestamps: false - - ## IgnoreNamespaceSelectors if set to true will ignore NamespaceSelector settings from the podmonitor and servicemonitor - ## configs, and they will only discover endpoints within their current namespace. Defaults to false. - ignoreNamespaceSelectors: false - - ## EnforcedNamespaceLabel enforces adding a namespace label of origin for each alert and metric that is user created. - ## The label value will always be the namespace of the object that is being created. - ## Disabled by default - enforcedNamespaceLabel: "" - - ## PrometheusRulesExcludedFromEnforce - list of prometheus rules to be excluded from enforcing of adding namespace labels. - ## Works only if enforcedNamespaceLabel set to true. Make sure both ruleNamespace and ruleName are set for each pair - prometheusRulesExcludedFromEnforce: [] - - ## QueryLogFile specifies the file to which PromQL queries are logged. Note that this location must be writable, - ## and can be persisted using an attached volume. Alternatively, the location can be set to a stdout location such - ## as /dev/stdout to log querie information to the default Prometheus log stream. This is only available in versions - ## of Prometheus >= 2.16.0. For more details, see the Prometheus docs (https://prometheus.io/docs/guides/query-log/) - queryLogFile: false - - ## EnforcedSampleLimit defines global limit on number of scraped samples that will be accepted. This overrides any SampleLimit - ## set per ServiceMonitor or/and PodMonitor. It is meant to be used by admins to enforce the SampleLimit to keep overall - ## number of samples/series under the desired limit. Note that if SampleLimit is lower that value will be taken instead. - enforcedSampleLimit: false - - ## AllowOverlappingBlocks enables vertical compaction and vertical query merge in Prometheus. This is still experimental - ## in Prometheus so it may change in any upcoming release. - allowOverlappingBlocks: false - - additionalRulesForClusterRole: [] - # - apiGroups: [ "" ] - # resources: - # - nodes/proxy - # verbs: [ "get", "list", "watch" ] - - additionalServiceMonitors: [] - ## Name of the ServiceMonitor to create - ## - # - name: "" - - ## Additional labels to set used for the ServiceMonitorSelector. Together with standard labels from - ## the chart - ## - # additionalLabels: {} - - ## Service label for use in assembling a job name of the form

    M_$do6l8i>Zj2cR+Q>#39HE_PL}f z14l7nip#KSNa)%9nS2~Pn~pR_n}%$7!Uc>5ai-hv=Wcp3y=!J+v2}%V>{ulj5Z>`z zIi3&n=qgc}`%BI@sS?n5DZw;h}hhpAzq$g77 z#tFlvInzO}w-Jei4wf5-FlaIgnnnM(?wXYc-v>3w- zICcd9$y`>1@ks*+9Y{3qN_asv#nQawr2qhN2HMVfv#%gG_2CY}hDp%|k|+JGNFHIE)? zkpzj>+HuE66pa ze}nc+%lj|L^Sbhhs3u_HxiwQKBIh%&8Q3UV&ASUFRPY+3I0v!)DRMy8{2odU| z?V-)L#E8dhsfT1YwFy~Cf654zNDJ8!`Psg|Qci}eAr{H5Ho<3i#}ocB$5;r^ab$oI_@nN{!`V1ZGV- zjAUwI^4Jgl*?2wmoUVu@|6 zKVJZg_0V!=FxQQIDug1{K0%nMQeqMR82D;6iE=jNCv8zpEsZ0e$rZ6)wuU65@Tix3#QNbxNTbqPI zSbs|iC&JF4ms=NdGGhUbx9r$A7>KPH$%3|*h;%P-PVMVR+Q5`K)94l_F`6>Cib}wo zDFIse&-b=|(a~+FIp7L7F&iH-MGGc0c$`#bXJbR;$-y>g0U`sR2JCQ?T^4EdSGw=j z3|W{26bTi!Gyeyx&7{0zN&#%>;nV)l=eRS)yHvh;MxLH42^{kX?x}@pWHUd0Ct2!P zOF;`C|E*+{zl|*|E#{3aKTwxf?`y7T&C5EqDkR=uMFzpLCt!pko6%uzAdGwuNMIcq zN=_i$PCfxVn!jf`zz9{BYvmH;ZdX9G=_!jnHd0WiITy%f(s3LAI<;J#NjkSk7EE}S z1z=$=WB`^5(seF|t$0O?s9>1I#-fJ(M5QLFRCE4q&dsB(Giv`SrZyrCDtU0&RHe2A z;c-b-W*XWB+qSa{7uZu``i2Fp?z_!IX=#iu)szcdVDq(|v5vRaUp1pxv0-stcH4T>b-3wNoWyQlAd#$V+7&`t62P3by^k{Xlbc zExDKw>bMh&k~6F`gG(1*5G+geMpTNe%?SZ6#TJXKHPGIpt-6KF&7gMm-ZIOLkFJg_ zM({*(Z|M`Qs?|KKa3znV^K=0k3K7gKv6z+X@jBbWE|KW<`X5DmVjJ>9@32ex6LB*n zy7v%?#g@KY_jZ zvd0H~DiZo66m&09J9>4AY8C1iqcgS*!dl1x0*fSY7Wcaqo-q7Z$p#TJWGrVx5mom~ z_=l?_Rcwkmso8M%X7sMch+SITe&>mpl=s?j+Fp_`@~anN zHRUK}xiCn|&ntFXljSA1r)9fRvu7}4rQG25HlV^kN7L5@1pr|6XH~DXRPfi6laaTC z$Gb&kY2B4l81M9!&?ipWO>x_*#T9I=<56_J0NJhu79<)R8p_-}l>T6)SKMK_4L7vw zAkR2CNs-#r7TFDx25DMDh#!B(Z6SyFL5GNxJzrgn1$@TlS$pE||7oD;px4%=c6Q*0 zCqoxMUJ%!)G99;JPIBAqVd|sU!SMR#w=VXb-BFX_L zT@1@n85Sm5j2G`NXB2TFrA)KoF1__&S_d;rZCkKUa5JDTk&KTVPm!L+E|E7ARjD<{&ytk@S3Y&TzniV zxkR3_vyXXaD_{t(abOtgn*^8}8`JHnP_le%UJ?o4D(}Qe&J7{hLEaV(7A;SMo*`Mh4emEfxd?{VvOWN$0DXoaO^sMQy)DOW0m5MO4Qu|WkXG$TV#%evZxcf*A4SiguM zxOo`E$m1#RXBri!(KMlOH-Ecjyo29$t2pNgz7`sUxKuh^v5@~hM{yR`au}}Z3c{%6 zsLu^xGz(*RJ5R`tCVdNt!#aSh+IC!LY|VAx3Hodzqt;5^?HVq6pV0K7WsI z>Y0O%kJE}QGWVRirlMQAgQ(kLoK2V&{tJM%c7O6Op!5b}4NJCwM1^VMvW1ED zs_9$ZaAwaGiPagUq9n+>K3q_u*}g^@eIU_T$7I93g>y@@le{#URm!&ro?EGbt3RM1 zJS$6l|A&u->E~|YV}Lj6h4Ov?&9G@doVrYV*}_MLS7tBhHL4-2f0v%hZk9RNzJl3`)997P9xjUWaKoM`Z)-zq&q3d9|)S7*(Cga zlI)g+t5lePu?}5zrp*YcyKnRyGV64UNBTRahSUyt@JW=}s+`0ibOJZu-6swdPX%CO z8?+~Mof%zJcK#3!ty0^eOhTf>_!#g5wMYBqLG3aB{ZQs<0S3DDp_1ID0 zctCbA*|Ixh+CQG7BVVgF<|*B{oV2%g)S0I!Ib;uQsM%5~i)9o}v5j0lxvLJdcOM#5 z!Uih=ze-;T%$dDy#!LNjE18j|+GBlvopD0=3YfHN$A)qDZ+pqs`a$V~KuCj0JnH7; zNK^5J5QH3`=}&ymYA|%U8#Yi;p2fmm5PxeI1w7@sccvQlQuG@MiMGfJco#<>HwU+_ zrBP^KtF$K?o=c6hzotIE8o9g;fANF@N$_YjNToD0)hs>6ObC~$HOuNu1|lu8eoc4~ zLE4{BpRCOx;?nGXStmFNz|6VV8kp!}IR~eI-cUG%cE3N@aqziM!j(vXIR4pG@RKB| zr&ZY70RA(=N_BuP&LQG*3FI(W3p;da>Z+ojRElp9`z%l4T5I{S_BUs#p1=kn{rJ_u@kC{j(BtN&w^?$uihT>Iq#F z|DsJ9*(}1rA`u0O{T$UD2<`} zCSv(&pg_p8mXAb$(6K{AIJ5=j_&0-s0EO4jf*gTEUF-1YRQF8SDL%WWm8&PFc+Hn& zT@COoWEm1C2FDmcdwcWi{`)he;-$C*I1pangCz#sF{iZVHDfXA$q#t^fSZX;>&x58 zabaW9O<(pSk2TYKyW#iD_1A!=^0G8@Ih~5F3>=S{F>OE7A%6q<3*Ke8399_XO|?C9 za4Yh{F!(m{s$81D<-YD&^+?kvU!a)aAk&+cxJO93f&M&nYi@V3GdSss=f5TVgfG!O zN`6x&Sm$EZp*#4~DMVy2fueL$_K4shKz-l!}@mgv<1@$GXQPigsD|@9V1HwyJ>Jwo%nj<$DwCX^<)1< zCJbgNy?)V77lin>+xxQ-y|Vs-mDAe0m{_^PEg#U!K3(nF(G}(L(&^c=M7&gx6c`Fg zB2lnlP)!#_Z>FSMC;&UJ9})nb{p4wM3ujhx_E(4Q$&WXjk(c7D`Kezu(En}2by__q z^rvYvp3A<4Q|j!#c(vnzW4~Go#l?l2o{JVmH|sX(&Y|-_r`S)LlC_URncu?P|3M)B zvsbo*FKr~MzhBf(}QMgXYe-)Ueo!vpn z`<02^;SZ)Lp+8NnU4Y0Prh5m{AF3)}Euq0I)+W&O?`CGCH$v?xwbnjZ>MA2h)}R%2 zTrC&YS=bIU2ivirVj-~wG_3ogt~1vs>VT!u5S3XNT*VVlLQWj9f5f(IhxRiE!tc&c*E`9qAu zOw^7S{n1KSUxu-VkA;(Yk`3dvSU7W4g^v{kwW2=xp)4nGtERaO{w0~c< zA21-?DZ^2`WuNoI)8+()#Ef zm%OD=7c%&HZdJayj}8iW@8(s{>V}>}sOH8-SlyO|L#{sj2p>M%@W3>>2%9`p#cye48d5akB^1v)ai=d z@aYPk41NKmv0LQdujP8tp6}nr*L$~va!)tH%v>2>l($}(+>Y}YryQcf(YY>nZLSra zq{W6GruOcGg?po9+j1dT&U2f`93@Bkz#)Z{RcIZl-dFv62R+G2p)n*K`vB`JvagtP z?G+CpsLxn^n?+x+QRNYs068=+ct6J%*vtkdAINui9Ej45%`YGfmGRyvK83-`dbJwuBf?nuBRtj>DR25$^~-{qvsdI zw7{5e3UdWFNZ`Q~X4gX`rI6%!e$3zPwfDl%rMKA8jO6ZI6mqC3^e2 zXhcB3nkZ6qk0*Uy3Cc6pnXW zlx*w)v{_nRC2e0swPv$n8#8gwrFtxtvsofs1iE%mx7X&j{+o9KMfIGHg^9*o;vy=j z`0zfdPHJHg>)X_F$9!64zH*y(#m@_(o+5c+^8nN`LuJ>15Z8vd>};?x$fPgv1ke1w z_a1ruY%jSmBePl>W}*EIU8)8D#WeZCPgPVptvLuCD65y~xg>s0r2B88ChF}1L>TW< zd<~N6An8o};|N^Z=ep91k=c9kF}NE&USvvB1~ldOoOA+c&bJZLMN6z7Rip9IF zn34!E0{mIc@m+#P%aRdRc0EkOVMNIxrC!I)r1VDFY(nB#EsU`Rc#}y?I3cY9!$5{s zslLpg?JJT~A?QgUYz=Awe)OaTc90c7XC?$Wc_Qksrvbcgwwir_n#|YMK=%*x{55;s zb>Uuw!XV)+YX8 zz0k8`SprLI#4sX+e&kR2EMCwNxlz<;6}}?o``1h6+aDf|s$LT+2yv}QT>*DXVvGXz zO7@}|ObkBzSP+m0_##?GbA}OfR{iXLR8WLSiCq*Q>wJT`j-dpd-k2rYl2C(|!`&}) z7i57CIb+7KkQNHJJL5%{+THf1ik|lWP<2nim3+~{z>`TPw(S#}6Wg|J+qP}nb~14$ zwr$&(_{;q7y$|2R>C=1f>V7y?UDappwbpNv{c)72u;@k@@ROpkGHZ%4m$O>>FVpWC zvEiNS#w5v)o`b6^Zj8Cg4T%>2856;$Gb_B#me5VIB2Ey>c%9?&9NNU{za${wkyT5C zM+l?4&&wNh?ssTt9wv>6*ZZALNi!(0+K0TZi{x8uEhLpca%duAR4T zn0wjtL1VnXcGLRrDyMyjgIxwp_&|5lEaIrfv1=I!LEgQ-U3Z^TZEa{4tWxE_MzFm} zFnjuYM6x{>L;THh{us=B8}#2-wuM_!2|c=RZ};GVR{a%O%h@vtGN0ISJUxEjcQLXO zIWYu%A|svmr{3WP%y_F^-Pu3=_5RYs;gpNMqw%62(+MxGdgC`=$zYwu-Y!mi*+uJ$ z*hQFBE6DwNLEx2v!)ge9Dk&WeP}1M~rPqep0J)CFMK5+U{x~1j2Hhidr|$GWi~)Rw zjT0dUDTCm(L!dQ7rm^ho`hCG~jzhnh`U>dH*%T*ozfeK367kX8-3<$j1u^yd#MTOf zhKGzWVW(*-+9OlP-V`JDqTK~wAKF!=p_?V1LfTk}x)TG$H3k=bdhO;y}~%Vs%oDM73U-615n9!{87p8rN}M5pcD( z<`)*D0<&+eao+Qt+e`X#;rZ&Mc=p|}_%K#%RWOR6gy_MR!rN+zn*bnb1r5n>fISZ@ zX{gz4I4ROfBYKK~K>MpT+6sz#gCoYoN_<&M3DB<`&`Iz6qof&8*_yiQ2XNyf?O06W zZ}U%xF)hj}T;u+nw(p`r)9DMs)r#zCQnza3{B{GU@!8ysRqR)yHstu}&QS?)lRsR8(AGU#P*-JKmDyML&>gMjac9*t8|XZuBO*g_9Wt*Y&T zu({SK;V0_qVa9bYz1aF(JHqdl2DNMFOs!%zq}+eCpM`Rt(smsCFIiikc=1zKRG>AR zLucVX;L>55R8Hsl2w3PeM164?7Ha@UB$13#maBzFKo(iG#P5ihN%M|Ypjh2ex1z!k zROg{ox|D|~qNJShZlo9tE+i;h!+j!##gX%`4QrrhE8GTD8na}Q8XQ85n3B2(T2Gmz zr)5`{>G-3iDvz2bBNcN=u4WjUCeV>KNu_Aj3n>FQ3xDR45b0VvA-8AM%-J%BXUuSA z?~u07+2A{uT8=T%82T7wK+NIpZL>l`2{R?AR$@~1dD?7~28#hILemn}kFRRoYGMry zEhI0{C{&uX=v$X9kJD|sj+o+~GKHWkf|;(Ncv-TRGg_O%gzC8~q-SgHl9DllCE$L| zYr9xEVa55INb#!IDNJidhUR^hWH2>ixm@;F;Gb)$rM_xjIl8rvkVPa@<$y5xAwS>^ zO(9M0#-&<}x|zQQ#i1&P*Z&q+)ROP!n7UPd(O)_1^zF5XZAu|p?C4(Rh;g;+txs`^ z4oOe?W&*76VdX+&>epzW7*~tAs(bd7tv{4pxR?ErFMC>_SEmzN$T<9I{t6!7nILxvr{7$hW}swhDFOC{WYJYTNu`MTo#yS-eiYx{AXtK<7+`}IU;+wJ*rdA_{e^YS!#?(6<> z*;>2p^+k8^m{)tjPFZgDLRSm_x%9N>1K7{h;3GfXM+pv+XqXEU_3M;dNEjBvFfY7s zO)$?HC#@~@eRa)*o_i$FQwy}47fO;6`zY7NVovlk^|j-mFrN+Mrbsb_gvm6#GZ{kh zz7GY@DYYFH{*H5aGop^tt!5o-Dc18=r4>*pD{Ui`cA)66#JLKk)H^ijy(o=~Hb$6I zQ0+oLDtmH&xV&!SOF3|(zi{g^l%G_%eLs;AGW&~;sJ<*4AUx2#CR!Ce)*riF&EhEP-)}uE*d#z)x=NTdn?3LTdU|5*CcH=R?QRqKlfhn^ z!^Z)A=hlX>vjd1{R(&!%IKq8*_v`1mpHARi71X$vm6VS{(O=RWm2CB`3H;%Nlj_tU zCrAVx9ah%G)mu92JQ`1qdi8&{oA_d_n}fnVYNhe(s?b7bf0){k-z07L$I)635QOyu zPM{6q?|qlz&gDL$zTY=!<~l1T%tKh8<~cqG7osa2z_BuR--J9pv9a8JWHGz1TJ0MC zRJJq;@{MeHFRQIq82IbsJU*?>0di}uuCi6Y$Ey=`+ty?FD^}gQV-<~gQSLIifA)T2WvIsu}0OufU7zQHsX`Ug{oFn%wt!FW~E9IDYtziS3POU z-;8D2=$TT~;nR?cj4BQ$AR@nLOw4{Q9dA{aJE<{Q2wrE)!*(Xt!L#80k|Ni>$_T=2 zXT%_@o@*w)u>efi;7f8IUo`s8bG|D#3V8&r*8EDW=m9Gg zEXHfbEM??b6ziaNa-KvTif~f-wao9KSc$sED4NEYGw{NPj&lWEyAJgP|k-UfD3T)G2Rci_*sR(P-i=rj>9 z{RRM&;zZ0$Vsu^lat}^tkHEmzas6N0OMa8R1e6`Oor#avOtMaC-)X)|)C|zf*(^W8%4N_y9M}RR7a<-ym4Owovso+@Df% zC6P2N?`ZbtVSCd8q~~aP!jlANb+7?mphSu$MJ5?t>DP2+;PmXypNJO=?kf+_3r>@W z%byB?*dSnTRFdEEwROx#s#iO) z`W-CF+eKytY``Ef zD2p9+XTY#Oi?k|(1q?dl;MWkBR5D;;|uO9-5d}{Xz_gU*83zc z-@ZphR*s@I%pq~AQ9I3Qn=O-z*`8*bD`Vv5uWAA?*nz%_W`j_a1V3Q78%dy#%?at%C-n;G<94b9+OnC-SM~gIfOE zr8CQnj;zn-FV$U5FRt5szD*<2Zp)#$*2Jzrx_*hc-r>(QWu0Ek*$GHS4h+Y9=Rc6q zv(4R}qNGEp(L4qwgFKf2c@mHR5F>w%8g4@^hy9I#BnPZ@QE?={>lSp0PTw^8`c!>n zT4K8Ardq|8`M%ZE+9V6y&fU{~F?DrU*LJBFxD}qJR^MNq0H50%c? ztgJ%=K|a&JmfY->A)>Z@pTcWFv%Ju*;9Q1);!&S%epXz7c16eKD%X;-89!pajJ-0} z;H8&|Y<{*GrbWxn{QLe;B$Gg#YW!1(DQBq{v9RV|(SbPWGna~nf9$&roMhiYwA{^w zKBN_W`3NjS0PXOUO2!s2gF`=9ak<3A+2aeSfOw4~kwk|B#PfhGft{uXCHhNHHB@u` z3^(7o;QpLVF}dd3;yoe!1Sav(eOeXlwH^c|CA)cW_Vt5~+#nhkA(hJ0LesFk8HY39 zZeyX7JmewNlQQnNs>DVh@@n$)phK4-@)->D$u!jzBmYO)bp#q#<5w(csUP_l`Wax1 zf}O1knX~7V$CmPEdmf7tjml@?o@GWoj^UGoW?BVuQQEa#lcFM(JhD9XTm?)h~}>U$sb zmt@g3PSzJ<_SZZ{NNmQ}{n7e$_uH~<&-Uoo%hO}p*FF2ta>|z?@1)NnB;OU|J0>6P zcbs_wI$oJd68dv_a~Qh}gs&tH&b;JD;uZt(+Q4WE69nF%`o}?M=irD-&w_;O#!Hek zTAeJr#zA$X%kh3S%80da-J`pw!hE*2OK&zd0|a5QTBWBQtFmWmmQ}?oe8;NN`ncm< zxt5)0k>aR@O6hhd;OqG7DpP;)*N;qyo26J`QdX+cq?e3ucS(A%;5y7jtlqad`OX@6&!=@`yG z&T3jT#Y?Mx1o6qarig^2+_THNdCDrpD^W@2xhn7M2Zzg*@&rL5ovu7g2_{rqi(H~; zXxd8^AhsVcX%fBatCohqEvYr&t(+%qKp1;yXkM3j0m6-Ed%e`%q6P==J+Ux2txZRjt`S&(~Svurqm#L=#+85x1;c zn6G*2rg%Jb45f8nW@~FtPG%*dJ)Zxl26?)@T&|6*=^C!5CM}urUo_x8VfnYT$#a(2 zBe1POg?gdcfP&5rnGe+$=9Kb+^WJ&;rtU1=ujVpc0$Dp&7&?|*{vDLrT5vYHohbh! z_R$MxD8osBYtqc-xCXp7rjFa2rLo=&vbfnD&l$Z@&h0b4aSGQ@3wBq$BuKhb2L9qU1-J7nn|#3BrB~!!Nc4cYt&iuj)EN}y5l;`$asDoS z#*O<1%2niBLM(flb2g&r@_exTNAYOqYK?#75-vtF8V1@7K#&NKtdyGf7dlW#PI4Wn zeW?+kRdCs23eGmyGRP*HPc6;)%^BS=mR4mr06mKdf)GJY1r#osq9edOsSW$-5g++_ zTuGLq)XiMDndS{TAQ2TdFs*k*^4W(Xg1X{b23~baN?E?=5Yt(^1$h*N%^Ed{rWQOt zqigJ=LLq(5f;fD~9<(R&=Xps>ZzE?UeP}nid&~cU)szFHW7cm!p(;peQfIx53wCQA zL5sJ^&jdmNQN8+s1P@b}I++XLHCAHxK4aAMvJt@`ORSz@%#!bHHyYjIrT!)qmAlu} z?Ypiv_mv)F$N`W7%&V3PHI_)6axYtESVO3`DEp0`K3s)CZpJt7!+o)vRDR-tk@7=4O&5V;5>^S-6Ap6BUApCcoeG1&UKD#RCf(@X4bJ5d(#RW`?F;ED zt;Jn69qxO|Km7MU=JeCuxKg$v3?>e z9&nM2jy!y#ofWZfO~s0mvW#5?+p2|53|{*s0-$x4X?4xGM7W0NEy4xEL%zZN>1-zF z<~fkd6%*#u?(&e7b`gag3o35q)y@{t$zAYvy@nV=ZyVd4@)wc$QwX z@3i#0j{FWi_*>CfnQ6<}`z}fvEN>lVrMerg5VZ}!*1U?=iVa!8-rYhR#^aqVb9+up z8FhJ(y`;-i@3QqK`4nJH1O`E1>04B(;$Sg%*RY8N<1oaKQ%agS@)KwXfYe)u+KCOp zgn57uzHb#}7VKmA+c01}!b)87vmQ5JWnj_~5tHEZ6l@K-6+cED8v=(k=Nft(Yl!HZ zZYr#rWfD>U6C=NbVI2M6K{vh%5fbH+0%U@Nw=mmsJ;o5)@KOUDglf(pKzgbN968>; zG=*80{?6p?=+Tnb?RS5#0G)8#h9^uNmr-&QXk3VUG2Zp|uGg^~BX$cI6LVNMzNI1tWa0VUkL3B1-mL4WfibS2Yz(C<` z$c$k)n(7qXvZi<^8_yKw6p}<)Z$K(th;S@bQEVH6UEEWIbUWv? zatXWUS{6vk_x0VglMbb^HhzWx`k;^%+}2Y(k29gT^>WdzjP1-W4L-euI=KHR%p+i; zokHMu@TJK|mmcx{$$BEr&TqReDw-c%xXSoD!H+N8rb^sqI^NoMAkfXuBVY3M4uap& z_h=J^RK7@g0l#NEaU{xkxlrM1{k2m&-jOK-V#+_F61JO<`<#}8q5>B*Ssk2UkfnkZ zQ^S=%xff44C-83R;j2}9I72dcN9d6uFqIB{faDq!5q zd`ioW5Jti@-r`XoU59ltxhFIPLKb%Mn;5uR-dZoo0`-QJZ}DLm3u?aXOWGAreGyjD zYJmPkAsV&u2V6v^3c?~A<=F?o(96Z;i$F0h$nk^Kvdv`cxx$?4Y;ZRNll^Kc<)_BC zcIAO^Vh;nwItiXxeI`J1a&iT|2tt5#=IaR(3;Ux1eHp_YJeiDqbzdjPRlwb(GLqx73KdI&nLA%M}xNWyeLM zK)R}XA*o}n=7J)*WmTQDo^Zb7PhN>LW*NSb_E^AY!5H}18J!L~=%dCm@;ON%9KwNQ z*&9T3PHLiX&~j^ag+e;_)<3tBefWq~dH_Z1&&f`^OOns34)Yj3boOgiZ%^h3gEp{F z|0z}!u5p`@`$MAOf;ig4u-F`2q4eQ=OJjWjw|yG`8x1nG{c)(YrLQz|^Hpi*=3bqK}G zi@96_YeN4(wECQedwzw7pBQ3a7~j$Nv_R9v&jTliuO*#=9Pz$c zog)ijPK=K0@4pIA`>@@P8(wK?w1+ym{&mDqQ*7P&woe7`9c3Mi-L+#H>%XyH_QfuU zZ-{j!LdUB&z)KHAj{=Gbd#@(#zE1pG*p_*KA%OnxMrsTJj#=FHG6wI7(~}i74nwrq z_wJWDw@Env{#%PW_teP&Q>Saj0&%YhD+L~rjIg2UL0~=U!|u_2m|6gEiK8V3JReuc zDpv%N$ad2&C`4;gUpV9!zI(SQ4H*t)$6Rw9mR+C`x5lSNG%TkiNDU1)jnBJSXaKziFb#^{xTrp4P!v^ ziuA|E-x!j-V?g#W4T=4oI*s|?;dT@QQaAVa6a&)Mzm?A9R$#*rV3to-ckG`Phnw?lmBt z&7je6_nmj}jytV(z~O7wQ%t78Xfd(qn8Tn5F9O+xkb7@2>L5VXY}CFN4(Whi9nERx zo3%RMAK~G^Zet3 z28f{yQovMx6d>8vl9g5-KDR$n^m4SnF|Js^6_ogkbZP5{e8rV!b#qLqfY^=cBi*O@ zo!q2aI@91m(6I&47^KV&jl6NK5n&=AQe=*PS`4J>>zmL*ejIo zN$TkH1Gf+TB8d63iQJv&4(CPiYhuqT6B3u;e5<@-Qs<#vCo3^1c`Vyf?Og7A(_y=N zsMaqpf$caFz6ryuzNhZGJyN2)V9LVaVHXgoIa{Y3Pl$G$O^u6^7fr%IqCve@cW{i< zmB?974N`zxXW5mJ0RKa)&=JuRLX%Q?q}9|E);-O^J|#jZ2S6mNmVc10*61*~y1!aT zj_=l;X0~ZypkbT~Y|8!y_DObE_>51-+YLB2xA+aJoG@8A(W37pl&g5x>nPip^;G8e znoBlqFH*pVy@Yq{1Wvgpk|?M~srB^QFVsQRmf#n;L~F%71RR+S8P9;_013ySIfO|A zu0{xult2q3CE~<}p>r3LHBuN+75A{v#$HlGCW><|4e|51G)6K771WQ zY6?RnF*|~bP?#?tY5o{0S3d}Ze6;K~5=EYgh=qh`5Gbq{;b6rOgyq%`7@F-B zQ<`VOCP7WbHLy>xPodH(R=Fe=8a;823b-Z5@EjTu73phZ5$XFyFVeTdD-!V3L2Op2 z*LfYNalpyPyoHG4YIIOH5sLKC2rID{qF$@cS;lzcGGXzXrs1@qa<2Hq!Ns66eN`jnNrPX*x8rJ&V^HM&5IJ3&1PEVPG zFnOrfG%v6(`ERS$kJh<+vM|Dv7f-^mD_bzqMSQ14wpDS?kyH5i+`^y3#1}5yt%312 zwbxmu3|W&Q$u@Od(LACPbL9&OW~3|0<|Ux{;{8Qd-SD$tn3+^j(A>_}-daeM#?1m% z6qQ<%=$*ukTXB6Pl|=@C2@oU`MOtJrBF>&JR&uIGn866j96p0GpBAdLAt8kvG0VuN zfG{86Kb~Po@CcA`3<9X^n)7#6Rd-BANDh%VXVdpVvm}VhHB%u$^^;`>qwd8ieF!c1 z7m03S2qD%)T6*`HaRec&&OpDB6*q74r$kixIO>$fMCG3piZ*}Lipg1nQeL5}hi6gA zv#L(zzAFzq{sGRQ&Ei*c*p zwu2xe6M=+j5ELAjwu6ii0MndM^`O6C+IH&#wI6+rxgU++qPrgrFJ8&*>mrc%$3Rjt zXO0cMNC<((lE2>d2R9i8V&GUl6AsgyfP)>DFRB`RZ+zS|4Q8*>me4_hB*a07h@O&XiD2ASdivk6Pmr0k3nDwq=?!)lvzn z;Vjf@V?mX=KK_H<_5HG)bgcfz*7y^*&YSLf^R^%#pk9FT<@L(z2GRFsuQ7-Qt`MIe z<@P7V6=u#!bOmN`Ne+9Afa2HRXt`;5vooy18D=Qy&3!h9OVRvtZUKMmX~a3!UvZRS zq_@CU!_eB$xlROH)?a+h5Tg%j-%qUMIvv5K8f(Yw@cm)?pOgJl^*;26vk<|q7~BKY zU(C}{Z-qqdwAFbTiz>#_?LX;pU+Van#pp(@byEV3%Ghr zg=#OL72M6Z`;e38zbN0ttKf@rm$9q9>Op3e;2BlBB7Y*34fY^!HaW`iIAk<*CdRzp zv^|qNkZRSQ7=S;v6y{*;zSgG%j%pi>MMznxWHdSZbbzc{I0k*qSRUF|=Cr@U)lZHpYi>Ex&=*4E!dq1cB4EF2$&9W19b+ za1wC%+M{;XX#oY4d8e05XieGzx6b2=aOkoT-c2KmT_t~sLyK}8`gu5tr1ASCF{>V+ zeIG;MS!Q;UeV+6SJ27MHj>3QIXWQ$h`zv9_)gpGZdx^eNbUy+Zq~0W@tGsMaVnkLv zOKBG@3@}S#1vNi#S zvnGWZ-GRt`3`yhDTY{%XUHxvMZS(TULHyw*g?b%9p5nu;)Lx0S0BH4WcF93kUPsU$ zL0KJjCn&UT4puz)GYO^Ch?tV#Zje@$HF>wa>92zRdE&pQT0T^SI%Rji&2@nS33>#X z)o&V#N3E@D#;+1N`UM{r^35!i3E}C-c!MZ&^~0OhDLmMjM1$1Jw?Rh@S_2ExoUGJH zsK`gG-y;snHUxiBZ>dp714S$+DP%k}$8@~f7QkUrvolF=O5#lABUohBIRLz~34z_F zBu7Ewcf+Z?*}kubNAG`>by-xs0V|69_esS?3DTP6jhSR*SoKStDC~8V4&2}$Ks}2f z%=zs(>rwonQC5?4imEBH7R9m0!o^kykObRR@FvN`@)Gv@S;>g)qp02uB=Ms`Xf4aA zfbz0$sBf4z2We_6ftO>amzI##dIGyq^2Y zkvr!B7B5?7IPmWvEbF3;WvUY~?UQ{^b~S$Y+0sSL-J@*N<{98Ri;@BUVNJj*h`{mEQ2Rb7ARS)HUB_~IkZw6umF;=?x~7%~*J>}Y;PjTYn{Z*KBP>J#4KSZz zs<_vM{ef`ZNsq0Mw9aL15hzObO-Sj4-Ga6YdvwuNGYOS z%~HXX*r3z7I6=P(6Fqk=RvXMT$S2dXR=?;^L!OtJxb}C3$VFtU`|ifcR)-%4E>LCo zo0aM#+M0(!cJZ)gFu=8sdAxt;daVlijt;(DA6dQc=w?nm&?0R>CH=)?6WfJL@-l5@ zj3MyJOKdT%&z@0!e67}OA})cU{->eA*q{)4q<-o5=`v07VM&94Lm&--kiHqD9@`ITvaJ9WDPHMsas z51`1G@@`1jeeIrGr%JP-yhz^Ge?lJwFa5a)we|ZR;#?lCGScWusGh3c;@NT`2Nj z9$IST^9ybe1{WGeixI+ds(Uxzy@n6JmA;J2(d>c(jIx<;0xE?u1lI^-siV^OlS2_I!CDj22l%y3t z2l_gG&Ajh;$~9cE+U`0yB_I3BeJcN^gomx;c~PlaK!gVkKJ-XBCE5#*b^S)8o(<+j z6;8nqC9j03%uOoSgFOlf$pBixFvm*Eejr`xclz77iS$@q#4QFCs#n9(Y*cQ92xao^ z+=r9LY1%?sk&0bG{^Cl^CuGZ+PbIoO{@6&_I0C(^WmJQ@3>yfUvRLd_vyE85rC@Ob zbZ9!&>kN1Uxq81s3K@*XsA|=!U{$_da;;^DbubU95g3*OzQ`>2QouXT7Fx8^5arn~ zZ9m?{jDX9OZO@JjvwDyX>gIAL0@90{g(10xqhe9|o|sjp?0renNp4wEEfi#mADdXM zhWS}@6kNvbb7QarH>dzAHMkNukwoLTQA~wRwQFp$J$u|>a#6T0KUeL93%55P&emz1 z8}tqj@G+H6D$-8FQ?gVUJw&~2y$$nzo@pQn{0P20`ZdmWs}Uhw+Rg*$t`|(r#tA!- z0A)?pZ;uaYX)eFm+rO`jW)`xfXf#~pQc5mrn?^Y0QYEmNcppAWYYFkz?7l-$$y}-1 zuwps_k54ge+&bB~m1ti)mUWW{FYJ;`IN7+!FSX>r5bpVd%d-gEUBYH1Bf0dz!-sf* z28zj>dDdBE|2$}VRFg(TQW!*MugGxudIbMhS}|8(`{zo0Q^^Vqb#ew95u!~l=c!vk9*-9>#z|^ zL=fmhei)vO03gw<`j9-S(M4p*GvC57;d;p)B)jaG<(5h0g7uCgXfNnEWI2$p^jjR8 zddT(YI%s{=D^{OfSo%9uaraRqz}Tdph@A_Mhfgs=L?;(Jr+c&E!moH4s&|a_lP(ZV zCZKN02H2`65^jLjDg?f)_wA;>L56HNicoUX6i0wA3r1N5NYc~c=$9*!p}P^KyD*-x zPk|nG=>eYO>Y1#ykg!7th1f;;h+DsMP-raBEpdTD8ajV+^l-Pw-dNi-%V!VR1Ro=M zT(D4c9>l80^ z@~7<6C)Dc;<@^a0cLKf_!QG1<_@85DYjmZ*1$8MzJpX)Ts}B^0F$LxqH6=(?jUef6 zMbxvJVhd(6hpbQ!C7{|pQZEqeWa3s0C@-4_C`9sKB^2O5NifeQu+s|TyC+?nsEKwF z;vR8SVYZPLX1T+Bt{duwHiwm6{5AhkcAReN71-n#SoEQH5e4oP8dbU*gd$%rksYic zMcXx+4K8#=C$_=TQ&vqURAx;N9IbcHaH6=p9<6)SZV(yv#({}(Q=bVWpTRLJJwd1< zGc+0b%e8(#`!~Pe5`^(6nUP>mcpnLW_t&!T$9#{BeMB=I71{DJ+i}mvhZAt${jQ={ z2J`F0{{$Vb7BmaS2vh`}wr9X}TyGLI>w4{U3cptSF&V4|n!U^(xQVugo|4Zl-4;F# zR?0I`T#4Kp)fXi3qm%8x4V0 zEr!J*#mGsDFwvsQ0$CUm&E9;Z?3yOO%J66yI;a6fbwtGgxh<4f_vnn7lamg;L?<~~ zdg-ho-O9-~a00j{<_6_+YcQT7~O&m4e5!^LD>*Z5ae*irDCb4NnT%H$m3mBC{iNcE4o6;y)Mw|JQVJj>T|%>F7b++9#M8KwPO5k&!k0w2+?*GKbBIOyUy|pv3d8 zsm9d2(OPR9+~W)b&B$P?qhEc0rg%{zTMwpbE>H+J3kypBA8K*uget>5nwN!RH4Pti z>xZHK6Q47JU0LvI>(AnQmFpL~YT|jL)u)dCaK%gP|5(M?p|dFltV&VCN3$xp9?t(g zyTZ`@4_kcG{SRAQ1Nnz7@_c#bePfGj&v&XORd8H-)!nTcL($;_-9NFhWux5HCN$-{ zASNgnHkoco@n?pbu!!vpovxxF!8~=~C;pyTVE>?-hVuWatv_HVoRV+(&3)ly-%_E5z1i}U7Kn9?=U8L=$3J?}JEb))Y{@VcT4VEv zU5B-UPNb$;N%qsP+Gd*0`uLVM@<0J*&ZyZK9{4AJbOx{>=Cv`=ZdB2ns=)qVf=n7#>d^46BE1`+H zPkAw`{^5(c-LMx$x)qS$_~IWgOi|K5KQ8nVjfEJ#0~M+w>6FB_@=f6mZSF`@Y(M1j%?46G+z6Y+vl@t%wBtIMG5V%K4;+<3zmf2moLiJkyc6ByP8QA~6p(vic= zR3bLkY7{YYVWH%IKu~u3jszRU{SBj){aP2+ffhcJwn0#~F&uXr)1X4rAq!xYdr~E8_*^jNvWweRZfA(UiOCY!< zF4zL0MJO;sZ9~hM|9|*m2}SrF*pb5iH@+xMzke0tN$3+&7-k1~aR|p3=<7EK=kT*_ z$OnFd(8kYnHYdjH72n|LYf_vQ@#tea-sqm)2zXFcO6g3@0LTT{nVj)?nF?u9B`}5! zOph#;Lr3URl@tIvRjw<3W&LAe#6UXQff5ps%I4bB$@{f?_K~DDTU4vmrU)Pz4hai; zll*NGltB3nQcERHrm_sEE?LfjFe~W-_?YtSd;KJmSImGWM+72Yiq)(;K58CvU&T>` z*FZkR(Y>r;TuMNr=ZBRGi-tfaVNYQu7P?R!Ig8rxYzfMeOse-q!1;zor`La4(>GU_9&l~%P`ORF z2g&rqaBO2&Z=?ix+*^i!Bi*Vtax|HZ^gLacPprvQWX znzBw z2UR&#KiNH_w{EerAVxxd6O8dUJoWE&Yl(nD3SJGXXlrLRL0lxGMkLD=A`n}R{|H78 zBHMn(1N1tWn0PkBgGmhcZ++1%=YK3khPx6+&Hp19?eVaPZ6}I+SU$_Y=efV9vumT` z*>po?t)n{Y4Wl~$?-~=!@9F<;wa;7nJJU4^`cR-MLW1G0+(uRRSt{3hhVDcw=Gehe zZ@s1>NG_hKD)^VUokgMtccKTW>DzCPI#(ZF9_CwyR{0>_2)kz2cW$XZh9aTjr%HDQS0xyzYe#ajY86?+@P8sq4_( zj?iu(%Z((3jd?XeRq{s!`*_?un6w$+(~RBptm9wGT~}iElE$be>~nx&Eozn=pi2EDumXhvoN6S zXZ(jS=D?k;9_vDd-nirb%2)?#4S#E3ddS&dtV*wecr}5eK$WGd|q~6 zNu7j0z7a-^8O-UnT$gWzadX*EuJ}}4BjU%hx(fS%B`bp(VhGH6V8tKKdKT9=#mI!C zF(}Ub*NwJG<77+zN4Z#R=}=HWRw;#~rXp_x{7HYn7Bgbu!PEZc;}`aqvVk4R7`Gh> zJS!oVG}y%f8S*C6mGLx_zr<%sg^qeJf5vG|xne$;nv zJ}7W=u^7Zy$w|mfRRttjMK~Z%O%klV$+D}u2Qs4#+ys!mvBw$$!#Y>-X)|gDRj>b3 zS+dU3!>^{yOOJwwLzu^k#N7NFNIBg+*G^-qs7L_*dW3Fg5>b;eO{cq~rX)`&!N0e< z7l(MPfh&*Tn#w)T*{K18oj{99It6Wk{L#KgnXbz^>9i zm_~J^K{k_U!h^;+q7#K&=lhq7%k90e>ft-gfs=~MHv|<^%W|2Xd^3z+R|NOmSr5@8 zELfsBkIp%FK}4{On^o8--wb0s1I0k^&oV23diZAcc*HL0XLUw>6h%~9aGOs>T`~}B zQt22`$X7|DmdXsRP~}iWQ2@(rgi->2E#0W)ox=1r>R+{^q_+VVzzlRFjp{Uwof_B< z86rUEk7B~xe+*;QH^ay}wBq)UVH9zK=XmSh7k%Jydg6m2eg$%hArK9E! zl%by;XY5=fliTR#e+**{<0NCgc=6F0v+Up)h>K@{hMobl`tNUs(Fk*($mh_CPR4m^ zCBuE*rlryH@m|BOfeZ*pOvIF0@W@{c>C`H^Ki_Pz3S~7;uSk{%_z*0>zNaJhdUWsdLSLoT)YgQpdC=qY)KG+G8 z?h#8;`&(hW)7baQmhF-(AYc z+{QKSc7=gU;J*psOy5_e18l`@k^$ydklbnrLf?_pNX-%g0W-Yx%ubc!^aF+%XyYKt zU#AD9ou0=jik-CrWeuQ*baZsm4hqzf5?dJ8qJ7a03AO}I55YQPG{HXm%Rku}j|6JF zC)BZwCC7jL8)0;pR>YS4hcNaQxLDLWSqQ$yw}_y0c6Yogh*3fLT_Cx@CpdTbC6_c&5`BPhcQA3a}ZWwNsNM=`8~k*MzrZX^C*LW#L^W4F5A2v+ucfJ4(tl;|)gK zaFf>8zh;7J?tL}3w#Cred($A=4~KdIw#pO7HFgUUL|Pn| zP*ovyTkt8g9nKI2+&@y~@u#=GcLoKX;p0fJSUX@O(0`c#J6k~DtwIjlsl8x7JXIl{ zWWV=Q-z5zhN|*id*CXmdM88I{x>e4PW%48;QNw%8d;cWKKZVA*rU7ePgl;P?)pi>c zUj07v?+0Eabp?HhlGOdC9!6Ntk6Gner2VpP2P=xWx4yA0F5|Jfh95yX6QImvQi z#dyu(2<<;f?^bB}W0bOH^rr0S6vSRKXgimbv-zK!=U=zn>DJ7mpn}Cn5hjnU#?-ne zOh7+oUC|pRq&;evwppb^Q< z6LUutxD4P-z(rVSZv{}4m$sWj<6N;K^>Zoz;A-qfWwU{!c!RX%F16#}X=k~3^bZJP z0$QiMDvzIU~r-Xl-yBaj6I%cX+r0U-A6a`%WJYhNu)3>J zV{$$E|794rg3-VNE-#F{y@sSLTc^VaFmT>a9u1HMB;^mwXQwR%M?$M1x5IFPa3=Wg zf~xn-z8OZSdz06r$74X^vnK5AL(Im45z_TgA5+7B3}YX;we$y!P33m4X=w*0Vhnb{nYj1pTfhJLFb?cB7V)YLxEiA()^5FVtqpbCy(tNyg8 zxI0;BMe}i1o|h+xp3e;dfon}W-viED2he5;OFYD+@nnL8(c-_dQ=YjOdW3>S1~}SWvE^;RG+H=1cz;^M*P1cP z4QGGhtjp_>9i2YTwW+cFyi4g-r4BCRmtazyY(iDmHdSJ)<63l-R3AbC$^1(ZKQ2+c z$3WKl7$wUzX}>-DFEHQFaMywqm=|H+57;2 z&Zv8KYSDZzm=xmFt&bzQ;2N+vcmk$YtZP&^kP#Y1=dzVZo{36MBkM7!I1vATjNMa| zWKp{&>Pp+TZQHhO+qP}nW~H;zw(ZPH+jeLDXYbv8`sSRQ6*G7fF(TH8=l$NPlZr0O z(YFZ6OzSovyy&Xq%cN?x%Z_2B$A2d8_ban&Mek&@2lj06;rTD{zjj)dN4p#!@u=;% z=);=wBG6^oKd#@;GHSN$fjBVqwSSw#9T?3u*1H>RMf>X>UbnB~^FMxKaax>w_3&c!bHu(2K}U z|oK4JMWF>>>#di|891t)Y+@rp<+Rvdr%o`bfr@)CbnsZuodKk%seg%PQ&tRewTe(3g&m zlIDGW{qIhaxbC^RiIHXBZDDzya5Uk^+Dm7p--NLDn`v2MHM(3cG-k4Q1zHyuwbY7XY=ed8ArEV;rPa5fdWzqUO`XP z1xr}Og~E}p7;QN^+dFVHeJC|r2nrRaaAbi~lYED_7lsDsvPtrB`JanuG9p*Or{e7sRhlg%aM;mw{+JH8%Gf_Wf>kG1#nt$ zYNjY}DHAJG3Oj?MPi~oWL|C#s?bKGLnw5ijVq@`?4zNw&R<~Wm3vs^Poqt25-z<#i z|Jhw~p5oPl&dPWew#_EIbJ?-F+50IY-|}5?tax;}rCN)JX=1@cS9v^MlB)Z;xBAXl z;yz@FIp@Cv50O8C2bT|U36UkfIliykWc#Pok2wG~5;f4k#spdBt?IQp-YVTO)Fx>r zaP7Pm9ogA&BiINYhYEg{i4aF>N1rOZWfLf_L420nV&%CACza{C@0mg5$je3`Krd6|?v&dL7d#6QkQ#Ts@K0dScoG&!PqAcd0gNir}J3*gTjAlzQL76Qy!c!Mm=UPm@3A^K|$mXd~cY z7zdSZDy6j^Y#5Q<)0)BBAC5jAE>3=*S8rzvece0ym%*$BxPmZUQRd_(3XC)nl7?8D zE=727$BE5GLQT|G(OO&h2`8Qe!$=3Hr;q*ElBqBNPaU3lLH|42u#Nz`tv&AE{YK% zn;M)5)*?Xk90Gz?SxjGSItg??4DB*4vjfOO^_R^vvj8HY;L-4@()d0_y>tC1zfJ{d z-V;;J1A5ukj0v~xW@KikkdCRw^7*%q+Xfr6%v!b1fMqTU8YFf%{P)xS?5^7Bo2@Vg z9{YL0^LH`9FZ2QRpB*giYD^@SQ3A>^2?qWwcw$G-lug;4TsiyxqKueMrZ?B9GtP`c z-ZUzEksH{UNfK6WWAyXC$UIdPck#gjK*ggI_Vn>ue@lZdzK0_Un&QEZ{^Dc#!efS} zU5o7Z>s|mmhG@5hqs@Z;gFWxdykol(?N#r4zjrd|YFozPehPnSYLyL`x=c+VirG|j z`ho=LedGo<4*+FGW^q8n?iKXD#Jo1Vd`Y^s+_dT&!6%zk z$jJgHt!7O!F7uL_IigW-Or<(+tr$kHegod}g$4+_BWV`cF{_ZqKzm`mfXvH5X;SXS zp{d~xwm_N+pujk}i=#PMAQK52DLZmw})b`Gy(J6ne;b zAc=gV5m5?~|GrF7C?LdzIN|5g4FnvX`%0;n0qjT`$~pwvB9-sNERGL@0xqFjV5MQ- zm8$eQZ!u~nIgyLU{a5%w+J&RKp>O%q)jK?LOEQ_hncAb9KErnuFZw6>;KGoDo8GKG zJNTqTAp!_On`KHXuh&P7ZCZOGgeTrwKPiW4*cjFbgX}i8(!A9oh=;@oB!`B0vbihh z3u_l8%4vk+l1-{x!(Bzezbyq^z6da zO$0i_LX?>?#Ml5Z+-nd`kxC)LkWgss^o1OgWs6P|mTTz*YqHIfA9#pfBliC<|B%B0 zj3dR@<_s7`k6}!H#U4iHhL(z-0H35J z0-*s%BIo8PEg;+=P=7O`XsqG45*N)!?>P1^U`R?xMB)}n88hxC{irbqWUgsOESv_& z)h8WSIL@fpE2U(fMsjq3?YJU42BXz@m#jTw7u+slP#QEPOam%JgO)GwF#PKpODqhVmkq&yB5|J^X5iHLWsy9A%CI}momDw7?8nAbhD zpD)CR%W95V3B6#Q(J{?Pi$yde3(MBKD7$4efDMadw6!`qKyx{%p6yZ}1biWzPfyHe z5&oynYvi0c2-}``48x;k2||Rb282{iGjXUkJfXp zB@`@%LZ6zW<(gWnb?_WvoL3Um<6Mb5|C~(@PDq2!-lWI69gON+kJi<|J%M|Is_nb_f*zKgFOIy06t~I(rb5t|oMqI>-WatcF9kN+iLX~jlX(W zNDT^!j9n#@7t;KP%jcMPqFL!#L4^`kp{1e(E*h6mLag5Iht=WBP9tp6-Ayw|GP?~* zwT3EmnY2(^meuKHXCIdRM=~Vo2M5;$V@QT`0C&6Z|5Pv0xOfWzEo<7W#|*UY4+gNH|25m&{U_1IWq zvg>ZQ9Z7m(Q&5yJeF*vahsV!rHv>C=;4tD})6v#t1n)xHFyMe#y~AH`Yh&$~ZW+-_ zNk4QhJ$yE%&Vy0qmG_?uG9#Clt^Z!l+;e1VlNvRDKmO+yo-Wzpv+buI&}j~gDjzyO z)8R9IAgjl&c}81l;wO~VRd>V5fy=jn(ngPl-iB} z!KRlMt*IU4?Xq>ugT}TX;c0!pbGe1yfXK!{0W{>~oLhI=ojcW&OhIZ7XQ{s9E zo5wWUQmG2em@~;aP8|25)s|-O_Oce-tTFk_gC&3AK;|~kNJV0By>l6NN!i5C%=z4s zfB5fEHPAU7e#6&KGyuuBlFWRFdy2_42Wv*^-dI)*QU6`;h&IM?WektVLYd_KsieAY zf>`w+KJkAP*apiZ5VXKrM2sf@! z7j0nugLeBfobn*gng51%78Y|3-JVtm`G(AnHtkVoSIXtGFq)ySeT&xmwyJ^f?%6zYvq&B9?{y}@%9lB=N=^1?UfOCEI|2TVPfUpOM zQN=T3a?hatFl}EKk8g0v|2X^KNSs4R`?@&!mPQR>L^)E_ z?cd5;k9RsfxXA3x8G%u*@`Df5;Srv{GPjuoB~tEt)WTJSb60q}>vWR>WQATR0dfIC zfJE_C3=065iJ)kXHYk^1?c9s}FijPZJ!UdfqN`uJ7*;XBGfQo~s%B|*{4+e`g$|`p zx74h#3Da!9LYBo3C^VGyE9oS=3rJ>KuE@+;2ko|@yoBs-Ic-C~-`?5S4nCh-<&h+I zs`W*}b^_=>S@LcfR+rU1QFQy9rb&=3P20ZG=f-J}7aP-@UUuLwSY#Fyo$l8m>XZ2L z+o*56x<|8{nHJy8Q~n`)N^Xl5ezmSRKKNdWAi}%=FMPEXYJ}PvG&v^S@7|^9$UvAkMLJv@Xg|OwJfJHfnsN+fqcb)?M2PS zWs{dt7JQ1POXz2bTwuj81bC_mzL7v)YCCAIn?d2Um;xjT;_gtibyn~cl=?QFTWY~; z*os=2CK2#WXI50aO05d+)zjX%Rw=0=qXGLhDij{#1l&L_HHOUVoS~I<#X$QCg8(a* z!;E5QZ&qRi1@b{k?r2sW^eY5)kkY{vvImpMwsZnpF6)0^c}O&g?93pvD;>oun?v?6 z0)33Sm6J(eyEKdJJoWy$@0HuzQt2SZr*t%n;?DFxk9E!c@72e-vf6#DLxFaSy5et~(_gSn6e^B=}EPJoTVPpitJ*eZ~?I$HvN1K=Xarvk(%V6Uxv_ z5xQE|o}B@BYyn7=2v7f036=r@aB)W0@dk^|tn|a_sO+8~c~5d^5JSX_-j zAeD7uKkeEkn~LO=*O@N*Og@1^rqAQZ?}DXx@luz@aq3qtRll8>~i*wO`sF z$&F!o4{pR7rp|{|A~Mi~)Jiy`sh;e{;n=*x_yQk9$W-)CsqbHzot^+4sgjD%S4@@O zw}91jXvb=NTOTt&f5_?eba>-&7JhM-K+v27nr+T>aH-lqv*;^Zc&4Tn_IjkMz}{xc zK&u8547}x^-N;f;ZGA0P7PmF@%Yx@&jcKd4p(?{Y{+V-@mhbn-Y-nP6AbR(wwO-jE zHB8p_@pF3h8}ds@=RrKgWlsdlg71+Hb>&WYt<&Xv)5De;9~4K4X_p- zKRSTSAXMIXy!(3V3Wf21RqM&7l5Mn>Y9e-(V+y4`P=vOmDh^oe|D&8{MQuUK1I8T+ zXQ}!v3zd}MT)B~yd?<*~rtAj+XepHdpDZ&6vzwuUB&*CMrC*;4<7jd0sp5yk>>!ty zV(fU_!eCvOp!(=0C8`t-LshOBq_ePa8amFEYPi6$Js_HxS_Ibica~tfo#)q5KZBEzuKDecsJ>Cz{5Y(oe}$%HE-Wle3O~y*K6^2be^e+GaOoK z*PKMEci2Q>8dJNQylBY4{fy%8`9F=lw>TFd9+yc5DCfu6!+xdfjBBJ~3IT^2o!@7p zSaAkH5zV%ZVE}dc(l{D;pP)NgD^oN{_2N&C%^5*BUug2i_OG{h9Q)AM@zw?T`;!_? zM+`$uR=W`>ynL}#3)S346Z4t#9P$OL}1p_9X>HmJP6l#~yB7(%-sqIFdj|9|t zg6IGnYyZsoXY4+V*VDeb^d>D#)~hgEi6SR|inRkZkh15mj=Egg=IftN`(izytz)Lo zx*gV$wpm1UB9MiK&+|9?-oi+obG`?*KVys&prSME_eX64G^jH#&q8fg1Oq(mp+{6-C%&bl>jj{| zZeFs@dY${rP<(RDB+v7eJjng*A#s>IzvEGw{6$gXCwZEu__mv&_%;$}^PhEDvhVTF zRW7}s17DnR7e&bquae~Ve?RwszX}1G<~W!ljZp(^G{8=Tinj7Z$+G;=Uz3`i)q3HT zHoNAc3H2lrrLy>Ce*?~aPL_b=_+@oQ2#a4F9`~QEPGqMBv&kIkkO+|+p>y7OWDK%n zp>;k9`Jvqsq{PF>{3}AW6)aOurX{eo{HnV2sYnWS*q`z()IbH2bH+R?J2PEf>ld?c z=b4X;?E-tL)C^>7>plc*&(~Kn^Gc)0q z7kq+n5F&$EQZ$=WI-aZ7JEbS#O%W?=974bxQ6CeU1k;T{cIuFDF7|l8=IJF2sqTd9 zmn#d-Rg)?W-=*jR>B9?|5ln18NJ(k*s`OR#yzSY}bo9w$-Q;3o3gcnJHQM)8K(CUf`kWFd($Lw8XKg_;xOaI%+ z&fVEzeHQ`=&Lnx0^SOd@E!$hF(OMv>L+kcOvz}kG8nBUpH20^=k0#D3d#utlM+YS* z9DZgD2P2uP0%9-4ccWL*ez7!LXLhdFgl$9>uLz)A^fEV^8S%Jc zXw^mj_`haE@31u;CUBf4c3KKV078aS zLIzuT5*Pb{_OsyrHD^j&mS+K};9-%QtG}Yj42-wg`7&BcTh3Cl-Mkzx*?YuN3bQJ| zI4#X;JLnRV3;g?t!7XmM{={@5(MZF!G$cLVVldT^e(mBFA(u0j5wM5EMiE2BgtKF;7@zG{=Zc&7nQQUQ#Cb_f1;wFHshT|@A6*aNE zU~Cpb_U1J)4j1PCKs)SzK|5NJzW(0)db4jU`-$~F!LZCm8PvO5l1ImJdTZq<57A8h z;Xi0c1Ec$$@su^vpCz`I`Ia>j7znEqYz`04x!yWS57TX6Q zE7H8bQU%yKJuMbzpi~hFYo_#f05_>R@#Aau9xv7XOzRfuKhn;Ex7zUu;wERzhKfDu z*(SeRS=Kdth@@fkKhhqgDIWus;W~8{pXY*&;_6NVwmjO%DRdsFlC={V?5g<9RnjEG z)et~T9YoSRcjiPQGnjrF7oKe_hzymv>9QgcN!tRAyjemu?zDD5q~l8H7y3I?y1HAW zHNg$j(4H- zRCVkbi7gU+cB4=eq0Q+Ff~-d}f8_Ym_4AKU#a-Gf;1>ZcPKiJ2B5 zWyXEg3TjfYE3;j=M6*L*aZ-vd@cRe{i?Ie+!^ALv-tSd08Dc=;$$@yObJ_{NR$5YX zwQD1y6*pHxfTiaV7Q5K*EH^0`C1W*EzqjNR&=IymBE=vMf~p-YiPx55LY+@F8OFQj zUw?S=#E1>2DJP+inWAHtQ@iCliKns8;qa#$A3daF(QPEGn-wAd@d z4P*y3LF3_53Q5+Jd+H2Ijt;ZnRH%RB`scw`H#gP+8>d$1*C=wsA|^IQtxw8-8X8 zp@g`Cq;*eLlG)*gCWLEn=KT&DV7`aXJsgk*h}CbQO+w=iXI-7fo#1j zG{$JQZ_P|$6|3>vGw?dYxld2lTv*y^#3fB{{SvyYFE7IswY_U&Aapj6N*Fa*0j{1a zAxTuPdWB9nILt(YXFA1b1`uXjB;}ipE^|5lQ$%~Obf-)Hna38VT?t=$ZPj<+Rgixv zK-?!Ff;d=bnzZ#>MJ(*+?a-lx$wr=@VS=C?GpRi^WxB_N7tWlvK{uzp!*H*)xz3e6 z7ularR7|Gvgz+9-I1WU(_n=?hm@(HLaDpzT)HC=0)lN}q-6hGK&hTC7m+2G}}$>}UGpEgT- zZCqFfSl|SE%I&Lq$M|@%-fjc->Uh+R4vU~yNSqkE-sVQFK9F}Jd(R=NdWd9~8Bt5Pb#mYYHiCn5%^9Q7Xrf70pUtmn9fbElMl3d(~GMN6RJmYYZ;Y-P)ny;Im+52zBZU?=Yltekv}sH^M7 z0)^@r=wdB;Sm*Y(tOcIxEaMjHgqU)rMDBt2VLEOy%>_}V?wpub^NtT>&Yf~(`^0XP zXcy(;Q^8gGd(E}XrZC))K-IG*j$dbHaz8gCZqSQyS7W=J-|V&k@0F5pb zP>cF~?S=Ag&&nh`>d{>OqE$L-0iaEIF-^KPeS)3>U_uNO^@8Xzzyhyzr%S#qUX2(? zP*=>&unwm2@UO!=frAvyjC;}xw#v*}9M*=o#|Rz8o68+p>WR<1bvpPld zqr{NeEkjKwb4os+=9ls2`-OMLL25PncEnNenyM^9$m&^0GJ&4*;?_Wp5dxnJwhr)& z70<*40_u>76M7IUNDAiA$5>El|TDcxR-1+z>{D)Tv;Cp#m& zZ4F56Ji{R*x34nq6ZH!zABr$EyR0H&t(I6z6=VF(QT8XwqF>UTDK~~Qv!JAS`{0KS zqAIj{u;jkJ^~-Eyc_|ja0bNb03SY9{6oPye*e!@+3x^>|KG+d@dNAHmYES>C`*cWs zhxeV_yARfA4+=>y{iUDm7%Bi1N>oa9JCX}E$TzSiVty(Hwrq%I6lRTzZsql()w^6$ z%?f-6a}+TCCYCq15IJrG?y$Gpazrtcraa|zYn7s2YP2p~-Ed>woI17^ObsC`jo@srwm zXI_+3Vx3}}5uiMXJ+xPRp-~mt2}Dnkk>!!zs@rBke}z>XgFPFF89W~pB9XnzkwHkU z<|O29M{J-;Y*52jwg_oM*eddziFzI3J~mwl|SYCN3m#pb%}IFMbCOh38q;i1;>MF z;p9-*B!8`FC%R5Q8H-JFB}HQ;y|fXe1u%Vp)#e<}*WRZoPhLTkhili){?YD-YX>kt)GG=^_o4 zc~bz$m*b(Ge&qVHB`rZ>{W#oz4w`1AS<0Gs9bnK-BOw)lVzKD?=Ri~&VHd{dBb3z5 z@U#M}Bg?~FcU31lvBFVGG1Y~oZHvJpqN^ZoCB794YVNky*T79&*2X8+M4G#4_*QAN zOZcGJ_}4a2sD8Ny3bPcjg^i>2Z}o~+kB^V_YZ$qOw4O-0K1q55Y+jTu7BOmsmS<=j zUp^A=E0B^h^{`=?G}*v+8hVV}IBuXvC|Ax>RKIiR`0MmUVw5Gqdr7c2N5kjp&ApAV z9Gu)ZEwqhpT{NZN&kMh$_*Fdu{rx&I;UZu7H2=1XNoNqQl*yNNn?;JEyYn8K2U8?l zK$<|haECC;Od3I&U~ZX5YUdHI@I`UyBR+@b>0ylI4t7awLb-59cp=@V4|dJPl#V`9 zICi-)DjmEb12cj2J(ssrL6Pz0iiE-RN54fkhO=3IT)rB_HISqTV(RZ}q{JVMv62RX zlOUY$4>Dn*pV_-_GNqZP8NM0fp!EhW`$w8P=<7P%+T-9Rt=g53Q|R&i@}j*WVraG{6V?$%}H+H)z4iSZ{iNP9dz0wQm0^1I*N(6UQ-L;~^4b4*>P zRg^^~Q5AL*HALIk^krfy^THstG40@hgv%xO%Zj{t-&aF@=jKlXrtrk|ZlRA{rs0k8Y@qQpwcMHFf+n8$HVi?xV}4Wh)HJvmveR9Q1hJf*rhez)+xMq{a|%)=5+rORUj z=kY?&ZbucJG3zUNlR;H~H>U|Xq$c}HD?=Zp+&qC@86tAg6P?=O0aD0{JX6W3A#sdS z$wh*`OI&kQeo~HBJbe4pLU%qbPbkg8wKT| zbm#L#so=ahm4p_<>TGuH>ZG@$s-L4O*4eaZY8KfeqmS^o?nX|%kQNdcS87XYhrrTs zyB%%B>dAR8@hI!Cw0LSu$m*LJQMiT=JT%27?1ciJN^L_;Ru2qo85nH_MZ-vQEacd_ zX9H7S4Cu?KSt}8@N_Z3XVv&fep|6Bx=&>V7TPX&xl~OKS?|!P8+i>~N7+tq^UOqk$ zEed>A=)ptYcV1fK_lMti+%eXx-0RE~-^#c2_v_8fWmFy)4&TlV^?u?{w;~JF$hWP# zE(PhBrg8}}#g^n1t!)yYhHsg6wNbD%fULqes*V(+g2A9RgD>C zA|$BEghS($BN334WAIndrVYjTHI<0kg{pCNvB%HWN9|T3BM1}%$ej?w8^ekaKA3*p zrCD(ud%ywq`hKA>_1D4tz2bU}(Xf&#T~s?SKo_0AlqZ0B41ae^$aknE;~&4_oe*LI z??V<;T{z5|D9#7!97U!)Z=Ia5qBmF^fD%chDo5@xEy#7g0}bqbQiBH7xHW~p#l6;j zb_iv~@_a0o7oD7H(klyUNV?ksB4(?-ZSIuktoE6IZJg~!R}97wvn=quBYhc_ihUf5 z^PA07!fhSJV-GAn2_8i9xT2rarfjts(=;e23Klm;Zw2KB_aId&kD>j&Jw=LVp+ap- z3M0&zm+WAUrrC;ksp~UWBizF1PmeO9=%Er>%HrM1JZyA&0A7e5t*rCifgbRa$77^~ z2M5(ymM;Dt4_Pf1EOv4vVvXL6s-CCT*D}8|&T#ja_-fXygBFs5-eePpfNS4ip$i>^ zMUT5g#1?x)sl)x1-6Y;a`b|alTb>&pF5cpP>(Gkc;K8-Mm(I@%=zvgf5~j39^ER3K zPXhzvjMLLE3C=`fdxsO4ExLo6bB&2tW$GP_m!*a#I8Tqk8^C9K+GQ}VM88Fo|DM>C$=utVVQMnON? z8Mm32Dd`E2GHaKy39Mqvz|{xL$7WVVF4BMC|N1w`Sn(M!O%dnb!knG#`XqH$8q<&X zFZ%^9zaVW|mrm9bRKYUNa6!ce&t&ZI%1)7s&xTIfLWdyfn|{LY+me%W;=cIHv5fXm@ z(mn5+;RvtlV3d&i{oJWOel3^j!Nq7b7CfF_Gx<(=cCYnB@quV1{Kq*5d0{u^1vv% zP5IE|m&e@3dFb!u%2Y`v&BIUIEcF#S*%sPBkue-9r&N~sFPCJ~o=y0tiP&-qBP7f6 z%Vqq65P98x+M!W^4}B%uSoXkpC8-6ozh%1{@4wQPfo7C$@khXQ`1Yt&O~oy_mKlKQ zf(v?)08xq4ScbxDQ$Yk)ZTYit5mQ5_I0PIxCAT1Ol9oj0qZE67vrpMVrV8tX>~wW- z*!6&V1Y4;Vs#g1vF|#b^^znT3qFNDLjXGuZ)$dvA&>TgqvX5c^2WqYJGH@OEq6qVU zYN8Z)l0qqKSV4m%&lG?hc9DyXcO^QQ?OMv9uz@;bhl@46@GVrUDb}rcra{diaZ8#< z`)Hb1GxfcUy7f5%iC9MX;|%Mhl;+~8nK;8~;f*o2w*Cs?LR^63C(uys@$a~o)pu~0 zBY2r#%sbYtI56|V(pV`8GDGwg>+8-QZ#ni5AO*QixXQrgaL)iJ4d}P>A`R9CVmuKu z&-i99P#Ihg@EF9wS;yygxn%ECdxu5=*n}TQ%&bfB2>K0^0Dg9iN!Lh&g_(;7ea8rM}PG93^tH}i#MwD+b9m7F@^B`)J zW5`vCK1SZ>7;=~W&+^JnDcbD)6=lS|MI?h9qLilSA(8=9-A&#*BRD|<{l5+fKYysv zGeQvcI2sslQH-ypa(_8)gM2m{n8Q~GH-H0Ha*&sIownNyws{R=e|yNq+{ZUY^ zH%Zx|4_Qgrw-2&)k43M%)ZdAUzMG=iK-QE!Gn*u;?}k2{uJiMF(#jVe_ge53yju<} z>0BQS@c0HVTx!vG=h=TV028hiNhvWFNa8BQ2hU5x_w|TG*yOB#&0OJTszAgNb;6an49p90pRk1h>Dd%N--VfAzdQ{0jAMszBW{DK4hIHV4%FsU)(_j3~I^I z8%Lfi*|(t@F+t}ihv~*A(H2YznN>Vyn78XF-+ORW+vG>Cq&T9;pppsW}qenRAR9PD6+)DHqYG-k?bn2*@5u zUoD`-Ygu&Lx7@T`PY1uTa}JtHm{_HZ4BCG0Y;G=#Qw)s9baz3g>J$~QMO8pd-;)S^ zMUwB?2EfUUxcCri(D-k#KVBan1Rk~ddsR^?^2^V8UVv=XT?9(PDL)|5kr-!AJvd(U zq%XJOw&t@%9#POJHA26gwc>EU4mac7$t?l3(HIp)%i`CK9`aHo*?W*#K^~$@{uG?u zC}Q%?rem13ATp}`sROTB#Ps)jO0tKXf+{g=%Us(ic}4mnnRDw4AQ49-J>*Jwo3Og1 zzdkAvZFPnS?@ElZ-92qi(KJtg$lQ(#+j)$K4r2@|nCwKs<)z*3-rg^Vj3FD~=(FW1AJ6A%U`S)h3~I(t zcm0Z3(Kw5=^CVk4IDDKL-te+2wdJgBYqCcCjq*D!*(^ou4~cBF#n>dJ0=;#eS2>Pb z1mIW0yw*W7H+_xXu@3>;l~GyCoY*Qx(^NX^fL0w#*Kr~AQZC`>s3qdrIUZ8APcxRG z)aHC3oatq|oK|Uf`{1T!;{rotXT=MGLQROjDG0xtdLk>&Ux_xpG&%C#l5H7@mz z@BG7og|W~cW>zx z4EXTgL5ir{g8O#=9v7=C6suFy8;aXL!|lV3)BXIp*MJ26Ibt(GVd{YYB<}q|wCSVE z@Gv#p%k*-oPCsIlM6Mpb*$ov6_C|dqe$|jL477}iG?M%epQeH+5mDqOnc($>G%@cy z`6`{o2;q=0j>rQCEA5z%VJjeS-}uhc8j&kSrQRN~X&9NS%FY3=*ASbnH(b^ph;J3cV?1!$#j|W$sJGDD8e>b*6gdsBIjY z!y#|L3DtANLHkSerhx-0|NEf1*~`m$7h4Ts;KQbYsCdUM6QrcEO7cn}T~GXE(LZ*V6#DOaSeJVC=q`RU`7;#^9Ml;HRt*r$aC&bn{MI2n+J`EL(hwY@u6$V*+Q3oXAkle#F;<`&aRIK*>w0 znY3+*A=Xxs>dGIQ^USbp7>`613Q<3S)_ibQ@Cjr_%bL9Xzk;jmI|^B6VQ(l@_Lw&1 z4EG`MJ`YYR*H9Pmf?czX(w2fR(LpdeVT~v7<2#qXqf&H4PZ@fGOT6*Hy=b@=GcN{sr#un(kjuW-fASZY}1fWJ*@7!6uhH z1jL@)4I2q3h#(I0z#0n#6*o)+4pQ_KQb*G(>E!c1+Rq4xCIiK%Vi@NgCWHD^I~LBjI^jMg%VuHQ`gPBM%1Dx#D1#>%iG1+db$Let-|?vtIc=sNU*k3CW@ zlB~=c_uRwq0GrZ+;5nqJ^>6_;4nx;5GRPz7%-Q=&b^}Oj1ldP<+8N-m61mN*T6nXs zS3p3G3G>vkXkr-t0a|!22A_Z@x;k(8B3Wj@S!}aK3}67e4OtJwej`p>_qV0EW-gft z{_e3c%I4-pi(Wm{YSk6dE8Vru=L9Uk?U=;>mkAWsmNHJebkO$~sO#~mYA8h@nS6z>T?d7U!IqCbX1w{LoWTq!#{_MI-a&`Y zoyf1ChC5$sv82Fbh#^Ur&SSVxs*b_^AbPGynWDschu&jIkbOyT+BJ_QX=gU+f3Y14 z+~wlaapk*7{;5K5P$5b|H%$?xT0@x-dpf$?>FK(<`qDBr zwMfga-_H845NW0!a~-9b7?s|yBU7?d-Yn%vh%=HYr0PqlL#KPtB9|%`e&y@yTz~I< zXyw)`Ird40e9v2bskJP9gW2?$>(v-p9~ZZp(^$mbkBwQELa+`*OevF^^>A?zpxMzu z(5N|f%Rw3;rm6gM6;~!Ltid4;32BXL$p+3)!~zjenp=i;S;MNA;i{&e>ehJpUQS!* zdLm+n>2ug{BKJz0`okg-t=L#2YmA8)3Z)oU(g?4g{a>E!pYX@Ia(|mYKhfrf2KQ{BJbEud3q9mC@!eBeY(KFUoRBY%2)}Gg+y+X5>o;vM4 zo79({96`)xN5-OCo5G><)hE## zUb6Iy5kaJ;t;vN-7e;Y9OMC-6)H>yA>b#WFgkHTUvJN)(q#oa{zl?ca2H!;Yx#uXH zqO~{T9)5Oy`Jq{8+ zi1hlK!=Kq451BX>Hz3hTbfoZ=FLe&&D8FxB#ZG06wG3OTRA~PFRp23ckeMiKjmkZe zT-vsUpK7(mCM#9(izSFeT9VVh$|(t| zCZ8cOoze+U($0UV9k+vqPDWHRPHJy+y2>a~Zs~`bWMwf0UL{6Gnc1{Q6FV zcq0m|f020sfIN2*d7}v((hTf#;m^|6LDoA0({Qk>7zE7+zLC0eaNmuOXc)Rc8F7%` z-5_$TU^}|l1AM;-c%NbI41B!^L|gw!A-Ztm>tYznhgj!RLBDItCjI~$fx$;`b3B<~ z2$@^}tehak9kG*}M*$dD5leg^*Svw>V3*Mr4KOEVfStJAw$(a`j9Yg^5}EDRa+Ny$ zXCDHAHUG9B<9y5lQ+Q~{oj>VeH6>zQ-zI8U7Z!aef+Q+QVO-l2zvoe(L|AsvDg@?N zLGbE_f#03Wur&ube zs`*Zjl+~g?-`6LUeAQ%@nC2H~R%X@*fP9XFSz zfEE-oMfmh-UNe05C&(d~b#m~*MMKaE zW@~#vPtNQR_pA_2M}DRpW&ctTz?{B&&bmY;##HTMZlf;kBLe=IZ8dfP`d6r}TApOT zu?+RuYqqBU_Qxc9@T=7B*>I{W{V8VUZ(4W#f;){zOQxheQtcN2Ts>TC=3Qg2dQ>=l zY}J3?H+GK@L@NiZf|W+*pF;w*TaT?Pefy3$vMWF+%}$b5#aL~PA_Ae*MAtFFBbdi1 zAmUL1YG$T60aW|x3z(^BT9)x_HsndIQ^fT;jVN~>>!@#^7D;^TIV0 zhwhnFtk|$THs>TJ(}U|32C<>ZlKw>_1@K@nlx(SqkN;K`>xb$^f`8(e`1LnpF3y~f zvs)1)`&%`EFsA9XGT{9#Z7M3eTMn-G;yl=x#odU&LL*Z`w5w3|9+j1DU)CJg=w6Eq z8a(xAVF6d0B!NF&R`T>-uXc6oF=qJWnlT7Iacv6TLi!>4_q8l0Ab+0aA4YKO_dSqI zfvt6uOC+!SJr>dG4@C1`z*rtPXiD-T z*q9)sD52LO{jAHK+7RT4Efy4%REPUbyXU{+P2zZS-D!O6FEBAER8z7qw^Bz<2YT|A zUW0_sj|aTz8eb3J@9Qb3UC7Dl(z%I&LK_oaaMYm~4W-pW%eC|~25U-{IqD6>=QQKw z!nz+F0r!cr^q?i6nkQg+_&6#R4%y{b)7%egw`Ig%(56@D141 zb>SZrYaR6(NzKBDG|1TH%f_n~YNFOOirQpbof~1BD|4eGn0NdgV`a)5uf*^}*%|iZ zW)6;@yW$63tC0VKkj~?KT4nfQ4-g$H91_>10264*n!YFNU9-z67+o-eQ0s<*;?aCi z)w4ij_NCw)N@USy?Tk#m&bPV{qv~)lC`Qi^RY~^b_zz)9@3fB!uR_%3is#Mq<6kH&2h8t z+xZEZEA$Y`&|=7?fb{A{={*Rr>w6Cmp5=Z|UVmLUnxbN$xxTz8WCIh5am_vZQJ7RK zLRL-ieMW$L@MjZtpn#`4m`9u30_QiOb%Je=sEciGE5= z%Qi|~4bndu67S8D4HMlcDK&`=Nn5#NN!^^m`D+O~wVBy#*IZ!d`)+z~Ml zqIvYXWBxG%)y7Y(q|9*L8kKp*B3^IwzOQ@xbm#xT|F$JeMPm#{$_e7b{mOPDXDrX% zL5}+PvEF0LjWr*`;*6)QH+0TKezH4@BMRV+3d%yr^>%{awfXhwyLU$kJR_k0*nK7A zHMMsoeiwi{_}>6>U#}c?jjmB(D;LO>zn#Qt61>!Ar=>B|-hA54;?PxL6$4PD)pkrR z)sGJLhtS}0R>Q5N5`{eNz294eGE2U0B!6L2Ob6w_pN}H)jtTT^B@w`kSvykIz1cLT zP_tU0IV4Ln*MYJv>FDVd@1ib-kO_})8v$hnKcl&2e?4|SphQ}_db zPo>HPj%L_n7@#_wE~6a6f*W%R4XH_8+J!>IWcI2oV>ja zJRNPXEZaqxysQJ^H+EY=`Lr4w@yJDi+Ki57@a;`K)%2)QgY|_$$#ba4S=$*@e4wy2b+A3iyl*tQrBN_c5NF!6c;SKG zofIls4WzXXC4Dh2DpUZqzM>kSH3-{w}Bmn4-DkgcfBwu~? zDFZF=R1j009Mir*lrSFC`uAx!9CZh^n@UxdEz-gZoBvy;R>Nip;vr@_JpGqN0sV>~ zjuMKDEV}TUhA*-Z9kI6a z#Y^04-jF29!_4OkB=6|(6BREKyAX0OM8TBW#Z}3 zS1^ljWurMJqE7SBrzWElcy@aW<@+Rvoq zAwL}L6}e)8&@XQ3Mv_Lq`_1mqYr-Bqq+rM)dktYbOnN`XAQfy%Z|8>d0cz$XMC~xt zC;c`~Qf4rYqJJNsG30X;efI)nsKiTqCjo@`DVVb@Eyl~r{wW;Oq}u#-p#|J?x?HoU zc>8}oy%OYfOkEQ;iLY0#iC`M=^|i&r3!2nQpcdS$>thzxLHMA7S&6Z=Unbt zXHBmrn?kLvRul)gj9I3#LBHwH%tSjIbP()iIQCd; zHqGYFUY44RSdEufF}25smx@i5ut*qVZR~uQ-Xcw%A;8pL4!2Dka+^8l6t?LO^35W9 zc>7Ziu7Fr(ZXw(F{c)>;+8EqSbZ3#@l0?yER@-AiHJ&MoEcXTBcW4TX3zOl7RC>LI zA+;N!kTw<1kh^Tmi(}t_j$C?d4Cd+lT<_?+48A(XQI{%GEA?YC?`aZ5hS#asjwV*S z5EcoV+j;?-nrg?Sili`?|ZAmgpMNaH^Ax)E-Azf$XyN zX}&7EC>tQaFeob+qvU!}OQ`?MutX%`XO#{&g0pSpCqAPeB9N*8puu~|cz+R*Tan{t zjKg54Gtk=XnamnTV7vjLy-_396epP69Q*R=~FI4(ru|sQGxh*cA*+srT;V zXjOA1>jDPg1-!Pns#MZQzeT<~oV*EgIrnUlTR9=2s<9H%O^eiwwc-&EHbR0+Q9BpO z(`>Sqm#d0p_PRjwT*5za0)jw0Awbed^iGdQSu);EzBC&}$N+mVniH)Br325b7S*q4 z9}qPb--%YyMTLfuc7=_oD*nb(cjz=UCKiDvi8ot+#YKWR&~ou*bhe2ch-3jYuDg2D zX#o$#RMcuZ)GsP73S$wn3x0Z4h7zOTu;@}qx7GKB@=Al$)iIIAQB-1zI46B;;At3g zA>hVOlrzo3no*)2AeOaTn6p=S@ zo?WQK5h$MMdU%ivDE;Ri$<&ptqFL#s1fJp-8%>`k$ftYOWL7N;aPw;}C|K#WmqzZl z;_d^lR?9d6a&O=!!O*Fd&MBA%voq5KpfK-uIj;zvw5wZKkt50v+JF_Z@$XEpTnp*v z>seYn1?@leZ2gtU%0nY%YP7`*Q_E>_FwI=+xi2hTAz9~Ct(1w!vO{~LgD4w z4g_sLT%SK+YAx#@(7sosY;DE* zTFt%~j%l)I2>ODgZ!T2XY;1ejxpux|U9rv%v?bLvy7hv2v9!~ase)0u7r}$m5)a}Y z;hX*s`vr51)r@e&I!XAK?EOf!rWibEM6$fzm_vEXEkUcRIFv83(%pqH*ouoo-RztT zM8KUvlT#XUpB;BsCS@nlQ*(S)dTce4`{+d*R)ElxbbXZ@dspUA&(usrW?mnkrNdIp z#r^4W6{%Sdv!@Y8t#U@5rXAZ|XP+b%fLY~ZL!ggn+W(CKJIPnK)Rl>SZSEj>@7=O_yYeIFQ6IO)PS zsB!?=iZ2na)g^izk}b07jgsecfXzKV8`qT{5OBC4dI7SwEkNp8fc}zXDKR#43cjpe zC_5&g{n;4l2)cuaoy<@F=&Zq*Oc49bdb-S+R&C!3j1Pa`Us)#8$!)+X?8fpg1jxV;5n}uvuO`L<-je2-dJx?D zsv^L^tf+~$bbrU*D#s;stx+c(Gk9^5wo2qKIjMo6!aomUZwe9c-j`1Wk~H3Xm7wS1 z58JM9hf2T=+}w7BOk{wNm_iuR(EZcXod~LJi%w?m9f06)kVPicXN+ro}dgh=HTi}0OT9=B7m|^&nIykbCYY&`9m07KgC5-gbrg$rXF%n zn#4Jb()M;;uS0Nn1qwh;3)vhi$z>A3>g&{d7R*x&x*jcn;>|Lp^&q~mCBfz`8tyr-^vfdZVJ@L>-Ik;fXQk^ZJV7zSkP=L$> z+6}4Fz4HtdV77r6@<18a%OLGDK8P`b7yu}nmE;ESRGg|H$NTrGrKiluhYhxx9@1vt zYsg|p2P({l{XEs#MWsNuQB&=b5bOEQyCEQQ$f+@tX%(ENL!{0G=|j?Ou@?*K4615b zg-OQJ3#;YtVg1x7Z3Ai%B`X&__p%tVu&NaQoFLMBV4HZGE%iv-eGXxm`#-DLvd3hq z%;T1um{_lxzSS*Jr(oG*$mWJ)8tmsf;|7E3&S5Q1N|h043! za7d%X_J(u4%&>0A|32k%o!;@n&I`uEfhxcVOf4VqVSgkYQ4n&8q8ZoGb-LbG{iP$X z?G;ukCZF*F(i0LOfs7AdV&^`=CHzDssxWgZF7r(L#ET`h1s-G}$lzE?pdU1eRp{g$ z3yP)myHf04~0^-X4pfVg&GQq>Mf*pkH(P$Ro zR~Qu)1qRgV%M-Dfyb>9^aUTwupe|#XQIoyXCwHEd#zeiC6v)*p%Ytb0x7kDP{P|8f zly+@CzSlnzfEz%v;?A7v&AI=y)ufeaKsyvO?XDhj^xj7j!CeMoK9|gJ4_=-_J)Ked zxK8)ciwt&KYx3}~^p(Jz+1qBkG_SUj8EL9LzU;*uCxownNw0S37<2P+m29n_l)m|c z)StGqwx!9KK_G`W;`OZY5ct}LX~5mJg^KxJ!MgSj8k{*aLCNVv~-U^?MhycxQh{Co>zR8^r)RIZ3?+*!$I7Q6h{2 z{?!7dEE^og4wl*gWN+SMw0Sz~iO0bk}JWMH4%6@d8hq`qM&<|=ydRbv*C?BZMeUMzMv)W5XU zI`6Kb0Z2BsgEE9tnb)>V82RnoKrdPO<6fOW820W|6z7IrnSZ;%iR|-wA@&I0=M%*; z*a+qUT9eSCO&QfY*qtYj3L^T!?atBG38X%~PnJ=9wBnYlL7#xw$fkfc5Lue@sBI0E z<5%wDX%Ffxem_zJ&$IWU=k+w-kcLO4=v~xxK=hsoi-sDBLfy*(C^j~7w(W(LGO;N%y$JGl|1%g zvU8{GBs1|PaL7ySxDn5CU@R4w$rp$yt*N$t#6>lfG{l$$pN}{F%+#*n5a|`?F)ALi z^xfUGGk0V!ah}2HA@#0Io{VjF-J|M}qEEh1vB7?-H$BM!K5+}@dF**^d$}ha_Isstrb7%@mXVpNxpC!2vzL?23 zNUN{V3qAr?`J1Aym=8_z_*mG_o^$sq@9w%G(Bfj_fn)!6sHlTWsunJFb=R4~mzsjUeUPDUd+%QauRJ+%fcD_{uRJ}lp%gCp;XOT~ z!N_cSL-_)bM*a?rM(YDUTi24~0^2$V*w4PJIme1y1k%hdw){&URWo4L+XLgOZHysV zMb$NOr#}CihyC1ps6857EGVXghIRk1>&)eeJkb2`0NyDua*-=HOmYN42eAdyq4n5a zIrhsreycPg`+P*9>z#_&=!VBRuJBzoUvrEHCBBd|rYu8yMKtEzUis_rbS$>K2)m^! z%W|SGV_bm;c2Nhnyc&DSOqxcC@i;7|dK`O+EWCVcliR2jju+u6EAymxe0qurG7K{} zO%M*4=qc4J>^hNsh~RSwPt=J+p42c8dN3@82b5?t0KU+JTlOsMIGmP{p-DA6UC zA($kCtb0)SVGudfJm+VP-yv5(wgLdN{ER-mi?j5bV#>)gb_(u24zECA zFPEBEMuk>|!Ct!y!wj63I#3~DY`)fi7*xf_=5WNqud}7;KVFN(J^*27ELYsSo-Ht8 zW~69JRK$AwgiKnOrx}XpG>1aAE-l{=Xw!xLPA(1f3zN?0KnLmbWl_5B`4^bu7-y2kC9U@sj!cFbW@H3m#p7i)~65$@n> zOawAf2R0#R8xnPm4(uAEPs;cN8};(@PzT^GeA7L43awAgI)lFA)A?lJaK#sG^)tM9 zp7#0P)sX)AKE?F*M20kK40OhusMo_%HCDs-JJ8d8!%?oc6LxaC7`yG28!oq_JjN-9 zsBm=WJMJH)-@raqVyI|qgDA~4LBwF*_<~~Qs@g6d!l(Nh-oZW<8wRN0JN9I)HzCzhB{il%iAPj9%) zr&4+{9qcK@wzogs0z*L$<_d1m`rZ^?&r4#tfbwW_%HIprSLlm-S*jRRN`z7LA7PDd z0?Z5*4W@ACMcA>PH-`77Veq}WeJ9qdzO0IW-iatBn>I<3^Mw~4B<|%a!Ia8jwRZJj zyt_=L6BbF8==O)gl%U{W^58{wb`M_|=-r!S^}j08vTwdd6E2KxUq*axi@iZwP28B5 zrQ6E}XGZ^;&PF>0W;?4`&8HeA`fHDGFN!s_X=`_S6L6SL)+1+)&;CAudr!W+IujTk z?j=;UDicZG>OVZYByj5)j0OD%BQk!P|IY0xH6 z^ev-X2uNuprA8)6rHj(ZAl<%Y3-m6utxhmyY10P3Cdibj%R0uTli#QWiVkWeb4h_xBU7 zQb&b$e!vP!+U>OmpZn8ckEoXp7{*sf?e0jqaTrz%Mz?{!$`dz!r+R2WI$VQfEy@!} zkI>Y9r1^bi)%_DCvt^Nlr1uWMcZKcyiLK^|1u5`)n1sWKl0!QvkWNyGt#)bFR^FZ+a4VoFAPD%DJk6228ph7A2v z4lj^B0EpCa%5`JJB6r_pAwv@j9ie{XtInYbNaY$3+|@jplC_D4{$1$NZB#O&BT73UKs$<{eC98#h}tM?WEi^m$Jf(Nykig>>R*{6 zm@oXS`IkJly6DhPsAHhLyn|>pw>ucf18hG=MRSG`b2iAy-8jD>o&uXF4(7=^Vl_<# z8oeGtIN{wmUPAG;C?OzeEi;Rj zF_)`q>XoT|J~O6I%ZwuRz31@wm~cXMbq*&!EEoH*TsGFTdQg3e&OXrMhaU;fpOxCC&|^2_$@%>bj3IN=Mi!qeFamyOhCCd0GP zt|~zUWnrMtgzR1iK9HV+-CcwJYC$S@d8ve;3VJ>h+E_ zoVwE;O+dJ!rx~#lwNUXoF_Bs^b9s&rgFwlyXD}{iKqA*Awxk(+ztw6N(mrcP2e6Q6 zu*LzPMCWlyxLHXj%)M+BygS_5I{E&QZ>O;p%jQ}YGM0y;*fI2$0@6H6!Y}zHKB|v{ zhp+u57=rF0Glbm0)EazY_ff5|UB$0Q~j7SIz28@Ln zJ)iRD=xJYk=QfU-lb)84`|d^v6nvK}+>`&eS}fmPMZfmUS7zcbibEEzq+WFK&3V>1xYVPKM81l~cRRrN8NWi1=% zmiS*2am_AVxqyXsB%5?wrcA{g2UyXC@5X3x?_kw|dEfG5&aX$rCmDZcQqIo8T0{j4 zs)E1wuZ+lAgW^plo%&}8&`^`gUh3$6NtQ0!Et#IWku9a%IBd%n#X{;rIE{=aEgQ(7G5MLs3DwrTu&}{g>=RO@aaG zH&88s;zL4qB~vkRMUf#%xprLCI_{=tKEzC7rDWemuS4V(z#pW4tBnHWvhkQta8s$8 zT|RJ^DoJ@G_z_|?ojw0=n^D0}dbp&*MuP|`su@;3WQP0w(tLTGM2(iP_YrbcN?uAwH8rPM!m9AG@&6h&ur)9%T1-FTbC}5ExaAymZ1-diLU|4V3D+z10|+@`o}M zPUUsS^Yqdb;Y`Z0jAx}T?R~o8QOJqiOdq0$Y9Ujfsq?5~lW8Y2i~MLv`Jj3dAcA@l zT}*?IiqEQ#^ERJxyI6*Fyk+|hOFR)R&gO`fN33Z{l7#n&Ml;;_Hbe1-tNV2OX2}y( z&hm2Zc()5rN5Pk8=IpnWg=-!YexI$!1{R^W%(WiN4;-q4DZt7ec+ipI*@|#7O2i-0 zS0>-L7QIQOd2Wpc2UA2Ox9$uQ6OWXnv%f-)-NuT2KNROxYN{BC4>ViGbvtfv_ecNb zJQ2S?euJ%_@4Y3w?}Hs(@3;HNRJtCIr=g0}pXd9?ou1EgxF1nn-mAsCvZ8{co-XcJ zt&YTxVD6r(q4WgaNrj>^Vk((5NO88Q^_igfXpbLNMjC?JwTZWzA9F{Ccg%iRE7nbJ z1QH}g-}91g>u0Qz@?_NG)j~s#{`gg|Ts5fT(~6zVJMOOxZDqyqsV0F?->DStlZ>-( z)Bho?zH@UWcgHdK1(DWAB{!f z@da)gq$b<0%D#bKe-$UmPe*llK=H53K(`RfJ8V;K^q;;+jQEHwxH87j(^;=Kd!EqO zAL_Bd0jMWrM)*Vd+ZdWnZrfyY z(AgIRVjHiK$+~UvJb3+7>G5Hg{H2wHh}6~sOJeXSNrwW7%HO6c8YWHLYdDf_odskYF^u~5oaIePpU6AJPMGBUWvNjcdt^0Bc$I$?_0 zS(Ba%%{Yaj0SMEr^gosu+)*EnN@3c$BTO65U?CJkD9Mna-{=%E~s9`pdB zVw;%eDaF`E_0@!hszd|xzqYPbqrEB-k%z07?R%?+)7C+a%U(RQXlwgnM;4?bXg!Cd znQpVQnhKOB_r`CpZm5us&t8iVLR7O_Ixrt-*afs;_VpinqUb?fj)?CYIn#u*KC7uQvv zk?)1?I-{R8jJ24rlCO)A-)q2iv}Oo`-L#q`&;#RihXEnrekfEh`)vod$%oVA}mH00MZlD(~hW(Ri6M#j+eZhcNAXHDli35+Vb&+<-j zW60M&v?Pd?TZXQbNLv4`p?%a~XIaX}z>F9+-!sDtsaHGj3w|0zBkjH&dlSs-3z$nt zmIt}h${8}Q^0JBpkQ7yVXfNaY2gfZQoY&(g%^kOjp>AR(&sImS#P)Qzofh%e9|0Dl zX{uG{JB=wtG7;C%ourAvr5C>pZq_ulCSU}4ywHw@C-V|@B;O*i_GK#b`F_mXy@;>M z7uq+9{ebAYZYGQjHyuxO_KZRvn-?-nh`h-p>;!amP4lq8>*8*+Y4k3&m_=e)P}~SW z2lRD;=8-N**%?q)cOUZZxeTuWZ6 z_H4|*O3<1wSg`d&W)iQn78oT$=8p=P*u*MyrGS0krQdU#Zf%1V*u>z23UvHV+l{uL zC>$FQO$4-l9&tf!BB&POi3S4)^}}!|XI5jkMMI>_9KB+FXoAsZAfFQUJN~aJH?b=p ze463R-tP3Up7j;l7r47Uha z5y&O1cvTG+pnRB(K+xRnCAQm)aZKiM^lJar?Kkv~t`eEQ{wuBM$a&6>(lr>Zq4>!C zhotk#%dRx8KojqUlop7TS=wsnfzI3hw}|L;uxC-@>04TK_Io$1yEKP+AVSNxJGq(=+dF1A*oGq*JI;QQXGUO1 z^fV#{NI2e9NQ0f&7>LKfP7UQ${|iVnHGm}>q8}Qql^`|Rr}|5y;Xh>l|Iujrjn`c= z`Q2@IVSQljR>#=M!(al8&Snu~!{MMWlTO2-Z{n8gwMOOthl+B)_f8`lMA5A0o@0*rB?=%M2%W?N24``F4FU|*+66xPS*?g7I>JY) zLGs4qsM15F0E^!jVyY1F3rJ%WI9aCdVlU^HX>jnJhQ0cSJb(r%Q%hz(qcFv>*ogAwY( zjm&0j>lS4Gc9uP4*;^Oe5`#Z%`EzMeDvD?(wRk=3WPhl%c2{?49)sNnqa*b}))H#A z=M07UXM(*)a4aQJwlE4?#1L}?KB>jENz(T;8Qn-i%N3%?Ns*8YmN90{kQEGa>*7%m zbV7{gM%g7thKl0T(xObQjMPO3ow9nPOK+JGaSB8UsWOACGKEc9KdhkEOX%JwW*~TT z3w_+gDc9(zlcgsQ^m5#tfZG2*q#FBl@}m%UWD0;W5dVg${FHNN8k!M@!r-z*=PEJR z|8Ug|zVW6Z&prQdxN3RQZp!hoCkZ4fV>Z`rcfeF{jO~?psc~hth{%sw@H>7SzmJEq z*I~3V08zzpWF~mR)%-+~<7~Rn75l5&og2KMkb8b;PcG(O`{k;+=T!DxP>C&8zvDBU zp5wCH>l9SV`tZTB-N$&v7D)RdMe6oAgpwIA=T@3nikGO6m=)I#?+gN2K>)d)emTu# zod>O9DM<`*L2QifiJYEJZk_v8f|bNKi_3&cHyX2W!by3KTpm<1-yD@x_4x#1trpCm zbLCaHCYoHwJ?YzV0+Rt(Y*Zvjf>a0;77L>9g0f#6=H|y z9Hzg|HZr(8(CpmCtj_VG%5-4Hl<6N$wth3c3LM4^c#*5ki$)60WwkHc71;LJw2|tq zZr85pUAzA_wtGyv2S<@5hT1Gy0~tnM}7Yz2rGF%k`!7yxOs7i_JIq!!r4Ba2eK*Ej^T?Et;CxWAlW4 zWFVB!$PE78?<#Y$c!4p%5a{ztNw?1^_${}ICD0d-5(dTyjHuF9g$o5Ou+OuFz74gn zaTpJj9|YG{HCe6F%#;7s46$sxFrd15|l$=c{@(78N7BvrnXgq>0w+g zBA@?Yl{FFCTb4CcQ_EtPWxWP7?UiywJ(FGxoVz(K21D*h{p>9)>74Li3(Y=cenj!| z)eJJ@iSeeI+~5?Y>wi#&$b~jA1YY}fWmw1GM=<86-Map-E(Zn&2em*C3w%sbmVooF zQczQCKT?rO`bj@BkmFKq_-Jv4%L?7iU!8ScjS^Pn+K4rvb`LB_-AeT<`g@B98&dXt=7vA4e~^82K|{-MIQc#CU2d8H#zuUA6_t`M*ZPq=8G2GY*wyUnCkdCIOF7X$p|0JHF|i*zCT}hK5R$6KZsXY6F=KV4ZhQdH`xYRtPh?Qw8)=L5+B>||56{iwg`|V zo%>&w<@9JbJUiM|66M-HRtEMvl_Fj!hCY(^an>yqJ9D2LI$NMb>DEH7TT2II)-xAS zk8dW=`Q*YsQL-R;sHE8dHy}x4YuKgCShtU*`%`2qq?v399lULifJNzZQOMCKI_#YC zSE4K0`!jv2u01-iWK5J7Ch{YNN2yi(B5RG$P_)NxEbrOWZQ*~szS2pO>4ZD+Y=5cV z;lnDQ(8b-oc+zE#fCr8nwY}#gW&883>F4SCG?^w{hR$P7t*32wG!v2t)% z@pn(6V;Fl-&3;E_%xjIjEhdwJg@qcb9UWSoi>zzimBIB0Ne%DAPNO8(GtkrvQS`~w zx>MqW%_9FEvo08DUf#>YP=Nn(!rnxsee_hy*(l91%Jpr>*Nj1B6`?%?q%194bM%k- zy)o@=k{&h>*2nVS&6eKkbxr1lcO}(GdnCaSVRdh>vMi$c(mOl3^_#3iqBpmj-eX_c z(8yX<)fpZ&;}T4HwLwQ60DjE0hzuiDL!ZR29FqJJY|Idwr?io4P!Idd`>Ro}m1)oE zGUZNVB=-n3eRtlZv2BXz<-?7km-m6%itl)89k_`8t1S%!X}P!|k$_c)DS1<#ok9#8ZYME52bLUok2U(s8H&8VU9$nsMSx>pxixNvJXR3k-xiV(nc zM}`&9>tJ)$5tym9;NXh*gsMFfH{vMkzNj&alw|(x#X#MeA}>kjYjJC7>v%@%E$q7R zBK8qt&0d?uAvf5~ud`g5#E)*=#+5-X2PRiVB~eljjyy(1w%-MfD#mz34e<)tLiNtm z$LiA9ug_$rfu)V1fyQi^5owL@*n$x)ZN!Vgz#_*U_IXWqh6!ZMc8Zo*v1^oAskNSG zA=NSZZ*!0CP|jH_({0iO{$~sS)Z9t2u{*xeU)5q;L-=|1>dKr;M7*C|w24|{%c^dvD~NK0 z9Kbm>JzIrrFZFMoZd{`wSb8Y#q8htpTWW-L-w2`PYbb6v<%@6|P5a*whsk$?FLb-<5jmR)zHlya*c)P%l(RR{ zUu&4>@+xkUhV!EU-a_nmp*2)LIyNK0O96bk`pt$TTn8RDG^?iHsHFw-M(zIdo<0Rx z=9^P2j^zSR^GdPjUt_cqPwK`qT&^vnKc|Ye@ zH){QtR;0|6Kn5XG{TrP6r!mH7)~?LBXVI?g)bz>4)WO&iqaFd3tz*V^y;r86vi0%o z?>1y&t+eag$uWMs!b{-O{T^RANGfn_bZVq6z5LdUg*|GOn@Dv=CXP&HM)XFs1a{AM z5{Q%v@}VkK_ALu{K5^UnMDtQ2mbL>DrC><1B8pC?JEtuQ<7a7$Dt9YDVi6U94Px9= zC8S;FEp^9mjME^3qW{J*1(F`;Eu(A0;tsBf4rqvsg~zKD0&o7EU@|915n{yGQZdq~ z_296q9aNGSOEcCeARUN*I-B!hh%nKjtePhvjP=PbOzF1QDi|9nMn*G<#@&JaaiG?V zVUdoDAO6GG&o3~HNinJ}1d744%^%U=6Dj9$e7+urf}M#@^NfAR zrb%#eieQm0L6vY8o^KM5IJi%I-ars-D-F#g9wV|vs=6Fs?k4nXD=?~zRt;>wxDYrr z!C{SIDbs7KnXe*njx*1@x5bzuaW|+kGpj#4h+J^T7Q5PW(*7dLR(8nRbyUXin-25*U#RG~tOxHw~SuLYd-i zr?qjrn7Z=}gSLgp%wA)s*8YlK2aTd0!;jBbIhm`bv-(ZwF-?Em4AZ{+&(3l|Oz4LR01MgBf0Iasa7)sE>0#TMcRpxxrYwgf}RaI?b_{5j#@$o)G+h36-1| zkq~)f$99>$uD$s*0)$v>P*aS7RWGEax{L=E`y~u}dQ0KZ(Q_bKNOVsI=@u@tVkya% zyt!64pCT2LF&f}w88_0?Pi4n>??-9YFr*Y#9k=)lj##SQu`)NN)7mx3@ zxEaxoqwc)}kBeenU4FO)+}s)LT&ECh{Rp%m{a>ILqvS7rXi&N6O7Vn(P*5FEhBv+= zg1AOjYJ)obzC&pvt?lS{*Ri(P@90``L>|2}G5*}^r9UM3u?#941)+HK`+Nuh=s*IZ z3*0Iuu{M#_4+t{$g79FuAL|hP@nCO8(RYQaC!^=Y2wP#yy)QBs3_{SDJ8)Cy_M&9D zd)~7}xB{&8^JD1Flo?z^cu_3*v23|w`hP^zrmGCN`R|ZTAIQVeyB79|g&Wg9IiwGX zrVbcZ92nhLUebr}NU`xTY*B4@LWBllS;AXx1_)-9lQ=qUFJoScqZot5?5(1XScX5p zj0-K{J9DUfsQtR8R$!4o^mET-Z;CK!BnfS+79$9dk};AVArau(j*@MLv_ z9+7>12xQ*gRI%>u5P@^;?T~$Xmdd=o{Q2SiFa8Mf&Aq(=w(jqd`)_R966u?VKI#8F z8S91e={W*%1=8m^`HN#nipO^&n<9Y<+|Ax{QFK0h4HxY1kg2f_`Xndr95LsOOa2aD zJCT4Q@TErFo&quy?3WXN{qu*9V2_NLyZL_ypFu&nakpKp1bg5eT>qW<9k5*w3cC4U z7w}jM_Vd9ZZoeT-sh3qtDnR4aZB3ZGXwVd^dFfzmQr-jF6>IQr>U71>Vn|3SAVUM( zyg4tWG|l-~B|STS!j+9DqVaNwo!txw!p1^& zr7|hC7iU|ckf!07sMQE)oCm>u8gbA+5_S!g0Pmr4=F92-Veg&7D{I>L&2-YS-Rao2 zZQHhOyJOq7o$MGL+qP{x|9s!|y>rdX`5euAvTM~|tMY^>V8DsMN-sZi$lcM zI(0hSJKbPCAoQvp-Y(RiTjvfyANP+^#jn%wu}DHT!!6y_$C|(8)X99};D>e_>W+*B z8bqAi_JvEmL(8}IR0U54aSN2&@dInVK5gzNLFUZ#~to@IniWu7w;q-I` z_#~qWiiV~}25C4>~u~oaBn?I z$Oy};g~NX5M-y_P!Q;Fi3(mDL+FS3yn+$GZFj;BXFCQhYNbdBqRXs|;@O~zQKBN+a zSsox~wjCHc~8XG2XZ4*<|F**3a_R&WR$!K@+#(#<{-`)9nF4fc>)XGh? zJri4rJO(6^FTzR__scMB37`-jV;1K-i#oE6=XuNX5sY<37qI6nlBRQ#4MZOE37BSf zw|-ByHbU#lV!n1(qf*e!2A;H1GMV_Ae`Mms_Parg&)(^N%&{S*&lIq93#gtOdtOP^li^a6J#Rm5Jdn<=C90XR#wb zr(D(C0~bg!(>sDw-2Zv!lZ5-7z&?viGGeRyX?Jr{0*`)Gqn)BVv3Kssf0tNP7!Mmh zIDWX2W>SewE8GRjyki173hgt-&y>ebg8VbY0AP4hS!G2uuH)~nqcoa6HG#ODtA0Rc zTJpg8RV7epSkNlImy5#Or8nzenquLPnmz9OdUDVuu_c$H`e;KlDXYHZUsu?8n~=Gcm9oC6{x@g zgECAN(ESY=*{>S-rDqy{2LF`v>GF1S*yn9W$w3CjVm7YgBrKJs{UyiN z2VZ;kjaO|&Ki78SjXzl{3@jel?si)%JY24~Kkn&MejTIRMP3T;hL*N(OZUs=;cLQ_ z!*63&P)x^rgvmiM!7IGq;_8V~mibY_Ua22g0Dy~SqPWn&d6>~bG-=;l6p752(h&51 z^zp+i7G-i2(BrHZ+D_z!8{);4y=p?6041GR8al1VQ-n)|>DiUUj z=KXkX&HH6|@;2isSpM&*F8^yt_#ibiR2|N(x!oG8udpfsp6*M%za8ea!geF1Dal&H zQJi3}sE}{J8%GvZmVcFeke&01S-`uTWz=@#0O}r>$?|D3F7z>(k9aaJ^`TeYEOnSo zHcRyf(*A^ivs?YS2c`L|dnC{96 z2Yl$c@&(faNz)gIJdC7+&Ro6LC@v!LM4GMdi^=p&I6jm@^$=WGnHU`te__JX;1-@ehZV0 z8n^4qO`(CM=+$S+wTT(QCE68x!W5S1RtW2909dWPy{DiHTMj9X$@`?PaJ9z$XY=;g zRW=#;DT1p6-ngG-To({>0y~^cU zYD#mK6p2Kq2@_^_BF!&!B)F?l74WzD8yZ8cpDUXZ!pYf64D$`|J7ih=^?R*uns@l6 zb)0d^Yb_9)hhBs4E-x~aowxfMe50;fgZg{mi9j~Js6s{I5@~dka>Va0hB?sqJEw}^ z<4*fq8FqHB!#~z&qjWVgNG_}!7%gvHcb&shbO4kkNIDSdY!je^Ky>5WSbPcctUsoe zy5cxxf5H)m&tO(c0HruA7kkdvoZu|0TnC-l&zTIxfTL>~)6tOuJnHj9`CX zSCJI|Bo~r5R$`aR^1C*4N`m-J(I3wgt5a8MTTctl}9W{93jVa zb+zvDE{Ytm2^KBp9Y%@D7mqK3Jq2!PweOBycA2YQ0qWc#L~9M2Z&g$e5|T~%x=o;- zNTp9ch71|>Ig|5&vyCumW5kQNOxhkKPE2)ubwmA7yn9qj1-U^~6oO%yFQmc*t*%KK$ zy<}fTzDWHgnmh%SyQg?MWsPFY=6geC$hxhai?xNODW9Y1g$8u8PMRhl6>7~I;~1X&emw49M1wm7giQyrFbk^3*DU*w`)AGjEP zVcT4D;INjgY4al}aOyjiA^FZ4wd6w;-Wqb7LTpsYWv6JqIh33ZQB?xxw{G2}l8ADY z(edth-3*1YnG1g3R6vtO%jf=pTwKWfRJw0r^L_ptHg=1@j6WS{u2^zRiU>YlsdX0v zjxQ9Pj3E9;4M1&0(1j>r>5HR=-LSfwa>{q^{im-TZk&A^=-YTaqWrkV=@dwl7#y@lT!q`@=BjJxgH-(t0UjE z?!GLyVNe|D74gIeUC+Jx%!*l3!zj>S-qBT{_^gi(Q;-kOJd)@C#vO`Kzkc=(8p(Y; zy}hk<(>dcIF=3ze1Xd7Is^-JgI&@eqLtq>mcIOCCz|8gbaV@d(5Oe4NhNZPa6W7;i zhPQ-@-Z~1$taL-b#EXZaKkCpuRL|U>T}2d|vsZ0c+UOk?3e*Z00_yS`zxDhhV7fd# zY8g#Yank96R$2xlP|F_4r;bIfb6frLOZL7B75o?Y!t5w?n&n~K19`{9F}E9$(n9EG z4FrOVFjxt#neH&3Ar~!LrX?pPQb=)xZ|pQ{%KKgu1)lFxt<~XVl?u3Jg|x@wz;0&i zT|L9`Nt~{cfAzoei@OlI+9Rx)wtQh;=kX~el%mi2j$*{;f=F88_ZM77M!_7vS7NsW zi`w@ciny`4%mU7L{zG>0c)stlUnfsr=Kk81-svxd_WI=uGaIy1Y`aexEChAY)!72aR->t6=TWf>^0 z1n$3zOtUt0H+Lnel_L%xZwKzOhF$alCHtSZXkhhzz5$-(TCk7l^`P+>$hBP}fiyc} zO-4+63O7GXSxAtiw`?(dRI0Ad3z$hlPYw)xOWbxFq!g>7{(IfTpvYWwppTPqE13{h2q?zbY zh8tgmIkU+2;4xPyB$#J*fC*RIs=)SvJO1_8Z%Li8zz~nG>tc9l`tFNMvUcqyh9muK z(&h8rLdV3aO9)Qw%qogS5mz&R=-4R0R8y7hk92zgd&&WIVLto01Am34-({`zq@_Ld zgVQw5Q4=7Dlw}s}=|Iv%Sj=WmrF|<=%0}pLMLbLUKKsZ^)0){(qLi?!g4?P7&@C}f z=L`*H4|p-aiXqX|gBfpHU(glLzMM!O#vxT#7-QV0yVO&aRLE;jC#{9xgI+^=I`9SS zaEy%}Lq$(CgNiVIhby9$VN?mDH6mX+ac?4_wkvOJjJ|k;jGSSW2*WUdXB3Nl5XD_7 zJH=2sw%`(brg&&B6+4HxM4`W5`F8J<4!{=)KD6vtcumFr+3V9IoDD6+Y=kI79e6zN7fMNeUW|~9OO=~KX1(JW#OScx%PAKSG#ec zNe1lhBaWPNH5#M(1(t7WleHy2R}+?!hn8idx$~0l;hG`%4~do`_;uy=mkS^@gmq8R ztkM#RtkWs!DG%1Oei(1amqpK@$ppQ`c8Q!ou%G^fE{T-6*5^;t*n41Z$!l|v(qD$- zpI;8?(t++@s)Z|FklK7V)W}I3alieX^E8pt-tJJtPILK&Fa_aE>?j*BV%>>{{(__X*L#w9MwD^vVQ9Q+z4(vE zjmM8K$D+<+a}5h~9Zr0>UGT<4Q1_`6b<2zKbMLxQy(Y#R75H{-yhzELYlz(qtV}8}froi+-v=j86(_>#EmUv3Ba@vUUA!EhEAz1JuE`jEk8tL#vc@pJ# z4SBQ{gS3WaJ#OsC$Ki?0VEv(_W_i4{EBFba7KQH0?qnoH3w|!AU0rwTQ4sld(CIX1ke3PC8SE=+S9evXb*&fZ);6(ck4^X+x0fU35*(#M+h^-7 z9X_}nI?GPRI6LcIc(L*_J*Tdb{lz72X=D6^Ynx_h)T=9<>gjT#q>%byE^_ta!cA*N z^6D`svug>)_>yG$m2lF(^Nx9Azy7{P4FVDP3ay1ycOY>_uCZd77v!Y_Tg}0u)JMJT zSP0dSyJ!>bGQq4VJ;ACS`vO=@)>}9NJkvl-+NK8p!<%_`?_2niI}Gq}GNsZmuBWL= zDf6pWC=7q*|KnBTe(D#|IH-IOUk2(f`xI!R@XL6#1mj>I&5OkP!!wnFOyz!vmutiep7Mi#KRt?Y>6Jv*T|gcz z&0-N2IzV~uI2DD??gzQ1xQc=EQN00Mm~T}wl_3;jv)@?>lq94czk4~A;j=5pm@(*q z!2N<+oKh`VjTrIE=V5pU39a*&j(?1?aI37fDsU%Vh{wYyQiwi~FOvK&OJ>~q(Vf2q zy-DC}n<4$+AS1X)22FwI^2!r7Z$bO=iXi>?G2t@129YVkP-r?=ks=h}2p-w#{S3`WrEgiX z6{3lR$EF`TqzH0>JPur8Z=?OuYdtn3E~J^`$@A0y;RoCwNG3!_Y9<*yqX6iz(We@H z>{HCC;ggVz7$`aJzR8|i%{J1pX&3Rr8zM)c1kuk*%>>sp%qw6|tG3gqKisFYbY>v@mJb{_Zri&Eb^T zw>S1hzKas0<~6;wDmvy5Vu5fH%UFg-4JZh>nhYt5D0FGipP}h8C``xOqye)+$xtip zOl*wfsRXWSG&2L+1oLQA4=2~KmYyL$Gg*;si!^091$1!guP9$Pl@k@$5 zB&w2txK@fRerr{F&8})9q$}EiVe6dkl=wxbixoHgN>$bzc7v*RkUQZ6cbWyu5_FH- zNM7g*b&@0SdXb zHdw3cbtt)pe3QN_Sri3s0K%6&%%8WSfS?E1^EAk0#pS~#D}I+|Y}8}TKcS}MpL9t# zRqt(tlJ?|;;dPx?QK($M#agewO8efiw8;X)Nm>2Ll5JA%kH|2cm)^}pQ^%OXXXYGa zRY%JVc3rnGu~pX6uf|bpi33ctQMe}4@|5f(s4(`#B|NkcA7?zW5?<*h!?@?~aD(0- zDyLLhG+$meTxB>AtsIue@F63@BuS8^ zFU%#@c~va|{S36EHB#q%pPi)ISN@yV{j$+l?^&2rV&%H2k>XC0*^=l(pSjb=nyUjx zM?|C>swa;5F2u5nXh;XnR&F1Lo?pt~x_~3lHKzr0r<69A2V#n~&Tcou8n{tk?cG}t zG3O%tiz~5pf3Z$hc?4~rGu>D+oohY9)qtA!aLM>Y354TgvNU-tgTnVXS!1|guee0iRErIwP3n4aN)9k2D>*`0X^^d}8LJYnVmz^YQ`r6INY!i{|r! zneFQUCMY5~(gu>cnQ81^IDcZ^Lmj=YDMMhr+~60ZMr(WbSB7ZAoa5`uEPTrprL?u|z)|=ago@h{MBP@nK{gTYvp#Z&MHkL`KpY=9&%Ie%2q zk+%jG{|cVtoqs=fUk@f891va=fVhNoII%l%MoUR@1rN1*g7G33A-;|&dl@HPi?~to zbU3@XKef$L0rW1eJE*2a!6l&cN20*_uZmJ{g}k}mZtv>Dhs{f2XH>?oG?!zV^CObG z#~zj|r8rN1o!taeq}tM&?2ZnT<)s{GTP$PKOP;bDiWoX^Jtc=Vhe-t8EdzGV=`TM1yW z9lf7b-!)3nPtSVtS3l2`f2f-d6};6}DG6`Ppe!#R5mgXvaXWv7FlWCiy+c98_&e#^ zgI~d+uX87OQ?aE!IOO#z%YsLZnbuE6&A}NnqpKo2>~w%GxZ}@ttzhpq$T$W$*Ay8> zaaHVTpeNS|rPV6o3fAXBdWxoePyuP1GdzbE5#eu9u~j*~0S#I{wNa`FC3;QVk(h!^ zsD=IL(=3+Ao_|rtm!jd1WY<^;HqY0rxOh{mf93d-MUPIMS^Nqj_t5s)yL}Ezg*>+f zV!coD9cq&QnqLWNgu5M9+w|9EYV>GPetMF2-(8EZdN#dkzFJ#|?EbokBiZp0bi^Mi zp$K4dP>@HcbKbbXK1fUM?sTudZS=mGQtvG+JkWt2W*$=)PufH++N^%Hbl6_Ok?-O- zj&%-5a^8`HI0kY)IqkzntBcC2a8@UB^|S1l+9$TszY5IyIGDRAa^Km&?wYpp?&zuE z-O%}6TX==ST=0sEO36+cMVe<6M)t6xq=Es$JNm~9A-t0~MOnRGi+^8^#VWe1a*2I+yFC>EK)tn%Mw_p7}RFnM>um{iB=BrBe8qMtdIx*#lin0lt5C4D5-R~3R#DQm*Fn*W2?|$3nk-sCZ z6r^^UyyT-^S$awF@3eeGA}&@?7H9wum9>{-1?A&weD`6TNrjC50ChV zwZut+#PRlfAkkf%0y~wvpu!TVz4q)PrNm79nS_U1stWpc24}1`vk3^ErtI3rB+egQ zs_k4L!WVzaD6g**?Zz@Dkj*}s=$yUm9wmSdUNF&$PjPXLRYcGb6lY zj=VcELAnvSw|LU-k944Y_nq&cS zK9@Dg8GA=sqkiZTPIDCqJ4$jDefD*qRK75Kx=Lxtm~3D)pH<6nD5`3oWbne3B6lwS92dYe<4){2eriaCDz zoK0g2i+x08STScX03G02GZZ#8A0#6=0K|z3-Ji*%CML;BcjfYKDHSAsNTh6y`J?(< zl)c~>DG3w}?D9LM%n0gD?ks#d)oR_u8+#H^ELiOd=@D0nMu=`IY{DASe-8b9u0O~w z1ZGGG!+?N?p=dZZxgNDWj{ZJluT)K303S&4Ye)|pvy)L6luRU0-Ash%p2=Tn6x!R9M`hrJhq?n z%jak>8U1V_Bp)-o%pB;;4jG;b!XM|*zisONHj!Hn2-fwn$x`7~ri`mg+zm&}QxOsv z>gM>caOuj~R%Ts*<@m+n(DkEm9{@x6NFbW?F^stI!R4{7FDGGUCvmrRoMx=0U>cp76l3U$uCvm@Z|Wf)$1*%3QuK0A5r-%rEq{Be=!jjnYz5(?sw#(Q zjhprT*-XX0!m8WWZu%h6qeh=_%Lh;gSvXuz9W0M)xNYzvcjO!w*L7z_NXXJ3dIjQk zTB50`ROwHXY`pm)jgvY0yiGFAUy-mU)ReN}|KEcTa|zf;e;ebp`ME`Ydw|b~jpiF^ASW%J z@9FX4$P~=MM$EKT&ZCbTxwX+t2KtuofjWrZdzeR~j)?$yn)5{14Z3uMK0dWnh&u;x zc9<9LuDrG@xIt~>q?7HOYG|GWvmHtiX#2hv{wMArl7%Gpg)K1Tjbbo2vltrMUH?If zHXOXr@MTIhgEaqp!+dWJjyMi0frfRv1^axBEHco#K;Zxdp2mL|-HL zdtp4y?I*Xo=bIgDt+m=KHqkg7EsNIf=-ab{xLA3xtBXnlZ7rSnoS9R|@Qgl3H3X{E z9$%K;N|rQR-12a09GzYmw)ko!Y`Tx$34BDZy9ooQ+2qd`MyQ%u0eHR z4(W-I+`;rjH2V;ri@KoLzg{ItI-|ldCllkP0Zvrz-eHi zt&lJQaBUZo8}8Xq8sD$UZ2@qC^I+K~`hcej0j7wVqtb57M>J zui=gnBK@CO11TalMCqW|TFd^m)hd|O5_SP|tDlA!S*~AYQ*iP)(c;k00;?myo*>3l z02X3#B>2=4$p~UL{NVEN9Y;)UfJqfvXcl;tVz)xS6*4E4^}3=A ztrmD3@NSw<><4!v9C0!MTy&3GKcCQ!V9t_EYGQgf2y)QP~Hs zSDqLK2N)hiu2=FvI7f^|N|FGwW}Z2AC~s9NW)u*E7T`1nUW8Zh&vG?LJ-mRaMkb`X ze@Hk(1oSzfr#`n8OZ6w}rc$hy^OI@f5Tz0TU2vC%!<7#ppFLnVLGnpmVC0<`77rm;)UPzmx{7%x>P^=wUwD}f}PjgMEL1J7@ zOcXd4)UBL!Dxg}g6f=S6i4%;@qlC<>dPZc`Jb?{g<<8@!N>#5B4@1&uDhsj*aK#E) zMZmZ{I4Q?yNNvuum9rbdF|SN&9>i?J%T^T*@-+1OQn<7TN@8%o#L7wSH-*r{iU{eIA|k(M&}lp$h!Vuz7ohE^l3 zGA#xyAo=)?>cMi40|&zYCI>d-Tj?|B$;&;BR4CIw8teH&)iUR(n~2k|HToL@YHM_jmFS z0I(!(d7ff}VtbFg9#mw|ieS@#pCR>l7de@xE&CGqsM?&-+(Wz6;OU6kh2=je|L;GX zAFiA8AL4Jel|N$4pz@}h6SSeq*(=4&Z5gFyH?6|ENz0&T7FiI-qqIL(9@9(6RlLX_^1>5 zDbN}lz)m674muHo?Hu^Km`|g6 zF6h&0K40xUQm;+vxsZ44<0t0fT(m>!c%mDe`O+~Z^qf4BGDV^8VT_C-8Nc?%BlPEX$tS|& z6fwI{M72VPw1P#o0!1_6Cx}3knID0@>^foPxG!(t0wZiATd&ong7(G(tkVO5J64BSaj}@~v3rjmBk|_k^vT>_7mo&PZQY9)6 z0LHe3`TJM#)G2h;R!S10QqkyO-sN|>2)d<1qM|ri>#N<4|zwMddqk&{?yGV!qMbr9cSCAxc>6^Wg23`*)jc%->; zf2HdKGQD+w0$gAAm>XwE`l*ITXDbdK_bQJho=5#}I9zvMKUJFNZz&r~s!phyZJr~f za5~1)TN|4L7S#EOCFtiI$_r-cIR(kPRY-dT-rORpVb88{4NFs#s|aPVimb3^kL3$s z{Re^GK)o&nGJ(@XkiTsvaW51ZaKcApmitZIQWM1pRf&uHhl?~3Uwi>f1`q0H@%$kA zOyc9imbaw0Y44EHi@dL)1LD(cO=wMkjJ0F+7kS$sAJI6iNJb-fD3nYq`F$pU?93fG z-~B>puti9R28#ozJIipw6sd&8^mA|{hi><_gu2R?+2nGgxefkTh?H`DgKmaQsQ<4J zzut+@J{9B9zli@|#Q!hi{}=K9i}?RV{Qn~Ue-Zz`i2q;2|1aYI7xDl93Gs&(UY^L= zlN)kpU6DZf*)lZ*=Q#mtX$Bq86A6Lt|HIpPl~-afO&8Y#Hw&BYQW7hN-2`Cka!?Uo z%I1}P7`i{Wu*e&YJQ@Kc99=c8*YW&N9l%SeCY4IuY-NsJb!d;Aanm{iK|1~pcUUU| zW*OPPGl79SSqnpl#Yu$f3P%KUW{QqU&-|eVouu7qGJt9_a1uwo7flR4uwQpN2oWsz zszGu^EFU6g3Yt{$PR_QUz}?7@&s+r|$vt$3%(~}%xW0u?h8UsgM;n-`v1H4kS?~l+ z;;Ta8q10(sY8uAdA7LiE?{is5#M%v#sUTNOKIgn!Qdvy5=te?2MZ|Zz%=QO)q)om^z-fPU z66Yk&)Wmm1Ln)4-ljNf|!rOP&>zKd%1f@p=(i2VP@m9*lZZmPv0??lzl*H&S|JR{= z@8RpKEO>oy@x1R-_X%#gC0N0=yjtM$0dz;jE}I4WRIXIX4?X0w%I`|Sa`DEM~TkfrfuT*1<-dTqY? z>3GF5wlhn>XjMryVrL?!iy~q+6oC$NfiI(FkveyIaD9jAu-2c)ybJco@EP{3mXLZ6 zENRmy*w^R<#)wsksh^y4dEL;S?1+x%KCVzHpX}&?g^1RBz{D+dC^33o6eGzt!xL*b zB3;M;!9^@*xr~phf*d1|hlusncDx23d}N`4l>W|nxW}#NM;Vu_cZQwgycd!! zF&%Ypdyy*DHIY5|b|r?9jZ^fHKa?|9ImHCy3?T-+g0fLXMXye7Wb^-IpJpz45M-+= zZR&f$ZMCwIr;uPyG}+_3OayC#WYh|X;2#=MtY19BGa_IWbXL1t#dnOc!l)QWB}R|c zCn!(|=CsTv3G>O6BY)wrW!NwupnB}96(^jhEdX&T=YbKC^{WIeM`#yyoIn*!A%Z4g z451oS{DS}3b=J1Sy~umy+qD!s$xj0uPjz6tPhDSty4;&O{5SETo%gc;oq~qkkk9tl zVi;k{9cy2TV6{c70f+NTw0icK>pqn(-!GK-WGs#My*ekqqTyZkSvEJPeM?6$CDxz# zbiy=FqEpbTKn)h!t!`>};u*sIaRuhJaBLPrb$)&2t}oy{Cvn71JDydKkSN>5fLd{CbDC{DxHq@|>5E}%4SI@5=ZISl=+ zzA2#=p!*WOP!}!lB3Z1)vu}7+juY#)Rc>z${byZ{FDl>)*Jg)uW_!ycYd=2o;}Slj z0i&4VtSw3sP|cum%1n+ZE#vd)t26aA_Vwi3xjyPU>}&N^_agclGvs@&`>oS_cNlAk zT!TP-cvKAKcY zvYH^?pZ;Ta4?CgQ0$&wu7rw2+ih(!YdixPo2b7UfGYm;wuQ3VD(F;>4OInpR@`psm z(~dS6D?9n&=|R&3`m|2GfAA{xM!yNU;SrUjN-+Sq!nuDPiL~*8tOtWpM1xOisWcR^ z1iE(7c|tlsp*jMW-R;MXFPcJVG>YfYMP^=KcJ155UvWuE5gHyXSkFnWmO>kUQd!a3 zz6V+}NIH``{!tOV5sW+y(SC1n#{{m4crtYn>pYCAB9_769siIxsc7h_9=nGpDgg3e z)t8(h=viK{Bgq?3Afk>LCt=)wyoc3iME2qTcn`M&Z|+wU2^brseWqR8(%Bs5rFjT( z182WlKF1&EPh_8+iBsS4P`KU-$^Xg-%Y@R)q;+^`EZL;ho?qLjki;=YPccH!j7V48 z%9!jsQ^=Tyu4O3E+_LKpQai)Xc+9jkDw2;*da?8D=d~L3d*K*!bb!oo35y^nudW9v zO@S&~O(54BAFM7-35=0H&4MNXMGYUGOit~F7{h3@U(jwI!1mC4bpqdfTtZ_SYT^o? zvh{iv%rv!92|a9>+ib2Ib*VKPe>$j z^PBtmf1blBRMD4j%^`h7UQCv^T)Xaepzn|FPPKcuzdIR;S9)9$HC6R&7samWEMUw| zdRxf`WAnkvNXpm|3YX3(G(>48l${y)i?oQwqjx$GbA=639Ap3cXgoBTRVT?hSgLCH zc{=ObDGvSs%|aka?7vUshuzo+pGy#qii#oQ$@FL&lons~b*GN@-)<4{F!t z`5{?TlFK%)%#@hB7q99eb7(y{l-uzjhE(jM9hE5-tMy_^AnLrA%}9eAgY65sFn-@; zY~R0Yq={`+(8VxtZd!3`{tSedZLy*%f%k=;*vh@5xrV=+eAs^8{;W78*LkBdwv^Sa zeH>P3a^}}KD#n#Be5^&ez?*2fZLCgDpxN=liU6~K#a1_-z^y;3;(rS~ZScXTufMda ziJq+`KyEgve!wWk=r*ZCP3Q_&gIr3**3|}7l)%v5D?*K};=mx`s4G0`Uc^GGyLW&Z z#!#YSmIot@LnCy&yh8Qis3JYSyq!}5d1{?39bGllOrO~k>*Tag>GTP`Nr1lEsC8-2 z2OGEi8R^SkNsXJr(l2(H)|+b2Hw8myG(0^<1#r*3W!jpzE{y^-ft`Pv&{&~Y75~AH z)AL_`BV9C%fKsJ}FS@?R2-w#lu~qyz2c9{=gwgbFQ6iCdfib&FpO-Kzw>)eR5gW1;-=oY=xqfs zX_R>SYE@LUH-A!kCS#V-j~?$6jWk4XJ$$+pRM@VQqCxn62@Cg z+-w(n@YrDbqSZ+On{}upZLD;6awx@_#6V4(fO|~Ni2rDHew&ChKhZIeG|zlUT&5=2 zJM#XX^zatlCYoyEJ+u9ZZ3{(+UWX{G^w!R8U;FAN?_C$c{Oy1L;mOP#)Ujj?*ZtilW2Ud4cyE#~unvE-^24jj&!frR)n--~Pe4q4mU4jIsjgN4!=(=U*1s`U^-M0;joi7uV8?|< z$MO(@W0C5O$!h@e47cZ^bQf39!KtuXyhL(GPx&JtV96}vshONtT?e20@f~jZ$dvTy zngLYxEn+L`l$gjqbJEY=iWEN+Ffsi`Bn7uo5sBTW0I>w8<_%X_UPz8=;-Am~bm=X^ zEg>B{($}(J?*8W%%Ml^;o9=<-8z_qxA<=T55#nUgqMazE7o>J7mg$3lpy_9 z2x`W627B$vhNo~`9Ct{ugNE%FN<``m55vF0YdJZ6s~ANo`*dItk)2DP zY*?o}_IA3SGCinyCfyf}jm{7&NCBhLJ;)9@q6N{D06PMg`%QZApBjPQXOAIcuRwMZ z>(x%&0@2KWhwRsmcOM72w!)6qced2RongswDzmMXK;G!$p@q8Bxvre}nTCt4RsWqae>3;6;f+mnGPCWTHBs(w%@R>Ynt4Q-0oyfcY8g=fp$byzMNmO3 zhKZ>xk@#yAOw7i?LA;r&y|BxubgCl}=rHZGK@!7qm>pzITJyC~s&^;L%1j)2K%%rWBqZKbknnl9HlEr*DKv3f!dl3^ zF?i0%C}(Z1=mq(cc*fK}fzn{s)=<0kiQpmSCl|uzge2^CEw_KM#)b;-PTnfNEe3vP zUi;0=U^aPQ^>`lT9cx$oAH<|VLdv%Rls}7H(W-g&X=OJII_Ndi$Yz(y?9}@rr4{M5 zu4HzL;xv?j!v$TPN&SLtLCw(VfbxJg&;Rgkg*U$M54`>U&*E^M+NckC%5W02=o@p= zk+YjVY07l=&^&5}h>fg{K2_wiKC6sa5X3*qqfeNJG=MXGQ|g3SKs$bL7h_ z8Nx`?$Tf_cHGLPSe|Ujre{~K^#PiN2mf{35ZzwQBXci5tV%w~y(sKxFVB1UxyjpM^ zkM_vS#l|4hmQb4ePs#hgcDuR*v;Mrc{dNdpqR-SFZ zX-XBFJJW`=+X#(ckL|vsxrELB9OI(4$EDvNkkrgqSzk9bz^DW+XCbS+NQb zUTDgv8+x48X-)#_IX=ShRXQc*R6iqbqxVh&Y6GS>(ntZYf5CS9InOL z%?7qQzzvZ?q-V1Ieq@cQUXW%XQWTN*H7&SiD@Buy0nFhqfb|+$MtzY{wi2gGHbx?< zk{1~xf2vJtGqzf>MEy5XNqc31=ZB}fHf;UL{@Z`+FQ8vZ!tX^SaJYsC?eS;(55qzl zkW(9M(HLgqU=ftMSTBZVS%-vNV13)xLK={SvD7(e(vp!6;?7j0o{?LyGBkeyd*26f z{h1||D`;;X|46^gv7 z8S)NmEk!KC{oy-@2Tj3BE>gJEn=6Hr%j@m%(!{PA?i4F4Q|e9ILAbbsqw272Q#SNf zOETBHazXyQw;&t<u98~{9^BS$omEj&aViyH;M#|R>D&!jby?6ipU~qq?hF`Z3wmyn$`*{r!6#3whCn{A`svUBSV>bp3 z`=KV5p-y;L6f92%rbr31;59fAbc&LZHOt|E!q65{GFfHdSU2unhyk?4;E%Wy{a~a2 zT3Q(9Rk9`%6TWUQJbSVn62s^@G0}tVbbc0BP>2CrivK=CALVsMrQ*q-Gm$*#5yzZX zXBR)-_1^1@Feev3-jORVA41VCwkm1+en`m!rj$NAlVl^HVkX$uEEFNvLRv_tq1C9g zkQ3mE*(2zqWH{8N9x6nA4ZE$v_Vty#_ZpMBlic!oTW5O9PY3h17ZrJ=Uet)K-LxS0 zym(8lTbZ^odu8_{Ts9GT9;!xpg0(?a1M2>xE=8_C(`}J4`Ifw3pVc2;%*cz+E2;mH ztCf7=Gn?FOYrHmuaGMajB{QV@>6Pl`^-w+4!h1e}2g^o0l2oAU17hR|D@%bnDh{R_ z8~};f7Nyv78Sr3&WdpW=+hrPIae}Lm@}ywsB3rQcVG+g$buyUQ8r)+mFQ~G8GU9RLB6eaXVUtTjtcg%);VlGS2!Cx)hE9sqX(h@8e0UFn6f>0|fh#g_gea&rCWJJXFu4{Hb=`c6HANEd}_bG|8z5=Ti<`WdEPFKQvMEgzebB|Zt{&T5pYAbax8@OwuRN$ zd?#8*mm96IJ!KC40pABX1wR*9vfY>q?>1Bm9I~x41%4!0SiRD|bc? zp<5??Yhm6st@aB(J;RcE58;35Ta;P^qXE+v7rq4iG|%l%KB7CyGrHs%S9^Urzgl#H zCnZe4leYUv^`Y$#fPWTY_*x4W)Mhpa`De1_?-U!vTp3nXmf?)6lCfFa9^wi5Km9q~ z8dj_r_8Hq)$wrG|f0|YD%&ZnK>)i*mZ&vT>cdd_CGo7B}2eu~xB;HDtkomsLA50}M zTu3pyFlWgZ*p)G733TQYTOB)5pV$fm#=6l@kS>ws3J}F!GoG1_!I?8r&tG7w;sE#I z^ibcP7qw|8^QSg#gjn~&MSZ2qymGy?o3x~W>A>?-WfQJa+8q9R8~3@K{fng~g=xdUL3HW!$(8Y6hA78D@w9)qCnlNZYks z*k=z8-}=vBdop0qLKIczMpXm$9Xo#HVQG}7F|Mpeh-^j5$dcD(z_lV^^BKdL>EVK9 zjbC1Lfsm~_C9gsEc>SOM^M7t&?7kCNkk^0w!ygvp$`sMztge+x z<^Vc}4m7JGnff9ChJaD%FvzJ>*AfcwKCt~9m%gC9#?D<)<<8%4f%08ppRlyG!7Ko= zD8+x^V)NV!iD@Sdmqzh3nS1h9CJ>t$&y;KQV@;Ycj)4HLj6>~#2ey~}-g?yybNg=4 zmYTaI@=TTY=wh~U--(W*2s%k^L{1CK3DE;4yR~`Ntdoamy%Zh9j%2DbivvI`-Cri9 z31isO^1(ZHi{o98TRr3&h>P(vJ66|s(Oos#OrW1BKXlZt|{=54q3)(_E zjQ^e%ty(J(RV5%0Ms1pcuHnoOu?Yhr@+%Hv)|Idfc(RP(+d%4~US9%73>J{#84G7C z+(w)%H>-n`?Ln$7UT&SA2i0{uheeR2|1cRmGQxuo9x45UBSTZdsp||wvFxY^ZhF@>4TG*$Zq#`I-Sf;XB^w<^=#^TBe#9rfk;@w zh9X#kl%xCC-vJK3NRjvuWjo#qFL5OD2;Vs8;GEyjt-a6b5i-O$jWNOI*XZ?yN!8GN ztJh^i>U*4#H?C>sj~mjN5-VKhh0X&(kb$&8SKsC;QL5Ki5Hw`5e})8ER<{oHG`7X|P0#Ouu& zG&RlD4YP-ei52b(+T(n1Qc%0y#DVOoS>X~fFGdo)E}<;6C^JTYI{*`Ud@3E?z0d0I zO}ucKD_aN_qr&R!<&NsDK5ViE?rbJqfxxeyH^5ox1@lY2@Pl(K7^5rew~tPjvxo8l z*ZKMFNa{dW<*`q@TAUUldDH;QPKDC?6uX`m{^)P-cG1z_{sR2%;@K`?PG>DBKbF^_ zl;-GkRv_$%{g`-1A@d)8OwDdPYL0@ZmTwSFKh|L?<#@H%fwnpUymN`|0k;Ou#YDv- z7$W5HDtW8{0qQNV+wiwwvq_*Gp@394BXUKVjXUUuOJU^+v%!ycgl2`;kS9O`FaG=> zdgIpb0kVa1B-Db2Kw>kg*Br6?x1F4sSDWv=>FT;9(SO|QY9=@Rw&PS3LvN8@f;SJg z*t-_FETKOS+{{?cl9}y}C_iEZ70K}u;CKn(fA$eC0i11Gu2#yC>Hzm*AmFTm(z`vd z49-fe(pLleULXP~*tw%bCnu+;Cnx$gK~3DYxu5-rNSU!5CRMna_q67XJh-iW?6!5S z>uRqU!uJZYZgIqiQBby!JO5#?gV!FnCI??N)L`(uljmx%Sr)|~$Xn&|&^)2&HGFuQ zRqb2#!0DQ-S-lN!5n70Nxg%9ccq7kp%hvulr@HBn5dVoTy+~o>CzswC%c*m306use zZJhRP$u~*4K^t6qNq2QgI>>Xnp*)UtZ^Y*zq51&q3ihuUvU6P&29ljsJ>BKIC~)tT z2J2r+A6mOBnl)rpmjjPWyyg)}#2%@5#9d%M#RX+Rh;;E@(x~A5EA?zQg0La$iq*K@ zqFmYITkXZb^*HdbOnh`QA19-d$d=@^-Zy@KO>)|IWL89AmO!NVZI+3sG?*y_SNlAZb zIr%&?B?|tcRW2IVtPrQ`wrFrkSj&s8XDU2RhlkFrf_#Cg8*_GIwCPI ztNVgwpQDgOKERVbOIdx`hY}Gs@JMrqEn~HYoa07@6e#gx^4Dx^hI0kBsA!1Waum}b zLNmb)=1HJ}eMDVO8i)s!0A*{^U*iJwKr$r{`405dhVz;cOipcJLCOqRXq>PgfV`cUPD1kd{wf#q<>2G3!2o+aJ<+OBVQ_17 z;H&vLv1WZr6D;NKtU5*LS50yHR%kapa2!vfjjpM^=^l`;&u!i=+=}``eWa8PDFerF z)F!Aa5;=ySY|VfB^l{ox!@7$6;S082(*~_DUzxN%8;xLA_5L*q?Q^!P_S)+pVLS>q z{^V!Y`*x5HdVDB|Y7A=D)PFkmDJgS6c8n%u(J$OM_*Pm9C@iv}IcYF0 zd8i?8ePu(9kX@?XZG(i)}w*$!b0$LbW>(7=DXl3xJ|B8yOq~ zcquE*YUOUPYPz8X8K+rlR1VtKjC>J5&-OY(@EG z<3Uuz6Kg!1&7?o&^}mH)nip@-A4L7SP|wAR&l>cwV$z~+xoTHv9M?eWh|65RdnVo& zY9SnU9Vs&FpCfy7xVH|Qyz6S$u~F8X8EBv^0Sy9BJu(Zhb#2(3o3)>_C)Fo~~JDD_oto&FYf!jBQA?QKMnQlxrPP z-H9LtUHtF)Z7hdKOgMqA=bZ2a3uw5OO2)zKc)SdGL6;$N{k-%G5L(iP;)Vrs0J~m+ zmN#szmcq3bATPG%Vce1FKam|AVJfYwj8lWQ*9*gZi%RkUzv?}m^xJ<|L9}A7;^L=w ze|N4?elqFUDoNKP(L&cr9)oEP4}|ESv3rkl-9bP9v&9AU)Xh}?Q@58RE2BqS_wJ4H z0JNOQQxKkLYFu*B<*~p|C+gDc1ifyuDv0`YppbZ|tm@&9CKP`B*AI9@B^3MWy!#3-%VbLu5TqQXZ0_f=k+@{&omfGEv+|Z$nYZAlU_I5ie}PO zySuoRGC2D22S88wpTGU^t!FTwDpEbs-|>X^O_LOb)YwR=sLUg%xRzM!zu4aTK))5FzsO_U%FWxqBA(DCGz8=xo$=qik{)#L9`fp0Zczn zi}$;6c-DRlo&0rtD%8nbKCN%9#43SMqgrg^Vgo0fhe1sGGwj*s(ca#_nX3Oj8@7$= zfi3x>z;pzKqPJ>?UW7mA;3Vu^#h5&mu}z#Ij0RI#$UFaA3xqc(v#Ve}|F@gIpfUtz0% zy8RQ{2Fy&_Yq_sj!^-5q|J#Ary6YRBxPa7@V%$AoL_i$p5Z&%5vF@Hr?>{w3^TWtGh3b*s~qq1zO_c05Bow5Xz%jz{LeqJpIpUNXKD?{JGL@sNs5a1H?|r6xE} z(&Q7Fc7IooD}!H*kKI17Swf*utY@XeH4K&!djjB--?Li6R#8Y_wve1EMft5FpIGB+ z6l_v#2`;qxp36TSq5qcv!J@DXyzB&N(E7JVBJ{Mv7O?!bxM1ZnjONSSUBPrj|i8@-zh9;2;gQCxYoXLL_q8ki(qEQ4)uFk=>}0 z9{X{WR6j#9NFU%qj*{JkxRM7Lk)s61uqGRBItc!~*IV#p?JiRYe9 zna+l#I>17mAajtf+R}D)_^1=adYP*er6q4Zu^{tMLcG=PlYyiITcY`J+{b;9O}2!C zY@mG2p*B!b18$;(hJ$jTB+aTYSGFz5tl3e`GR)dB{Mr3h`aM(KXCvlpkcrWGG;G;9 z(xhz{Y?W1Dp5M0HW!2lEy^9*&$dh1S^)|%C7r7Vr&=CEse6i{l&XM?*)W_Gr{bmcM{e8{$$-v_U(dXk)C32{L#2 z7f1OOQ_R{?CdMw)VxnRYw}#=3mP%Z=!TQ*@4MlF^D1puxxRIZOvl?-8l!b5h(ZVuaEm)^cnUwe{=j zM#)v1imVo>15BgzYsRsf{99=pajl1z-#ImLonFwjF}z?qmBbZQhy{nSEBRaG;b ztq6D84LY#Otc;SW^Im{FQYyewuF#W;Evi|g!$wra|8T^LT!S0^_-&l&N9s(iX=&cjwe)ZnLPr!wL-z;bCb_M|-@ZpH*4F&g z&4K(*eg^h=>@As4EE`l1%p3IGw`fhvR;UIM?>ega58p>Gw^*e-Rvq6Bd{C>Z0?>1% zm8)GPly&R;z9c;8-9xIQ$Q`+|VF%u8Vzt{SZ8h@Tk9sVm#D-Ex)dk1kw}A@$*|Np9 ziODJdCp_6rCf6ShgGY@txWnaPv7-i`4r?DvVNFNo4NA*fTZ7t7n`Hzzhc7K#T**Lg zV8{-cbL~ZF(*3OS2Ys9G;dvoq^x>K;DQ^-ec;NBwbmFvJ0%gLwEgD)CrsbaY8d2)3 zb6v*R@l9d?EdYqUz_r0^^ZTT10I9zghiQdtY&uqwlJhspFO4&A_?yDM5hquT3)5Zh z1@4r|){qjHo?D=SYClJ_K! zW|oTrUPefn)<6saCh&;dy`_Zol4jh=BR?DG4izsk0Ef@)r%OMgp*J2FT1P0@CTi}R?|AO%F>xHiaUIrTe8ZYDNRD{JY zmzsP{!?fe=-^RA%AMkj`TxyuSc#xlq6aUluOL5G^ zpu16y&PbD;Wu#i2sj7Sx-LhsSZCD-6fOn2ERul?VgWaPGQmu@T$8XV7A*5G~#Ue;M zQ(nBKX1p`-^&)kHdFn~=dFIZin!m$)Gh zIGSZ#H>HayZifE+_8R>R5~qQz)~o@I?2@f9jb>7Ez@go0-5PNSML5%>mzP zYCfNvtLO7@g|qmE^V>W!J-K`SygZ-GfsDP#Y`lQ&WCI-zm4la*dFN);1#0Tgw;Rc& z^T-^|vI}R>c|>+{>jIe;X=vi%9J#3Mx7bMRh)lPM`EAibcQLtaDTj;AOA81^{=BuZ zY_y=%;cPWu4q8y8{}|aX^DH{w%sDcGLZh?HQgX}UgI8k$SL3tCoSd*=!~Hp9!U zyaS=6of4os-Lo38g#wQa=<0UCoZnsxdtPRY;ewx{f&6`?28HY&YvJIgA?vE~O@*Ux z|5<(e$qvci%?pMaxn1LOCRUsD@;lB}PYe1x^(oTP%(6qJ>qaIrbU50P&qrX{dk^EG zm9mn11rFoh`pj5Arq;U!$)=hf(o4}f>pK>Evm&AB{acxRW8d%EFkr;sqF@hDUwaM) zx?8pkQUql#3KfRF@+P}Ykb6=itR%1EFHM75T`kT@<4!hVMwbwfF8Z*_ZIGEoj)Qu zvaNFZb~P@0HVnJxkv8mY7<_>@xM@4PO;_RkMXd3fK(_iq;wR+lC4KPUt#HZsr?wz9 z%8HgZqz1c0W^8unzzq|Iepa-(bjg!a102Y#f|{+nNDXg6S2ABXKh+WYtK5WGEwz2X zx){`om$X^6i_?s)9R>MJ#cnj)vqixcXKO5)Ak^iiri->=H9yPAh7@Oosa6F=LY6Q_xo;7`%k8RMQ5@L{(JCw)k*Kr<~#d8Ig&GlOfJ6w{3?>aLrvYn id8)J|^~rx7%ds5Gu^h{@l>ZL^0RR7So~Eh*at;8O+t8o@ diff --git a/assets/rancher-node-exporter/rancher-node-exporter-1.16.201+up1.16.2.tgz b/assets/rancher-node-exporter/rancher-node-exporter-1.16.201+up1.16.2.tgz deleted file mode 100644 index 4d218883daf29070a9c2e671a2f31d32bc9ed08b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6668 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 W^YpCo{BHmN0RR7qbMV^$kN^PHcMrJ$ diff --git a/assets/rancher-operator-crd/rancher-operator-crd-0.1.000.tgz b/assets/rancher-operator-crd/rancher-operator-crd-0.1.000.tgz deleted file mode 100755 index 0f8d47a985bee66d4d12e4c831b271f34998642b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7035 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 XV;tjn9^?N500960T!2)b0Hy%|{j$ob diff --git a/assets/rancher-operator-crd/rancher-operator-crd-0.1.200.tgz b/assets/rancher-operator-crd/rancher-operator-crd-0.1.200.tgz deleted file mode 100755 index 2550ea820b8c72e0f4d5fdd4994c9b75756be5b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7039 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 diff --git a/assets/rancher-operator-crd/rancher-operator-crd-0.1.300.tgz b/assets/rancher-operator-crd/rancher-operator-crd-0.1.300.tgz deleted file mode 100755 index 073d30206d9e859a9a8096a18a567c65ba4c16e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8634 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 M|2%W;lmHk40OT&ktN;K2 diff --git a/assets/rancher-operator-crd/rancher-operator-crd-0.1.400+up0.1.4.tgz b/assets/rancher-operator-crd/rancher-operator-crd-0.1.400+up0.1.4.tgz deleted file mode 100644 index b5979c34a9ddebe65c4be5c9c2947802ba9c31a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8652 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 Dnw%%F diff --git a/assets/rancher-operator/rancher-operator-0.1.100.tgz b/assets/rancher-operator/rancher-operator-0.1.100.tgz deleted file mode 100755 index 2c01c4acc05ea0ca7fe6908a8b09900be58631d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1115 zcmV-h1f=^PiwFQ2@!Vek1MOJdZ`(Ey@3a02LckDUfD}o#tiiw@va~A(Y*~;3eGM4t zWOJoRfuy`Oo-i(n7^&+|`(kcJv2g`Qi4 z#MDqO7cP#5gUjSOEsS)S!0B^7C*9@Z#47nYqb6PsD#xGxw`<@3?q@EMbMDf+4Is1&>FbQ+A3h*^=Up?1%eG3DN70XSI z1^LL#pSiYn_+LG-=Xus9|GoW>KPczafIeO&`1kl9MYHLM|EHi{{#TS2ppRMr4&i^` zhh_f5U=kwyBmM`TKlMlaKLxRjE}%qy1-aA=SHOJ>ALj!wX6OPjszxP3D(&ln^J~dj zjGDitSJGT7(1_)hwczp&5xqt~M7{EfkQ#;GLrM#7ZeYQ*DV^H3bvWFSj!b*-KY^Uf z`?4y(5)BUQf8U=5o&7&S2pISODQLU(z`jG5{mmC9uwi@Orr*lI;Eyr1+`l^-44p$< ze%9Cr#mK0)des^JPVa#0nn6k@gZ6l14EnZWsNI1T}^ zdNkuS)496%91o0FC^!*5l5GbSt231h;z@ zJ0fV^ZqzlX6^r2_j%6Xt)v%|xUg0C{qdoYq?r40JKJXC!PrRsu|9%(-BmSR)w(-A8 zIG*>HQn7!kI|290Pr5nu)mXjUk4hGK1;kF->y;g+mW7I; z;c18!7+pOhaHnjM(Y$_bakPBJqwHOya`xj{-*#EW`qmQ)nG|~C;IX&qnB)k()x!en z@$c$#qd$Y*&469=Gb#`+tFEd0DdhkiZYRoeLcJMUj^kJ_&(kl+U}EvCbfI`t+BVbO z;|-g0kLbmR7)@%2szG`u=Hr$7YvB;WC`Ud@oRfYg0000(iO9lV{ diff --git a/assets/rancher-operator/rancher-operator-0.1.200.tgz b/assets/rancher-operator/rancher-operator-0.1.200.tgz deleted file mode 100755 index cf340b127539719ce4730cdd9115abd2a3834998..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1088 zcmV-G1i$+qiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI*zZ{s!)%~`)@{GhvCJ+- z66DC;)X;w~^kK!8Y$r{E1dHljEK!^p(&T$Hq-BaP&<5I|Wu)!N<$_rX?^!O7UJFqa zMd#CL{ToG5|2LY=qNDh9Hak0u&!%y76vfl&d2|HPtBv3Q3P;QyMK6xkpWJr>rj#Z| zLMxYe0Gtt%Itw`?k{Ako!V1!XP>z_C3G}y1z-{_-&WJB|8gsNH<^t2sa%VUEX3&Zp z6)~BBPqsjRXUBy|Q&b1LD3+r$jN^{Mx_d{M?=;gc0V!1RZRb~G^-`qhf^2CM;IeRp z)`e|=jgHHBr@cjq%wbRsZa6NF8Sw?J6Ivy(oOsNb?llVIaN?!txD|%#rc15JY6&-u z8z`Jm8GI7-r*Yn%2+J*hQRJ=Hf587GlLfk06@bV1KZ(!!{GY`m|K9{6XBk$^w`jBz zr0spTeNG132!L3Yz_Qtu0JZgXA?3A}g5M|b+x$w?wMB=DJTH^_j>%S6NY-%x8Ww)Q zIV&XHU?v<@L4DtQ??2;zhynizb0Zm{JGot;G?mPed6^VE#{bhvKmX67>15>pTVS;c zAjP>*2!2D%+q7Zkt!=64Lr|7p)ltkL{L?e$ z{=;}srTypk{y)Dr9N>S7M(X>jDtloy@Cg6ocsl9x|LlA=^8YQcS$Z;KTvfq-6)H{O zL$~~1j>J+%tjgbe3QT8^SDzh9g$ui@9YkxYZ{;mvcnu;z3*DXjffTGmXG~j z0M-Mkz_lVK6xz6w;KS}L()Df1EjV7Sx(Of9-4M!hwdy3ZHVz*OH7Ltu@R?W!WqI61+_PR=1KOzI>WOZR`A+Bn;`o!sU zVL7&K4!K2g^)uIMF0!1N=C#w&>UD|st~ELS@p$OF%3?$BDZ^YVw+`@7+w@#Y;i!Jd zu=)MFzT6tlU~u>2H|;r7EW^5L>VKL`#9nJ}l+}a=GxUNW@SeX;zX+8Il|5;>w8S>G zt*3h+ng=l46#EN=;_ffxRPTny?DJOk*l!82ai_Ohg*VM*T6nc?Ez2>Hf zS)UhVg2&GPabN!@(R4B$_5Urfb@jYfj~+9hpd9Z#jS(Y8j2Q7B@oxYC0RR7Ym^^9# GAOHYcG9lam diff --git a/assets/rancher-operator/rancher-operator-0.1.300.tgz b/assets/rancher-operator/rancher-operator-0.1.300.tgz deleted file mode 100755 index 89ee6c239bb7ca0e30031c23df8e96cdcd787014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmV-F1iDc zVQyr3R8em|NM&qo0PI-bZ`(Ey&a?iCgMcBx04bF1+Jk^SbZJ)%*s>r6`Wi6QS>{TS z1W9?#4E^teeps<3*~yZ?K{0(VmMGpGY4ZE-NJAxCp$U{mL!B}gmn&*qcuzBN_F5o> zkojy@{SrdDzhto>XVHvI2$@Hdh@6pVHk(e)fV|oWjv%*=nltj^Sl!8eC!kU)M;%wv z#vTBpjtZ5Aj5;SU%?yIlfilAkl`*lN(2p>cf4F=;IayWuyDhG!@p z6*2hEeoxIC))7c`bD8N+(wQLWoo5=Pm7)&-t$L@w_X1p|JPLHXkS$T9^?Ncde`Oud_MC3B;XlMv1GnMtt@xS z+_&53qPL9z98F_b*Siv+vcArRxK@I*`xt&(UMY8N(4usnmkM=9MWZWDRB-@m7Jk4b z&4s(clv`H@^?mQH|BU}3di-~oX+a&@i`x|nUCNx(FO!1D_&=R=^Z$ZGvyuO&z-ALb zf=ezD{F<1zNzKe#(@@igpeVeuBVR)JrOppEwYMp5kkYN0He9+T_&?YS|5*-DSZrVX zhw-3Hy3cR@e|~Q`!v6%dQ1@k3_QGo55&lQfY|`cbyIC~y{}k9QJ*n2VtYE)#nZ)p+ zU4Ab^M-%F3nZFMdm{ubzKU);YoHBK)uTBQP(>oNlZh$h#fH}Z+-!+Ci5le_YABVjF zYzI<;Dd{MeXj;osC)N*cf@V5b@BjGt`TG6k$My?ARS5rTR2J_v0xUU-j1&YFN%q^NVXZW5ml}mRu9OVLK1GSH74gjp7(v1S*-6pp_nOYw*ek%n~qDtt*ahV ztbhNmF1PwK=-vJJb$do7O|hz)x}TN;vD4ZaWjUeV480%-yyvgeFI*;ErcYWfC9p|t z+vy&O<^l9K#o+=WzxxZBt9CU8F&By diff --git a/assets/rancher-operator/rancher-operator-0.1.400+up0.1.4.tgz b/assets/rancher-operator/rancher-operator-0.1.400+up0.1.4.tgz deleted file mode 100644 index fbc7dd661b54b019033462be13d3a40cb7e0184e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1087 zcmV-F1iDc zVQyr3R8em|NM&qo0PI*zZ{s!-&RM@=AmBxSw~!(`N>T{uACzCEH1pz`>$=E|N&j2Sv^^Lt3Wz9BrTtT1MKQT+NxK@PXy>=&cY% zQFI>1^)rg1{&P~jPvYn-I=hHYFXE$U6320L1ksy$um^=BW{;v*+v-p5I{{Nl6CnI_>BG>N&>$A+THq zkm5`z1iuN)yR?bSJKKh)4?$Ua)j%Mmz4T`39EqijSe3tb6qwE+ueu#dg$uiZ|okWYZ{<3vPB$VweMQNHH#JGhK}7@ z09KAv;93zA3T-D@@x(0T>u z4>b0MKw0{&xI?=T94|T7g`(^2mfm}ZkJyJj{BQ3Wf0J|IQ~ZA#UG(_>{B&|Y^8X>Q z&j0m-vx4T@iofeSq44XEuD#Z1lEPJU^>M2uJ|`>KLZVB&0GJV?KOX9?ve;02$}rc;tqeTYHa(S6II3SV zY@UDBms`Ub4DNpXrafnhWms2D{jQlr?6vm1tR^&=p%(;!_wsf6S*TQ~>{-jDCAO(; zHQhbdJb>Y**j*qL_kSX%dN(v;pEt6{Zb^W(JH6#HylpPi!s}IQS&m8OrP#y&ZFXnP z`n)0&Jazt`^!a}p#nZ{i|A)ZF)$@uydXf1I=6LUEj2JOu#E5^1e*ypi|Nm1JnbiOw F000zU9z6g6 diff --git a/assets/rancher-prom2teams/rancher-prom2teams-0.2.0+up0.2.0.tgz b/assets/rancher-prom2teams/rancher-prom2teams-0.2.0+up0.2.0.tgz deleted file mode 100644 index 6b253a9110dd9ae2eb1dd03e506c3f15e9b7e13c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4292 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 diff --git a/assets/rancher-prometheus-adapter/rancher-prometheus-adapter-2.12.100+up2.12.1.tgz b/assets/rancher-prometheus-adapter/rancher-prometheus-adapter-2.12.100+up2.12.1.tgz deleted file mode 100644 index 78233149d0a12412083d29bf2d2eacc66d13f1e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8367 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 Q>;KaAZ|yZd>i~KH0MfgrTmS$7 diff --git a/assets/rancher-pushprox/rancher-pushprox-0.1.1.tgz b/assets/rancher-pushprox/rancher-pushprox-0.1.1.tgz deleted file mode 100755 index 4e4581a087d7f12267bf73caab9e08d8d50cbbd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5926 zcmV+>7uo0^iwFQv@!Vek1MOXTbKAy}&)@tMvsChIr3{c1b=a&Vue6e!xSkJ{q+~bc za#0nNd)KU>FMLw-2)`^Vt>LjC!L8&nkDZ$ z-`xJy?RF3L_89%%->2W*on84`U98tX*gxnUboaXZtlQh~_PgJ(y)QsZ?V5?)%Yc+1 ziQ|xafj1S6?V#Ccv}7E$4)gnOa%I*1Kbm-1?#{hwbZc_}KlXQb7w`XmzhCTsuMhiw z0P^w;>)sj#ORoRt`|rhZl6!fW#A485%=dCHO2#hy&Li%INoNuU0gnf)oo6%Nwwfr( z!8Sh6@^BRLV8GPf=610+cEnudeA?VG;}Q1+cW?kRhmqMv zx)U*AQ5etOx4bm`jb{RuIAGU3_?ViHUAO0UTLBk-7N$AfI_J4yvy^!(;Axc1r##MC zGGh6Jvs0Mx6eeUi>zsLU0L_j)4y%A}*h;rRlA;j03b(a@=zN~SZJ;I!ecFK5wM|y9 zbtn5@(|>ouqiHyflZ@Zi9INzyufK=-zqixh+uiB*SQmcm_3!onF0L(h3M#|1Sg<@{ za^Kmz36I%u7DfRmCIf}N^2Qt_d5c|4Lczo=O_L1NM1ZVBY#b#+HuZ9U0<9l0&{YuU zYYzSLiFF^e1qO)un1r1@Ofxy^d@Sw_5JC z@RNXd?nZ+@@2ctl*~#JYixYPm+}<3^^}n~%KiDbjfA65*-MQEQySTRMj;VFX&g4Dj zBNzk)5um1^Df;$n?dIM*oaA{b2AvLQ-()s){bbrv19o(yZSb95&V+HS$0f(=ZQxe5 zQ$=Dt_OICxtOU=wfcvnIfE8M;XEE$l6bbgay0E3h(n>`q&p7XlCr*k6ucIwrr#jR& z8cRRpUe4>Z(Q17UDD-_U@G}oHHc3SOK!E+r-zC`&ji7ZPf*qca9J+=~R5`xy8Zz}^zcaMw@b zQ8=Ducq?ImioBE)@_|va&=+h36EN=i6Ag)qMQ6!uJfVA%{8sB%f$jqs5#pZ2K9`+v z9+E3^C1LIjBhE%Z8TK6|QIx#He!}N5np?o74*NZs0qaU+l}Pd!dL$)ilVlbJ3~((Q za?A#u`6p8LV289PKV16lzA!`w>9wwKdGqDf;DH6Hj= zB!$0E6H=psh~CbD+l7C<8WmR{*$%PM(6VAy&HrC6E>6$cj5v?5To5VH1zaWgDsr&w z67PZEpIolNT3gGKX$tU&1ewHX($lo z65g14SDZ%S$gYH4cGT3DE0&8I1DrG}2HNP!<+9%>U2<;JkJ=t5vr{co!6G40aKP1mGf)Fm7~~7Myw+L>nNaLX%oGT}tEyjPO@V}u(8|G!sozfd6E(OrqI3yg(0=F} z#uyDbE>}f}up1whUXY677)lsULG$$}WCeg6quo{b}%nHPcUph$2M*UY@|@icznK8Njz?j5<~fUyo6uWW8M}*uf=@ zgKiWg_%_@`X9y_1GxgBGb&eB%hVGfXeoi4Jg^xh|lm7mb>N;?%f6XFX%d2aiW#BF4{%A|3TOg#Q;eeM~ zX|IPG?2bu+=Afkc7)!4Bh+P~0EYBv}FQI@X|VsXz^7h6;pXv<}6m5#+e+ zqB0{;EJeODVV+#^xZsOMHX0YfEj7KuIz$l;WX*ec`fNG78nDb7ObS9l_U8QjIivo7 zI{*W4|4J;M4mb8V%y5oF3o$CIQfxg&Izt2~vp8^Nf`~Fd@Oz5PfyH|$;@3$8PK7X4 zjKD0+kEC1X84env;3sLw(Xs$c#dX9S(VdsgWpaikU=GN@$LwU9=5ruV4?9D=Hk{iE z-xljwU#t2pU>WnN}nB(n@8P}ymwZvgh5hAMP03atZJrF*`XZ5;Z;r^?XiEzb#G zB$*r?|5jRnUy^~44xr>zrT4FmmnRXI(SjtFToCjuZWDca6zKW-jT%C_v<5U|V3#uP zmS-ZvQqEqKF-hSkOTb*mz{B~5qf1biyeq=p1Z|Eqs)3AC4djRUA9o*jOQhUvFC~G^ zTPep~XCsS&q@}Dtxyp!ZY~@3cXJZ<-3+7lnO{x<~ucZ(z5>^O7>-&o^9ndbJvY{SI zrKoG#52$J%!G3&{`umeqV4re4luN?h3w$pND9-eJ3`M_pS*vxq zG|+7x09jH0-S6)9tM%WV?(Tj4=Ps@-la7)bPZqQ)6sGcvg#-5c;fv=EG@D|THXxsY z4UV}VVV2|C%R(7UN-vapf-o4S3+CW+nXxdKYc$h`Q!wh<*J7kOOmeH7pc9q`BtT3t zrX*!<1Arn;dYt%IJVWAOl1=lmG8@K09EKc3c7M0G|Kv$;=gE_uuJ4aLxcXi1@t(hb zFyfDUono%7=RN0nZx0vtGRgS>p{ER-J)k_91v*H~WTd7cLXo5_9W27(ZC-HB!?GWvNXpKHe1##t$Si%8K_2zWV_ z*ioyuA)1sT3rb-CpW!KoXx?ho67P7j!Hd+ns668M7i03El9Jmq!l~JOz}oE=smVI2 zY*nOy1#P!XYZ$`(ZN?%7SXyCcuxWI?`~nWQtTg6;?Hu%<*h}Np#4U}YNE7AKk2TpT z;dhlWX_b@G0|tCi5yXJf5UrNlg+c8b#<)vM5pd_3U{C*sE0xSUq=WHp0pnV$wJj5S1>-5*9(vr%y!GxfE;I znQ0Qplweq{nxegwvQc1lRUeeiW-U0u#+p6a)Wt6mk%|PM6 z9FUzws#M)Um??1*GpEYFna@S4OF9Xp>a3i8fO{rGF<>7)$wso8D6`ixuYi@UYI;a* zidA}wp||bzXhdfFy#agu2InBqCDkV5U~SQw&&^rY!XU~ys9o-j2ke>-&N`}HulOEu z25c9M->!6S(}aGK&XF79+47mAaF~G%IK!Ek59v6qnz`rp@oa31%*+b!qR&J~FH<|G zBemB8MjCVA(8k4JDhWQUwQH(b!@kLs3zl(ac%}gDSfs7Fea`syw@$BS!OrQgn>LQV zYrpy0AncRUawNg*8JIGRP=M39hxSW89sxn9mOMrlhyqwO zt&45i%w+_uBX7tNtw0x@bguW1jj+#027wb|9JY)7vl$=&JW>ec{|x>iMT`0%O`_1B zKX_9%>3BcT;D(xnTu`HHo(-V^Uaubjs4DfO^8~mwXZ>XZe4XDQcpq9 zhCsPq)M*l&DB+kV4xo!#ndub{P_-Arax9Nz>y{If{8r%|4MDu8*9uF&Jfd8;8BQsdWYYUy7X-VId z`;+H4op@hPtXHRowAhB%jhFRUFH4fXU{gyaGS#7$hk_kQeg_M%ymw{lig#(4+pfl$ zsZ05;#WUM|D;%{ZmP0n7D!hVNNYH2i|I;uN`G0}K{Y7?B4Mhn$zuX+Sv*IL~1$3lV zG-X;Ti%wa-@;nmmyjA6`x0$Ly%9$F9xip4bBnhF_U}3Y|8yEBzX+d)X`AS%=)?YQX zd#eZ-1@ezsl5_jJ+6Dn)%EqFY$zhH&`Xh*c{Pv+b-M(G=jDjCQ{{1b) zwdE!%zID7H$gtI`vx{;A!e|ca`HyulrWa_}uBeo*3#mn^2A?yOaIc|ALC>aSdAn)A z3PT$7!>*9o%tG?vJ15d#F5~QivCF7;-S+j$PL(d*!V%EKxu!NZCT~@0!=9K*V-8~M zA3N7x)`6g?BhkO;T$!Wxn5t0PtZHf<>Ud)kD+t?A6UncB?C{+02oVval7egf>8AAB zlXAZ+K3~zzfhLVz<-zGyy?xKYW~C7pth;iH$Je%&N&}`;)KYyqPxLfPrUUCH#DXD@ z0+o%a-N!&_zyNCHGvF=7ytSE7i>uQNSd&Flr&#JEXlqd)W`RN1_4JZ8XQu9n4>Iug zxxFL`$6qEf#;7HKW4@$Vo%H}LR)y@A0#sTSg^@2%#zlS8w0*>mP7r1miS+1(+>Qo8 zx`C#cw5r|KE}t#*@bJ|a($x;U(tedEcbJ&i zw!^nRe6%Ei`;&yV&$*Y;i(ITSIyu91uAj=FvkJ04D#fl{8wHs(VBdZ?Iyt*|`}EoK zleaGqUz~iZHw4>;?f!N0`_g98)X|8CwK1*M#dqhgemy%n0WdHENm8OsGWjR2I2<7JIE5t*6GL)pJ>Y=J=4l^Ji)M z0o&c(UD|#j>E_ulNqL3s zM7X)vOn0?Qwf!op7dKzbZ?DGj+U`o8AFkwjy<1rck5;^H(QO}G(Kb)=J923V^NDs_)lGi-{5OGT&k3D*@P zn@uTA^>wO4YcNDtz0}z>yzYxgf7ffB`cL`IFPoQvR-FIZ>F@4T&wuUr5AN$fcX3ss z_40!q^)gWN+lZ>wpyG*KSH5wGp17(WLQ#XPQzN2kPi5{eTPmtdw(=l{d4-QE^V8X3 zWkO|L$vl#=evWCAv@N~)%ebGn0<;=g`I;KPX;rK=WB*QuRI?fsk1MtC%yV$zWn-SJ zdKN9lZs61lWH$TH>yB=b#Wx~w>inwsivoifbzEAkS+J%W7BIL|1U$6n?Di0!vFVo zc6t^6-#^&BfB*lTTn(9W`BVy}q%G%DdQZ%X;~(aMmi4WwdY#G_HL7xsjZc5b$6#)L z_+#<3w{Z4j@!;j7A3Bk{FgjmSu&S1;DzK#fCY<%pkTmpN`vghteK~8NAF20Tb$Vot zlN;s2*yj|0BzY^2ZP<-AKeQoxfBun;#x2>r)K~4dMxpQa0Nr1}^elvPX==&UDm+&_ zfL?}k(ttI;#BwvhR_(e9udP`2JzV?h*Ao2qcEY0+)XUA&&wCZnD*U&0F6ZT@0Rtx za(fX?*4iPvRat@gUcYZxHIofjwIWg?QR!5FY{+Wew1_I@r^ZDm@pENCv7!2ZVbvc_ zLW^p>Os4S#$d*^vFCrSS;$+-96cu?Yy@YSyvcZq+Vd0f7w8K=l1mhvTtE9<~Bv~cD zWhT%s^)a7|S6H^$!&<-M&Cw0hY;QM7ZmpwiV@YYfYGT^z{nI;d^;7SY`A)d-U;R}v z-vvPbLT{;n$aa$mJ;Wkq!|GUBm@3L~B+nEtk}x};Rn=32Zod7K_~6H z{B5r-_T@wmw!C^Q9EdYF$jdEiSW+pM)vXD&TPpu+uuGw?yWmzCX05}l8s@z*uPVv> zW&_-qy07~LhZL@4)9!+O3v&GqB{`aSxS|}f*g{+8_eKo=+Gyeay1(wP|4Y~Z0^$qT I!2o&y00TCvO#lD@ diff --git a/assets/rancher-pushprox/rancher-pushprox-0.1.2.tgz b/assets/rancher-pushprox/rancher-pushprox-0.1.2.tgz deleted file mode 100755 index b60ae4b37c855c690ea49976a69ad8f9ed88607d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6095 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 VPtUh~{wDwc|Np9n1P}m#005c49|iyb diff --git a/assets/rancher-pushprox/rancher-pushprox-0.1.201.tgz b/assets/rancher-pushprox/rancher-pushprox-0.1.201.tgz deleted file mode 100755 index 2dbb296395e685fa3b75ef6e8f37d0bab49bcf75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6104 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 diff --git a/assets/rancher-pushprox/rancher-pushprox-0.1.300.tgz b/assets/rancher-pushprox/rancher-pushprox-0.1.300.tgz deleted file mode 100644 index 068a94d873551543a16400f327b2f2ed772b31a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6316 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 diff --git a/assets/rancher-pushprox/rancher-pushprox-0.1.400.tgz b/assets/rancher-pushprox/rancher-pushprox-0.1.400.tgz deleted file mode 100644 index 85c090cb479075f2d005b68556952ac8d958d130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7101 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 diff --git a/assets/longhorn/longhorn-1.1.100+up1.1.1.tgz b/assets/longhorn/longhorn-1.1.100+up1.1.1.tgz deleted file mode 100644 index c93f249a32a699463867669f3d48b1d0d8c678a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15806 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 IdjMVm0KdEa)c^nh diff --git a/assets/longhorn/longhorn-crd-1.0.200.tgz b/assets/longhorn/longhorn-crd-1.0.200.tgz deleted file mode 100755 index 7a01c2d4b875cbea0e17d37b55f60eb06d7ce47e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 923 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 diff --git a/assets/longhorn/longhorn-crd-1.1.001.tgz b/assets/longhorn/longhorn-crd-1.1.001.tgz deleted file mode 100755 index 3dfe234aa4c0a087c6d0013731c5492c8a51c264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1631 zcmV-l2B7&LiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI^&Z`(Q&&)J`X=pM3rup*~Uy6`QV6xiUkLE#j+6g|+=#9~8{ z0*7+yKD_V#KvMr@)mH7s2%dN`M3M6w4mrOWk`|X@8A&C^feO#ABdWBwrZGP`Wbu99 zzno6(ukZWKUw=A%cQTp!=e~bAIrlG5{K?yk%gG7x52{5+Nl{aE;_r>s9Na4@R0yf5 zW>Vm6L`Xn2<#Oo-RBH|%lV<@a%^n$qGoq*nB2XKfMJx}PN1(zHP1pk{WKzt?YBCA|1H}?;pKk?f$~h7p0lA*vAbFIk z=lyh! z@VKKHGfW_YCStqcs^pRawNS)?sTp}MmQ28i5H||2kLVT5!sG}O2+Y`*N~TE(YhJl- znPr?o3xR}ihWd|6PIJ)f%VbNyuk0eq_Kytf-WU(Nw3nmmo|RDqH1+ zpiC_J^DnoC!qBdL%0DS4G^lII(^wP};%s`asm^tCmO!nTSY}nVu=P0t5~NCj&=w4c ze6%49%2h(hHD-_e^uS@_l{rXKn36+CiHK4l=sT2)rc z%dvEZ+Lxwp7(VsD3>iN4!!$j9duZ5Z@)wB>JI?zM9F80u?m=rew{95dp7#k3rO0Y< z$ZA``AqVUX4%i3|ScpGvaOg?PyK(LVs;wv*GGFs?DnRKTItX?dFN9 zebaHQ>cBfA2e3xysPr1*$E%4S_w7?v!YZ49edF&81fWMos-qGF5F$-$yQ!NN%$xc7M6I|mxBcjUrb5wgH=!E*#U z0%ZxoW_JvUstEddCTk%(v)C)n<#U#1mwGtW7E*GcVrSh_1VuuIbipA!17UxQ!%r+g z?4L{W!E_Ki-Jn-vS75~dsws;Y6Hrm?7>e5nBE`@2YumV@QMaWBK7L6)ZXcez;p8w` z!+ltK)A@W!*p0U>?rtj5N#iVT@OY!=Km6M#|y0WNkxj56Dpro d9D5u?8Ol(GGL(Mh?*IS*|Nq`H@SOlU006}I8Uz3U diff --git a/assets/longhorn/longhorn-crd-1.1.100+up1.1.1.tgz b/assets/longhorn/longhorn-crd-1.1.100+up1.1.1.tgz deleted file mode 100644 index 68261d09609f6dd90d77bedbde791c5102ba3bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmV+t2krPDiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI`MZreBz&e=~vbPw6Z!iwA^?ZUS-DX_t|LE*Hy6g^PV#9~8{ z0!cYd7yIrDlKP<}E4E@cLICk%iz4S6{>(Q+Qly+MV=mY<6w%RnjD_+Za6%9EnS9^( z-<+J7U*Gqezy8VT+k@GOf9jvU^^ad4ANaH5)3>h=kiS9sZLyd{5wJOWr9=j=))rwn0h!_u z=BS)?@q|Z)UL;|OKWcH#Uz;F zB}CKUVUGR=nsgK+nh99gL~IvaRa{b{mWo&~F-Py&k}#McWLp8|QFcEQ<0I zgk;Dyxm^|98%+?(+iR*%^X9B(0Vr(SE- z0fm_mz?1<4#BYrYgKCx_^j&iH39ERHJgbqH*QuZi@GBnm!Dc)Hq++ZbP(&o+Yz=e@ zp{FZcUeq8jbA$V6O{NEWVX7#%wk;b^>VSHZ*A+_e@+kvAbiIB9P(c;oXAS76nhcJV zf;_!YfQdamlLVx~NjjNMr<0MMx25L=nDDLSXJMarA?Qk^%g}jli=qp_PL380juxf( zk)&TZNegGDJReKvsC{Yrg2=lbm=Te8{V;WnU+x+Ked zkV(Zr${vuSth6PrsH2ok4P%HhYNprL%`NJnkTct#TPjhOmtPM{DTm*_9@_VZ-|D)N zpS?zb{MK%70MU%QVTjk$ozv>b0AhJAiW z`=IMGUEt{VJly1>pu#^o=vfu0d)cIDDWV-*#+ddMeGchHihbS#q8N)7ze=6C2Xbu) zubme;uiA%3E`BGc$|k3})kZ>nxrA!QaU+|yHz{`FuNtU1<-cbTp`bfJ*9FALUPH3i zI~?8-wybZg1~zl&oz;eLm%ZFqE%vJ6uVpXGUqN$w)vY-4*P#5>cfT_qy8I&!G@Mq$?O&r_`gY(hQ5%2pHLAPW+M z^{cRFXkjn;A``;cbs=e8sm-KW6FS#whi=E1#x$lejj3PyKL7y#|NrQxLjXho0Is)f AOaK4? diff --git a/assets/rancher-aks-operator-crd/rancher-aks-operator-crd-1.0.100-rc7+up1.0.1-rc7.tgz b/assets/rancher-aks-operator-crd/rancher-aks-operator-crd-1.0.100-rc7+up1.0.1-rc7.tgz deleted file mode 100644 index 383d6a3dd3535e29ed6d041866bc27f7bae520b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1081 zcmV-91jhRxiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI*_Z{s!$?{hwdaIZsB=dPCyc}sJ^;n1xMn%zC@jgeSevn&Y| zl{Fpq-3QxA|0GWTtjZ1>$``{V{iA-eNRuY8vOwxX8T!s60XynTQpeK*hzBdE%+YHl z%d%{Aa?)J0EZe?jA4j93;Ys#!^nUnZI2;{i!;hz@Cr2WCb>wGA3=DLXy*k!5x&MfO zwT^+cvtis5LIQ(v`9K1*!GU(i5{dPdMl}}ev(o8SXr<7O#XF{m?>b#9R2V!+9E(=j z539gfbvnB+7Dn56-DxE>2m$*w$@;0e++f1Er$za81_nS)p&18 z^eSXfz)%;Ft(qc4fuNS69XejXRmY~22h5(r0)ff zvc}8FMc=sJGqxb>cV_(cR>BdPxgce(s>+_-4vkk4$d9;(+mv0~DvcL*jr4XL#ykot=XmHk4H`3)( z3q&r?AmCRr4-G=tXbdb2jzwLOw~V~1$pj{C^Bq7(`Uce(e+f3<4k(0Xtag-7gnK05 zvla?OuzI-8n@Bh%RA^a)nWH4+G+VGpxu5GZRv()*fXap$;g!Bl1~*4qYKdQbB19)k zq%+bg$EjA72DM=J6Yq_dO+sC|$lB)r0DIw_L9h>Oy7G<~)i&JzC(5`$vd9=V#WM-Z zrs0{WO53ji$tF8A#(_Em16Cr<%a{h#BLCs2oSB&GMEp09?bjg?yO!LWNH{ zlyiN9pU)2V9@-$k)?NpraY*!KRd3K?&|9Nh{Em`S^oQQ5bj^n+y#&VfFp;R~*h~(e zn`tJ=IyaC%IeBmFcr9vZ`@?kG8A36O3!~*ZCi=*SxUi|(e};Ug)`L>blnZ9|NPBS5 z5vU_ImYO(%xoDfFH0&Q@UZy^yom|#K^F6nHP1qG^6A6FD5Fk&~8~Xx65~vPtTdLdN zg3ICET|=?I{sqz)+LS|eFL+=_HRD$Ez5f}#$(y{%|3m%`00960wRV{*02}}ScB~1J diff --git a/assets/rancher-aks-operator/rancher-aks-operator-1.0.100-rc7+up1.0.1-rc7.tgz b/assets/rancher-aks-operator/rancher-aks-operator-1.0.100-rc7+up1.0.1-rc7.tgz deleted file mode 100644 index 05fc8c47c820d7244d959aa3f0a109a032d69c65..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1460 zcmV;l1xxxLiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI?CZ`-yL&TD;&gMl9c^f$?p;@E?L4#?7B9kwP$5)>a?{M|20d>q%f~yC;`8u$vLq1=P?}_}OcA3bTFCxoK%}-7 zB;+U00o%6i;b4$|+P1y>>A1u56K7zb4_)WX8M!C6bMCt5CtyEI^cEya6M15Pb*$aN z{YyZiNNA#&h?HjlP@)MJGm8?fIa*BgNuq_xBBcrE9yBc%lS=<}NHh%^9Z-~-O&R)C z>qfJH`94M-^t4Q{*Ju)v5LHYldQjXn)k0|u8;ynXfU_w1-1uuOMaq0s<}8&Skh!8f zQ5q!`(Ui@UMdoVDI&~VItS2KyshEg7IQ`)@xYp3JO~T`VoHn;YjzpoEjiz}*8=EOA zV)P&+5t(6#kv2%o-mfF4u0i6s`s!G=<(QI=3?CJhEY|t$3wVn>1e(zsrb0qK4OtTw z&EVqKTPUYN8G*=p7ib+Tuiu|B9V8Qrif}#Xeyzigj75n=QdFK{9_%fx4a2sxf&4#- zH-ma<()@?esQ)S9394t?09y3lc1P~6{tt$Br~k*mjEf23ne-Q0`Ua;Y;ra$=Oli6B zpw}}DGFR8-+Q=+fNM@K_07#65Vp?RDja<%*G?{sjZs==dLNJ!%bKyRhh0WJUY_5s# zvrM`Ozmu6T`Ii^UgDK$(I}vymH1c0#7;~ag^{=k)e!8{vXZbi zN+cSyt3QdRL2kX{yjId_inLb+YKfV|{`1G|D@}B=7rKn~>Dg86aQ;tNHXJ1i3110L*dwh0eMHnFTih z){C@kz177GyymFI6~MZK`E^Yzu9}1*0~L`bEJ9gDF`HGTKv6V><+AGdBPS^fR;%T* zIty*pU#;AawW+(pYUMp@s>uvit9n1i3Fl+M8C`hr%k)a)$_AKLOaiNoWGUapy;;d%BpO^!*<^RsvZvO8$qwf5F6x9Aiu-^K2vgO_F|AGHtG;Dq^J-QAZI&|pp5dIDT O0RR7#kdR~mDgXd-yyB?< diff --git a/assets/rancher-alerting-drivers/rancher-alerting-drivers-1.0.200.tgz b/assets/rancher-alerting-drivers/rancher-alerting-drivers-1.0.200.tgz deleted file mode 100644 index 1feb329e237976c25ce78db1b860fb952f69aef3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7388 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 O0RR7G6_oG*-~a%@!N}zR diff --git a/assets/rancher-backup-crd/rancher-backup-crd-1.0.400+up1.0.4-rc4.tgz b/assets/rancher-backup-crd/rancher-backup-crd-1.0.400+up1.0.4-rc4.tgz deleted file mode 100644 index ff8fda983c34aa174cec51123ec908855422ed2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1697 zcmV;S2449eiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI@bZyPrf_p|;A!uOE-fHtcy`ye2=_~hInMVbbZo0pL$+hPjV2GylAIquW`;Avk;0s;Ky~Ms+$OS1RP=hX!pa02 z9J8~>p)d@?i{UW+8-`)=Z#WuUp7n;|C>&jegZ}6&>BtMwza7hplK70Ux7tqY^mx4&gWk zEir*Ha*bUDS|o~q?&^&;5PR7aFu)qRmVLK|oW6Fjq@O`)D)<t%!0nd~ZvU;V`K^0% zFu2#br92v=NurI2reKtr zgBe*tj9nu_QVD52+!iCn$+UAzzA=`76SYa*%0%!5UCw|gC&$Ba2pxDJI{=AA>VO;z zB7z%CIpxc=bq{QN7IayFE1dG43hLB)898M`lPNL+B^px4IN!^p)%*syJCKB%;`A}) zG*03%>Ur_(1+Yv-yC+Rn5GAaBCle+3ZlrVPKoVtFms6kv$=%^tmQfM9&Txg&WAy56 zOe0R0EAy%}aAq)%u!;~-R(A7LY4jL{C`A9X|Joi|;Yuqmi6@NVIfF5>fmNZiN-6?9ic^@${AZbST#6qzO>p7~57_lK@X~^8F0+VbNQ&_^CJZkj} z&w+W*uGNC-L*5u0vU+zX6=>~?qa9VARPzMc-k~z>L2VK#yOX?Qe zu-_wQYLVw3;`#LEaD+EhZar81EU7YluyHMf`2Q*BtH%FUc^tYy z^QlyPFSGP^D81HiQV}q4&!ZwSGq49o>CYmB7lSNtN)@=oW90zK8o$ zP3crqD$%K?REq07KA;BW*pkxB`{;2hDjmc7O&66OQnkt4_e8{!L8<}mi%h4=&9_6I z{BQd1>iYY4K^#5S98JIf?)6K*|L%=0Px;?d(BIJ1X+W0upvm;Q)4AHUk`-14nH4rR r0x0})I?)iJ`38MC)S@rJ$y85tq7$9yrPCh)00960{pT#$05$*sn$S$# diff --git a/assets/rancher-backup-crd/rancher-backup-crd-1.1.100+up1.1.1.tgz b/assets/rancher-backup-crd/rancher-backup-crd-1.1.100+up1.1.1.tgz deleted file mode 100644 index 9d789999de78d54fd8bee3e33d569f0fd864de2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1693 zcmV;O24eXiiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI@bZ`(K$&$IsuBKOeyfK|zM(u0BGnsa)G9(ujP&h=%nKxt}h zb3>6_k}_f}_J3bclxUr$INhMI98aG6{!9kliO7GiHcuOR#=%} zgA;c4I249qcsUwn|HCjW{|_&Q!?S1q;O||+bt1$|+!6wy#HbUVgd=$CuA+(+Cpvf7jHj46P4U${k%|=22WcS$t zU_lvJuHqW3(U|@}Gw60431oLTGccbH!KVA3R;caa2Sh=33O6(XZEzwBfLF`n-ePQ^ zW@kijCl&p}KmPnKu;bspJ)Z)OH|Kx(F-Smbyeuwtmht&kxl|&RW8_l-$DBzTA*Wo0 zgOe;(nC+CPhma=1LQhz#P3D7iI^W?s6u15{`sLRiLTk)uoE?Vi6cYH==MP_oGqQpN zyGDeh64H9OEk=fuYv-1HV=MtDYLmH@iQo&moB>fzj)&tAI`BYt01}JL0XY^#1UHy+ z%9mN|9@zFQ=&}S?I^{i;)T#3_3d)8iQ)C26HDr!)zL!a-`3-P)ASpNH=@ZInk|tvm zdGYK8u*^ieCrwrmr>uD=6D9a=q;uy$Qe{_HP@n_J-Qh%5Q4zY%afQ-j^y*zgV@{VV z^Qtm%W-yPjiV;y(cJoYW^caOGM1Qq^U5~7ErInY&Q^xR|!5G=Vs?=Ghm>KS{+SUTs z25D)Yl3TxWweECFL_ut|1haaBc@UTjGVhBBJeGo1wfAU%$<@6f7J|i~?#)iQwgvz< zA7`^$YQtf=*fgWfg9LF#&wJNPe6>z0$YF#ngvugE<8QwnbmdbZJEXBD!-nsF@kN|>9<)@#`~-0j$|Dpyo3 zo0w}*Yl#019F*73G`Qeq2UYLb(j>vEa_!WN_Xwoaw9B*C(f%vX6kHs-c5#Kp{6BE?O0|j~1I4!S7^ZA}uhMG9JflER5?&)#W_5Nd@ zl^!uwjeoB7%|5@pj~E${ETem3p;(3W992z>*b=d{WNvkVNxq6HEa6TbwR(oW?-4U~ z$ny{Je0p;@!W$}go~wD5Oc_2}b*tHY@tL?y=&c9TdAT)PZb}`tm+C#tZO8lkH^%nj zw0ZVDc2Z=2?#&$QNBnOO`}@Dq<&>HGRTuQ)Qk%B;-v|W{EdaK}{}+RcQMvv%7!6MG z|5MO6jsLCkJZ=Hdsp%}k%M8HHoFAEfX$b)qWgQ{Y9o`~+5BH~<(y69Y zp;Jw%64!ZrKm*FLC8e47(c@H9I)?YVE-F2wYLmO~iAW@aOar} z^?%<7N&HxIwEg}&8oVk0{yQ37p7Ot^pg*Ch(||nhL6hlquXnX;B`d59GAnFs1W@|r nbgCgn^9}lXs6}6clc}EQL?=4YOQ+ug00960hD|0v05$*sfnHRw diff --git a/assets/rancher-backup/rancher-backup-1.0.200.tgz b/assets/rancher-backup/rancher-backup-1.0.200.tgz deleted file mode 100755 index 9e997cd665c00442dfc60c899bd6b70ef0c690e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4658 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 diff --git a/assets/rancher-backup/rancher-backup-1.0.201.tgz b/assets/rancher-backup/rancher-backup-1.0.201.tgz deleted file mode 100755 index 16af46f919625070a9252628b7804025b8a45df0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5321 zcmV;)6gKN0iwFSV1WC+rZCeDA~?gl`DFUgJ_XLnDinXyO${Q}VFZZt5l6S!AAw#JTookpFX zzDMbHyZgJljQ;NJ(cf-=NB&iX^#=QU`@OyXpx0;J-tJDf_Y>RwF4UAtDiS9KQYK*# zc-)ydb5UCls!gX$;3z(_zyBm9F82T7l@llS!kPO|hy&!Yx3kmO|GmM^Uf%!x0rda= zV6gKO>pme3jphG&|2shtCQjmofjDR}<~oVvhcg@gCO)^lu;ZjjXn6s!@B0U=I9x0@ zp8R?4B<@vhQ2=_Yv%JA22I&P}ftNX&ii2(G9t%A>Y{aKi{{&Yi%S z@i`BY+FGe+x#2tt1E_E>u%S3$z89pQTTbM?=dpk;JYYby6Gg_O-L?BI;MtA6D4}Fw^J{@>r(U+e$pC>te(+iIO(c`%W2$}%1}W51{=TqnYL$K-esESxqf3R9U( z<8Y1@Mb^@01|ru9*qF0a@ChQBd$ZU{a;VfARAY^*!Rij1c+)A5L3P&Duv@LagfW{V z8K6AEcrM9Dt@OihhWfugh)=?qRg}xu&f+}U1<_CobD(+)ZBU-S2fH=Z9Ct~I$SLv8&(C8c5 zY=NG(K-8S+H|z>J2747-Aa>OIzHdq{TL!5Q56_N}U?<7?!vz(QsIPKe6Il;4KXe^G z6Fxgh*vx_Vu~7Y=10OHgr!J0JnX3)VCH3k`q3Lq27I410>u++#j+5%2Fru7s6@S_2( z-T(yV3k%2p$K6EM5=^A-6?1^44n1?# z7KRz)4$v=om5^^ekTS@`_vT(A1(FJ+)>$S9DO(r~5eNl)R*`fY@c4|=?8P2My#e5} zF5YHW_yLBQ7bNhnk_rzd@Y=&c#FJaj1BFZIE(FH2KGb#}=rcE7NEwJUiozJg3e>CD zs0U&uBJPsWY7SIB#SVu7rH1NUk0~{faLmzA2N04k0d|RrPY)m|Sei{hqE>iP(Xx-m z3^>l);>?3-olpPktQy(RsD%L)f0L0uvCm@}PbDfR*ZG4M%qMi?iJaA;+A^<}IO3`l0LFo8fwzl#0 zBtz)H?F96)%b?!`D4R*@OA%$?J^TkayK#Jh?3}432Kmv;jlq!mT;<5ihIO_Ege#5T zB((pvjLDMycXm8HdUO1QwjY)i_TS!MuV1qN_V)JsYy0mx%2N9;dKy=;*--@Rh;%>u zm;lyqvTuNhC=?$2T!2LtGjAUGORKf9vB6$()TmL&PQV^)U0zvYmY}IHd1x+et@DCqo6x%E!;&NlHW(Tg)f z1yp~^(N?}=ry2%h?2b`6%A+0f#T~wrE$>=)R#uFkg=eS)!w4)P+ZbB_1QM!{LdsW+JNL1ENJ9)Sq2TU*g zU@dWfVzbe;2TL!0rx&=ehw(%@Ubq~e4BxP`5RLg1Z~;Kg(0Pt|4r)ZBH;3JA$gcSU zY?MpKg`q2c;fqUR_EJzodM1|J?PdJZEK*F%-}mIa3_RvDl>Hs(9r~fc4A{%my#`2| zXZ%y@p@V^1Y&6(rK}aLrlW(Y(w#s0~)VQW+6x336kPr&^4wSv1X^Ky1>`+B+)HRxWFuMY(07DjsGtkZ>*@Q$Z8Ui&Faq4fUu5kO(dm0NCFIbr5(HCd9;N|0 zV_@Q5c5a-w<9lNrin!F?O70PblSVNJlTZ|*`K+cUcG6@4T!2h{pq6?Fm5X-eD>QB^ zi(5O7i(4naR*%I#!)ChHVN4Y!z$Kp4hi^B?EJg-gznO?m5_8^}JJL)4?4aEWL@A|g zEG&XPVW7>Max|p0ibNta!xn|}Ycz|U3AQO2oGE=M+gB^>$z@INX&(|%fmg7C4XT0$ z%XB484GmW@M3nt#kLw?+l>C2?QsiT7_bD?$9-jZPKiJ=2=YKp$DfPefte!XlWJUa^ zzrWWl@Bi)Yuk$~irI6=|nIE|`d$7uvh1%e%X4wUxNSU(B52U>cF92VyZ|Y59Nl&(!xC&G7C&w}{6)g2vaaYE4SS9%Lq6fOo zV08R3LFk6VifI`&WE_C`*YHW@tk8Gq5UPjVjZ-hA6`&rp+f;fy9I6+!{*M+H_6}Go zG8?1bUc-G4YnFnG)yemwEVUQaK>#OH(|ksMLv_k_?o*IuZ#pz``-mKqQwM&P-IA68 z@_WYm_tN&v{5ad-oBO~R!uBn1>S^b7>;V8k%-+|+ks7+~8vFi@D{ zs;*=MVdcIfO&1CMT>xGy#v3qhWO}%An>oD2*tYjOQhNGc{O3}Uj{R`f>34fSce?wX zUcaMTT2-l9)H!oNjS=eV{6V62Y0h^Zpie%FJE8{bo~@mL0dvryT0}m6f@RoGaKQ{ z25K3GR`!|9=Ct$pF4gj#G53X>d?cZI=&~BZzGI-^aJ^?c2m!S|w$@P^35hagUmKv8 z0@rO{*C5%GWa`zjo?g6MAqX9m;aqkZwDldhsJBWVs_{MYj&~?#NdAnjn zRcmKsi^$b`I+=v5e305Qy`BsMgGFhBV+GxztSwdkg|ZGVVx{yYE(E1!W@Vr1>(_(I zXWUpS<2!|!aT@xb3+uv=QiQVaJh;ibSCfDEKf|;0i?_o!$D`BX;c@nz$=$f6)2T25 zr*(?PsHPDf9sgzc>+AE2(ct3c@bH&kPcKI2@6Lv=jxS!nI~<;$yn9Z-EH~-p7%mx}qb&S0S8QD78^Ws!<>KLpB=Pu;n2^ zXc_DLkM;-LVV1ECik_}aHra+cGE+oz(wxge88hQ7sbbQuC)wzM!b+t@qw-nkoepIp z`{w&XLo>u#;C5Id-AHNiL|zZQN9|f_3FO&NItQban$eKw4?G)K3Vf;US9+&|u*g^T zo|PHPqq9rd$}(rZBU2fU0!v2LjU?X;AR}*;3bj36pJhW;8UoM=yQx(z8ub9})&|Ej zmB#g7d(cmSW7YZZezzR|>veb6`+v_;YT|!&o^GQta9ZadKFBsGdxp;&p_A#MZ!n`u z0>c9(&g4VvCHx&ofR;CvMxxxZirHXpjVZS&mWgGVC#RIPWJzV8eM-ZG>i{Tf*utJj z{(h5xqV18w_brL3ZgWcpR57)$p$gGZ%o3Hk50e|`S@SxSS4XU4c6=IJ$u$Dc>B|7d~!laI`i`YDeV3x-Q8&YH+TJk4sn z&?QINzUj#=3q&H$_>6y!;O*ZsT_Ikyl|dz8p|;4YsYKtqzeVt`3;$9o6a2BNt&9!1 zHr-LszBe^85UNSZXj?)DA$U=thqP8f99U>y`1ms(j2FedRSQos0RlQDZ|?2rtSk8T zHcUR3^UMztvOEV%m&G^xu93?ut6Lwxfpl$yn|K&d7K-WycrI8nB8 zRW8wSP(lBrjgWQuVWrXjr`-!wvFfN5o~`;u2ViCVcc;AnyVGBv|9GCVp+bAJgl+mf zfd7Oc?k+7~=vn(vs&zaa(Z=(x?e^9d>r$L}gZ%avQ!pYY?BLIA;<<_O0aNDH#|Gu! zkynwl)dA%PH8s|VZ*7n9g=$-vC^OFNLno4#p?J`8czU9gvoLCcG_M@IaX{nROu`Xu zJTrSs)%&*+IfW`ooSK+1NZRxysd{m-&0g@&bjt<^T)`|*gh6Cog;*<4l5bmPw-C?? zSSRLe?g>mdLbY`W&rI17;-(Rdr{FA;r<<1K99zZ~klOQ--lf)^wFgwPW|XKs zW$izRPWzhxaIK2*p`FvC)r0vP9y)(&eE>5)yv=V3rNe1>wUbVwpnDD||AO)=DeF{h zvliAFb36bf-(W86h`U>M zRZLCiICOuTx%79EN~8~edh<~_oqC^X*R;6PSdf5Rs)%OX|JL^-IqF_UMXRhuk-L>- zQr&jVz_bEi<@ct<9;cyeA{U5MAUbG+1Q#hXkAh|EHicYMn|p>g z|5A2#A=_(NEZ}j+F&~}AmC9?M@qZLio4fGcGZt`yobf5LP?2SZT}>v7c4IK>Eb?B( bVHzzF?b_#Emvvc}?_B;4Q!@c)0B!&P4mnv% diff --git a/assets/rancher-backup/rancher-backup-1.0.300.tgz b/assets/rancher-backup/rancher-backup-1.0.300.tgz deleted file mode 100755 index 1123aeda6040db849330ac95d01f4e135ce90875..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5308 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 diff --git a/assets/rancher-backup/rancher-backup-1.0.301.tgz b/assets/rancher-backup/rancher-backup-1.0.301.tgz deleted file mode 100755 index 258047bb894433002ac92aba343e36a0ea0ba9d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5321 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 bLnraEJeJ4uPg(vq00960`|_H)0BQgLit2gE diff --git a/assets/rancher-backup/rancher-backup-1.0.400+up1.0.4-rc4.tgz b/assets/rancher-backup/rancher-backup-1.0.400+up1.0.4-rc4.tgz deleted file mode 100644 index bddc1275153c64c17035395effc28f5f9fd88b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5751 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 diff --git a/assets/rancher-backup/rancher-backup-1.1.100+up1.1.1.tgz b/assets/rancher-backup/rancher-backup-1.1.100+up1.1.1.tgz deleted file mode 100644 index 15cc14dc1447d55fcc97795b733c8af222db02cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5857 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 N|NjL{T{-|Z0041bO%(tD diff --git a/assets/rancher-backup/rancher-backup-crd-1.0.201.tgz b/assets/rancher-backup/rancher-backup-crd-1.0.201.tgz deleted file mode 100755 index cb12b3f3ea1cd40d43cde6bf6d48e1e1e4d72f3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1675 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 TYNvk#00960hRUdt05$*sMl3C- diff --git a/assets/rancher-backup/rancher-backup-crd-1.0.301.tgz b/assets/rancher-backup/rancher-backup-crd-1.0.301.tgz deleted file mode 100755 index 8ad1c1afafa4f5774f443d97ab2cfa6c38ffdbf4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1673 zcmV;426p)$iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI>{Z`-yO&$B-Tk^9hlFJM)2oOBRSteMjd9lEZtv%U;_ps8b< z3q@)qWyBcv-3N-YElboN$7#~7I(Y~z@%%`hKRoB~NMcS_Acu2I?$TsPWb|^f!cu!1 z9J8~>A>a4?tMNGd@B4oFzklfmXTjJX`TkWf@~_VPV0`7jIz#>=&EH6=(paAPC(l*h z+&_dc=R#vm1y|t!A%Zn#V(AgAH3N@|mjtAy3kp$)a$9i@ThS;29-?zCQ#f}H;W!4B zU;-hs4~G(zNF@O^R2!uscCtxefE5f4`)&;ddmZ3}egdhe;2~NEg9sFnG|}1bcU)=A zm_m95XfnM~Xdz??#2eH?>rDb7!b!p?$%HgmZ)XZT-@EXG!E-C{L~{7QhB#qZgL;|E z=hUO1#s9A^u0|#Qf8~$Hz5hQ26`cns6z(-}^GkVm-zejL>tGHV2ZKAxqYzC}rA0i= z{q_bHl+(;FV$e9k8kr{D43yGKTUgX}0&~~q}QE@7#}Y-dCR zgcK15dcsnrvlyh(`3~2j*!73#&%Xu;tudofCJg&hB*3pfzWa1BBP)opeTYyZMPee{ z79+#St#eDRF@}H>xyb^}MDPV&&VWd($HQ?59mFIv0EtBwk}L}%f@@4U<;(2p9@xBD z&}9j(B;`Go%&GG-3dV*eQ=|n-6=b1uzSl{o`89AWkd*84^fBc$PU8>-PCRn}EHl;a zNs$#qDQn)zL<+teX#+fvRGQTl4Cp{}_c%_fs0iKUxI(HBy?7JTh|}dtzo-nHY0M)m zBSfUp-8?fI6(S$`=>O)gtH?@6T6sx4Wem?5gvcaTrI&Svnc-ekpS8fXK^mH;pdD^a{XY4g!``PS{CZ9mk z#iki;E(8P2ons^{9hTW~HTJcb{|-bueWLP8!XGJ>5EUmJmXEeU3rrphI-KJBOrX5O z+MVqqWSNC(h#j8O>{SdaeJe3nbQ`tfYmts;the z+M%}&j15-Vctqv}p_F)Y@MfD0b~YiStQp6NS_yqy*?KJ-hx;Adb>)bvWfOA+at+ZB zz(G3WOhX864p8-hEsbL=E5}aFc!xqtkJg16fA=e|6l@;4wt0o!YC(PZ4)Q0@U2%O` z)L8%T@@qKhKCq?!AHNDN59|MtAB;wQ{r?p7`Rf0I@iboo99JZk>*8&tSe))@%SBVX zNx>M%DJ(z&Cx>C)krUMC0|kB51TAMobH$!khMGLNflESm6Y2=n_3>k0l^!uwO?Y{^(!D!01CBwxi8mT;dOwR(orp31G_lTJ~)cJ>aF1tA# z;Y^h~&(%CjW(@C*xz%jGcum}<^i~0NUT)2nn@Wf6q51%K+wngCiLpI6O`ZLKofO%h zdo#zz5%=B0{`_wYIc4TyH3WTerA=G@uZ4tD8-OkO|K;d%T<-sk#zCL|KLvf({NEVQ z<2C@Tna(o2%mM6NwsSNrJa6s1S)}i)UA!F2ylF-Hmo(m{R#oMCDpTK=*?K$FUgtZh z2pHJwQIYBy7=c$pQH<~NE|uT;j;wnpuy$#QOnGH=hr3AE#eLsX>U&BR>U&C+yv`8= z8c>dHDb1Xh9(_~k7~ZeCsdP%$CJ)~e5hn~X3+Uct>N_`I4>{_;>D%j@pWb?L^jLGW zeg7Sd%Jttk82A03C!zniK6}1KQ~MB+6_y(571kyJD1AzuDu~d0Q~8|wx%bplPd)Y2 TQ#<_~00960SOYI=05$*s!E+@d diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.100.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.100.tgz deleted file mode 100755 index 3f245c1fea6a06d2d5decd61afb93de49ba813f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3416 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 C`LPuM diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.301.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.301.tgz deleted file mode 100755 index f1dd6d76f61b3bc00e9ca4850c56f63d3b2c5a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4835 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 diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.500.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.500.tgz deleted file mode 100644 index ca29cdeab5455f1e4d33dcf600ac611fb058d0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5081 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 diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.501.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-1.0.501.tgz deleted file mode 100644 index fdeb51c9c086f1e5400c5697781225f7a9a2993d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5082 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 wg9XFSr diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.100.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.100.tgz deleted file mode 100755 index 69ee1f9d62281fe0effc3bb7b5acc060fade16eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1333 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 diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.300.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.300.tgz deleted file mode 100755 index 234a1ee3e838d108e66b8f0d8c2134b6799d48d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}kXiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI@La@#f#_E}GXNzY=aUw3qKl(dt!aXhk{o>$~rLQMh~V5vsa z>AQEpABmz!(UfQuLY(bP1ZAHH5*{ ziQ>AhJ01?>U)ObuzwW5tzv>OHuScWaXmH)Xa(m;RJGf%*sfM2;ks;7m?#Z@_FZW6W zgpdTpr7)8YV;&F$a^ZMD6rjW9TMsqyM~?o4rCcc;w&cE#V#3~#j_^(C5CI_?1s+bA zWt&u}fu!!5wIK{kr)Ufi40i3*js1PDc0lnjs1285!dAVGkH*tnQQZD03_%bWMoVPV z*?Yqtr7p*EI(3Fm6+-)&5TyssIShTQ7(Vp*9|f zqvAo0|6h;$!(IRH_lB-}@&9v3-g7{4{7NWn%Q#Oz8|#9r-W&;fohL5*37bZSWH>`3 zBkkdPeB^@1ZV)1Y4+J)dBuNOuW{R=3-F+ZK5y)y>>_v z1UbZqO}hbz0%LL*cUiLm#3S(hWBige8$g&Ru5u9fS+fDeKcGbp;;*dP076K*Ny6nk z$ZyrHBvw#712tv90}s&-dmEw^v98XJepZ4d;RqQT+ zFSLwQoZE6#PbSBVW-RrgElJ~E6+{|>U5Du~W<063l(rqwT&Iqg;w6hRVgLTuVQd8f z_v4(DD5XMibNBJfz&>*bNhf1U+r&#e!-#QGf6Sz8OgwJa@phGri6{u{W=@zr1Qe8o z#ma;3?LZ^os)x0b-^qP#4e-IIwxW?x*ae@;NKhGmGTnx@MZAT(VwdwKKuxn_AMen+ zTLFvySxjZ90;EzK+sB+s8DPrE3LqPXB7HPYqL=f((W6p&l&Fj+HQK<##U3wEL}9V7 z%Qn$B-?@pWTRDcVrH`4q;WHfQ7Qd3E`OO|%j`N-Sj6qy1EQ#9lN>7R;H}5fv6NV*p zJ4{6zw;wbJ6Jy#KUCyCe#@D!HV(Cxi1K~?r3DFo>ycoPjFj*XLAAO&%ZKB8O7r{Od zKAu5x&>Ge|8lM{#z`C_;gIY^nod&An;sGw5mY?iCzW^+4{J10}*S&7#9+sc&+X-gH zQ)4@*a&Azs(Ek+$>fFJrIJGSOr>EoAsAtn#^8?7v*}VC5n`np$C4S%X4QP5q}o z9*qk1pFw}rztn%uA!n)oY*=%8A;{j@Q{+1>SKLqCcc=cdqp2+cgk1a{%~1;^H0fgG zFh5nP>w)3xLEtKNEwC5w!n-c(tYi~>c6~&Dr)Qk}Ur8nTCVRW@GusrGtEHm-6ITyt=(*Lwnu^1L zdczTwomU-@&nyk&zeXh+e-%_0|Hu77G5(MHqf7ihhnyw;C#-2F{I~uO@cHw}EMAVP zbdoOCkCaVbraqf2q}}cx{*+%W)$xD!;pY9P4^HTxY@_b`&)%^3{pV;nxP1S47WwJG z$Bs8_mgtzb1Wk;VK#cEwP8k{W*?e8~N#(bG!;4(xA{V(xnfxCB0RR8dSBBmIG5`QZ CD$%k4 diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.301.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.301.tgz deleted file mode 100755 index ca0b7e3854cec14839ff0aa0138852f9e586b2c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}kXiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI@La@#f#_E}GXNzY=aUw3qKl(dt!aXhk{o>$~rLQMh~V5vsa z>AQEpABmz!(UfQuLY(bP1ZAHH5*{ ziQ>AhJ01?>U)ObuzwW5tzv>O$zUz*AeRq82_QvjLaK+qH4L?UBL!htRlWi4W?v)4# zAqj{}VJ02MJRk_9%|x`9Q_GPxl%f8$$cNiguNjh;hWMS0zxzjJe)Ag zHmOhpN!>MTLl~A$(HI~Y?Aoat`}%AmdK{F z_l7-6U5@2+>I~6Z;e>%w0r%on>#Q=nJ;!whZm;vLceI&Q`#)i*0w6SRy&y7#+IS$2 ziU&3Re?9IGcm2QL8;snG|DQwho&$>GS3+T1#(DbLSQlLN=19=%JaOSq*fcUE!x*_!;iCSKwhMvRmCVs@0NF4U>7#KHy`2Az9+lFgL}fgw(FPta_IQCJ3X6SR zwu!#^&P_bs$}w~;eazGipW#5a_?0ZpZ}!-7obTLc4B}#8Nz|TKdQv30d5>9~Ff5_l zVJh0V{h&dZ7}Lh+at_rpzQ!dJOMfaK2w&1lh{nL;#o#r9$>MnX==*$a6FpYH2=;;S z@eGoK*0A2u_}r)f)~#h5)LQE5G*A^64{+(U{ABm}1z>68$0Z@T?sY5ou>5S_PB1H; z8rwmYbAx(?{;w!d=MG-Qsb%RuJsr13J)7Q|A3%1_=FO+uM0>=k=ZWuaK>e)vUeOcMQ zXjG{G4Ep{4rT%jcIZOR#!GGv4-8)q0#~VPfxUPa-es$rT$(?DDpbR2hn-|7F6BSd+IH;eHIt2ns^ZC(ZQo}V zr9j`7?rR5D|K%+tf9tejrp#$tLN0OSHjrQS!JuLOSIN=5+224l`M)>39vAX||9Wuw z|K}`nmi(Wxrk(7+Vd;KGeOIPBJ>%s6N-D`W+1q`e*`~N$EfwvbxOzZC&#eyDR2&Y} z8;+>#yy}2_W@#AzH7eQotDw60Kkg5T@qctZy2Sr;$XVil!kTu%f9wAMpFf|>;^nAH zC+TASNZI6N>a)p0+U@?~Px;kS9sg$^Zr*?T;Dr9kHtN3r>Dc zVQyr3R8em|NM&qo0PI>pliIivo-@Bfm3PK53^1>_O-SCW>~1Dg%xw1D*gc>fSyD-D zHq_Ss_bu55jIr?;JS3^m7fNdBYg_udTWV}T1`9OZfZOg2Ww40AJa+>VzMU+{Ao=xuzxeA9`~9olz#sa<8~?gLyz+Y^e>A*e{;7svBC#bfSN_SiiZAzr z2uP_2h%0Hw9mWD65NhrPKqS!P>TQ6A_!Gx)%rdT&4qNarL^)<}$i(=jbcloqt%d-{ z%&|>rG(gI9?aC5HrBe(F1dClabz^^@s~yn%3mVIn9J6Jw6QT_a*OatBN=qPwWwbyx znZCE|NttpiuTy7;RvO0)v=%%_R;{yK+wFP2H}L(=x8BiaQtkhQkrqH`-v%PKgvJIS zkBSF1{(m#-4|e^(-@6|5FaCcH$$JiHj$a9-YgzC4zt*|nvNuD5Ugw$1aLgvLB^6E4 zs@Meh9-p}6i5o;n5CVYMQSYy3_+pSx7tj53%gfL8IgSa8m!G>+^?GrAfABdALD=PW&;TO%ykapVcl#1@fR4GgZN|JYycq@-KODk zCh}W#r-&64FF?&0@W>;y1X2F|ek)TQgwz;#HdtU73k)4+CQ3f>xfd8EAF}>Dxr*Hd z@VQa3PI6n0>gnW!(Trt2v?XcMt3_-;>^e+`F&ikorL^maXC`yJ3@=@jG5h&66$M6}OzX0u4=%eY`{O z?gSkAXE{-k7D%NwwvRbeN?^vx3LqDTVskW3s#mi=F`!aHf6VApZHee`|4wuzpoUj_R> z_;>-y!5CQWXhLqafK_YR28~gsIt^6C#RFVAEkC(^eg# z&0S!c&Z?kjNq3=ZnJYnUTG?eby+R}k#!}woHrbLgE(D}K=e++ntp99FWeo~JHT9qV zXgDm?f3Ex2gG>GA9CDWW&xSRp7lPcKJwv`XYRSXQeRt|VJDS=OK*Z&*@eGYbLYpl{ z4)ar$x*iz59t5sZ*8&I0F1%Z>YIFs>%Po!Of_U|NA$C z%l|)Tk+bCgj5Y0K{|!s`GwQoC)#({0|5s8;zFEKB_nB>q%hgiR{+a7XwDi*IU`@s0 zK)vCJ%FYiRkk2d)tg&L`8SvNe-1fI{7+faPWW&AAK>%nlWDRX zRp}&Kte+{HyiR>KT}ZdxKm94cTB_s!^uz7@PanJ}JlRIw_n*B%@%zu=pm+KH^DOe8 z10OryvT3Sg!2%31S^zP=_c>*3F=Vq<)hCtT`VB8~k&9g9B4zS#00030|7qdnB>*x2 E0BMoS!TDc zVQyr3R8em|NM&qo0PI>%liIivpEI9Am3PK5|7Kosn~=O$+1*U0nAz;Pv3o!}vZRvQ zY^bgM?pv}A7-Qoxct}#AFO<~MuWjkq-BM!%GFYJL2HbXMD1$`==D8b~@a<#)hP)L- z;_5{4ec!(x4wGNs_lv*&sNcWp4gJx;ANKsAf93bC{n6lx`KKCwiNuz`T=^&4D!$wg zA|RzAAg-hxcNhzRK&ZJF0FgkCtG59f;!hmIG0V78I&8ti5apP?Ars@9(jgKev>E~& zGsiZi(EusawJS>)l}<4z5G;1x)Q$apu6984FK8@Ra?F;!PKY)zTvO8iC@p~ymeB&) zWcuE+CuPd9yiT1VT4@|J&|2^yS+&k`ZMWz7-pKbm-+D)zNwxnIMp^)&eH)0_5*izT zJSra4`2Wpyf4J-a{oY{YU;O_ZlJ^|Y9KRAu*RtO8f30)DWp9QAz0Nb2;h0TgODdY8 zRj~>1Jw9>C6E}#EAOr#zL{cZpvBr7VEFOKH~;&rIfc8D6?5WA^ty9mbX* zc$nm*RH-z|+xw4S2JV?7NIMzR#wA|jYm5XZ^T)N6jY-DsI^M35F&PWtHgn9}A)ufv zELI+LZwDFyS3Rtg{7&v`Yk&_vwG)Gc(k=Kz#gfYK)9Eg>&66$M6}OzX0u4=%eY`{O z?gSkAXE{-k7D%NwwvRbeN?^vx3LqDTVskW3s#mi=F`!aHf6VApZHee`|4wuzpoUj_R> z_;>-y!5CQWXhLqafK_YR28~gsIt^6C#RFVAEkC(^eg# z&0S!c&Z?kjNq3=ZnJYnUTG?eby+R}k#!}woHrbLgE(D}K=e++ntp99FWeo~JHT9qV z^=MS6{|x&5{-yqN4mnHxXTzG)3qkJAo*~~Gwd7&uzB~1w9ZhWsAmZ}Zc!owIq0JT} zhxw^WT@MUj4+2-IYk`Ag7v8N`HN7-{0$r$v)ebw!P*Tc&p|$PU(`zOh3suFFE!)1& zDoTOAE#21+tp4j;NdMMp#Y~ygw1iyZ$Za71&q%hgiR{+a7XwDi*IU`@s0 zK)vCJ%FYiRkk2d)4)3*pFVg|c(RSU?>~FP;`g7Up?~@Q^DOe8 z10OryvT3Sg!2%31S^zP=_c>*3F=Vq<)hCtT`VB8~k&9g9B4zS#00030|1n?4E&wtB E0MHxQ^Z)<= diff --git a/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.501.tgz b/assets/rancher-cis-benchmark/rancher-cis-benchmark-crd-1.0.501.tgz deleted file mode 100644 index a9c02399196b0182dfbde50446029fd10810bc9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1448 zcmV;Z1y}kXiwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PI>{liD^Azh^#$CVf7~{7r|q3rRa^o68M%O`jKg57d(-jkKm= zI{oe)*#?ZU@fmz1nXoU6w9;>F>9@PmVgoW*pt%mXy`G^A77>`I>%fGsCkrs-tsoLt zCyMX;{%9~retq9B{`$jS@2WfShkd_49Qge!zdQ0r-7DswYWO)4TLN?CpKPo6a^H!7 zl!}13l6Kr-EC2$b=3W3q0zIx?2WW^taty~T<4WnU1rI}%WA=(njITeT#&RXcY}xIEXamDFCG8K=5(r@#Es#y7 z?<{*%rX0)b)ET0c#xVn}1rL%{>nzuHyPoe2{ch)L?`Sir_J6`i3m~+w0})$7V*`*! z#e*9Ee>3V0cKyHC?GHy6|38Q1JqI+$FND&ytoQV@buPH<&XAzndEzo0vq@}8MN_mY zHUYlFM=p8d1`!g3K;VK%>O?u#STEpq>((8sF>nJR43pU)?hKcNW}-wKrIF~G{dWK9 z_6}$U#7lgQk>F(hxR$ap$+%s|+f_0qVbv#YW6neCK}6ATH;QMD2NHpk$hx_n5^AqY}Cu zrlO164+f-7FkOr;=TI%ToRJ&Ubk`&%g^@h1he9) zu^m)3vuKtW{)!S!?%-9NT9*E^({XFmbLp-50c7WF-h8@Cv`3tJp7`Dd)Xz%pWzDC# z3ry2l6%;M$E_5w(C8$j+yUeCnh(y6y%A4FKTT;e_fVAhF_y30VpKYnEK_RH7{?i)` zhlTo2zt{IK^`CRdS?WI<)|_4la(DI&`Oc^%4>R}OssHR~YD)kSm%qm|G!hAIwir3g zk5%e=VEA$nxJq3M93;E&cD<_UrTHW1LN%;**hz+xQvNfoZO5KoGuc?EDxPfF_H9;C z3iNI1zII^sU*1Ccw@xc&%ABSp#eAfZ_%+fIa8`P@tS3!00f7I(2Dc zVQyr3R8em|NM&qo0PI;?Z{s!-&9i?6v9BNO$h%JRL2rv>TLfv-#X8vcF*T7{QzXk7 zy73nM?}aXoZ&KpKaxM$ci(!&JXNH_P8pSdGxHV}h`}F4J9DiE_f8Cq zu?(!Np|~T21O{!>o&;u%J!Ow2dRDgzlUP)_QoC%dk_1gGKCln?p>~OZ49S7SSd@cZ znh|4GyVz1Jv@+qYcGjatAnfLl_kL~Ua0i_Fj-He?v6z1BfOGd>`@Mdz-}SQJNsy#h zj*H@Q%^s->5hFKjo!1?T?V5-a0iOV_*HQ>#SCC7K;g@>j+Vn6HZ9#K#X2mbE{J7;e-}N-yw%G z$4k8pu2{Y_S%Or2rLSMEhUX>Td4X3I=8wt zxj_a$tU33XpkW1ih|(jkt`Wintzo1w7P&aDP4X;{i`XlZu1qD0oQ7E*aXWx2bJjB^ z>uBWCMcopN$ZTG20k?gy;dPty~1} zVYV`3Y=Xb$C9|!6P03bTf}}hqL-k`LEw&18;i@u>Y0*w>a44GWl>p_(A&qNt>xm4t zr<7aj!j8~&^-!A1AjQj#GHT0pWr)E@%u{+_92!QbYtu^zNRr}_0{ZKNiMXXFkNWb2 zc0{zN)KOM6$_GL+WvV1AWY zHXDj6lrS>L?>GSdsWK}N`ituRwF7>mj}J=quJF0C|h5w*fZ_F00030|Hbb4b^s&*0Ju6lp#T5? diff --git a/assets/rancher-eks-operator-crd/rancher-eks-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz b/assets/rancher-eks-operator-crd/rancher-eks-operator-crd-1.1.100-rc2+up1.1.1-rc2.tgz deleted file mode 100644 index 0c67bdf859137ad1e521900b23b45c5faedc136b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 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 kcIE$`JNO3id+FVE=+L1Dc zVQyr3R8em|NM&qo0PI?SZ`(E#&foeJ2Lmqx^nE2uietYJ&;eOmti#sCNP=QTQ3Nz~ zwm4IwKvG&g!{2?-56hOVL~fcn-Js_m%kuG#r1(5Mo-9d31C%Dtl__GBL<`x!42aa$ zf`t6!IbhqiJsb@3PusS4KOJ{?e&P)5^Pz3KBgZ+hopaY6oPhl-(OZxxP2`FF&9Qa| z_YVPyBB6<9B2u0KK#3+?%q&W@=4dg|Cy5p&iqA8mx3+HOfI&~VItS2KyshEg7IQ`)@xYp3JO~T`VoHn;YjzpoEjiz}*8=EOA zV)P&+5t(6#kv2%oKCC0Bu0i6s`s!GY<(QJXhL4I$7VG@>1-wHZ0?p_RQz0RrhO7yT zX7KixTPUYN8G*=p7ib+Tuiu|B9V8Qrif}#Xeyzigj75n=QdFK{9_%fx4a2sxf&4d# zH-ma<()^3isQ)S9394t?09y3lc1P~6{twPao&FyKGcG2CXVPD2=^LDqgzFoeF{S0g zgI>=taIUV)wUJq}kjyZ<0FW39#k9yQ8@ZerX)^O5-O$&_gkUVim%@E63!ATz*jy9e zXPI;nekU_w@-Hux2UEfob|UaBXym`fFy=&~>R(;oy}h;c7yT_UTKRvr%m3lX>G*#X zd=v=;Bt`Hs=3;?9=m6oSSQU9nP*J(cE|yEMiX*~Bm2<#qWxUzWHSPkYs-=}^bJy+oe+!v|F6oDNQj#FM3d|!P!s@m zGXDqbH8SCtmzzu=G5bl1Bvu}LIz9bd9xB#F1Nd~RkV@35{3%5_$#2h4pZ*U{IaB#3 zl}I#ZSAP&qgWP(@d99?=6lt#t)Dkm^{pXL_SDNT#FLW8}^Ruhi;rySl$Y;^)2{O>e z|G{9m!++QA&i}{3!EE0XiXV&h&>#bc>ww^RgVU_#nl_L0!T{J;t48Tj$>evWIxjjF zO>R-9jN%2QB8l`@3)V|NrN0j?{4Y+0Ax7WwI;e&Jt}__z?*C^4r{n)Iu+4uG$7)0M zH`SwmV5cv3tb_QYVx(DPi7{uCC=VP1Kp{t3))WEqH%Pyd336530GQ+U3!QZZG7D}1 ztQTq7daH{Wc+F9ZD}Z$e^Xr;cTr~+r1}Y*=ScI~QVm7Nvfud*%%VpK^M@~`}tX9iq zbr#yHzgoE;Yg2cH)yjL+RFfI3R`q_26VAtiGrI8L=joNuV~GlLVJv`Ax|zH6xZd5} zjqk@d*S~$Negeqf6%;k0vI|vpcRTF1kJ|&Cs0Y1VT_510EF{DJskEuAyd5SLJPGlA z_V~A!P!>MS?v05KJm{mQeWiH*f>ZS=F*k0lIDad-LD6l^m07bhi%2z7l}w5Nk9(9z z{OgD>JkT;(dnnwg{YQ5|M4WXrqT{{#QQXxRK-dUPE+bm-9GA^a5p O0RR8H{7J9?DgXeNRn-Fk diff --git a/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.400.tgz b/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.400.tgz deleted file mode 100755 index 6f1afb091f0ddba37b69feb3e841d16cbc970694..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7296 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 diff --git a/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.600.tgz b/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.600.tgz deleted file mode 100755 index 3194e2d06c2b5f6663f2ee88723e11776b2356cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7541 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 UmwT804FCZD|3kOrZ2<590E27qKL7v# diff --git a/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.601.tgz b/assets/rancher-external-ip-webhook/rancher-external-ip-webhook-0.1.601.tgz deleted file mode 100755 index 015deabd3a0d6d70acbfe6690442036d59675c5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7545 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 P00960pIb+z0Pp|+vBm8X diff --git a/assets/rancher-gatekeeper/rancher-gatekeeper-3.1.100.tgz b/assets/rancher-gatekeeper/rancher-gatekeeper-3.1.100.tgz deleted file mode 100755 index 32dddd9b365135c0eddea9a89dd86df8edd9c541..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6114 zcmV<87aiyyiwFP+=GecgDwdb24obkDa7* zCX=x!5t4Y#R|!(K>-hfmy9vcXs&S*5;P@D+_6Nc6WB$JDUj5g13C}t|kk(RKpHseb{;!dPu^o)47mkd5&m%#Y*nN+Z0e{NKFb;i^j44SYmc-Qd z$-Coy@=DDX1dJ1M;X>U$CAQ;Gha@3XaiOy7QNvhUBcG1#!MQ!66krz|-t582p=@GA0~*^&7!x-jy+|Omu591y8NB+N&~b+@ z$M7L?pob0#Y@ad!rP!t3z)lj6YE#{0S1h4^PpdHm{Qst&Pda1}`jMTueb;l7D}z8W zp^XUu4Pu80jPQ>haom^=pko=(3H3P`zBb(eW{&6e$T$qo8L{UWJh2`VPGi!*R6j9=g5~d$L6g6_Ex8p z$^Q=g#P#3a-CV8z`zUsRD<0%#PfC1Qgpu*6ca+^}hQ~Zc-Wk@Z7&+z?OHT3^{CA#UxanksI3&TF7ezTy)^8|l@hQ^CT;i`o%JsHyNjWAdue-p(mz9Xk$;B+Th&*_ByM@ zJHsqVBtDlIqX}yQbwbwEi9Z<`=k)3#1WDKh>4%NTUK8F3JY#f_#wduVlAeWW3?dH^ z+_K{qz!{T_6PyvPmN9?v{0&Nt{I|xS|J+d!#&kJt%(MTt+uLRPZ>zPk|L&!%kz=Uj50D6Ofh!g?^ zjHj{o9BdOn5YQ3VHe@}D>Cn9diF5&rl>FnlMcxJ86$t}g6T3uEq=De1mSG*9o}Ge; zMFGV@==*@+evJ6~6xvn|8koh1_qbzeEoN{*RxXJ4PCf&sL>RI)EOu>z&f2K45 zYmw`ci?KTxi@F5VRh&M7+4zO@!1wJf2NzHdEOBrTY&S?gx}k9T+3&9JsyQtv=i8UA zpZa8tghNTOiGl}Jj(Q$cG^}S^L%Eb*E~^0LHkU-We9rwEhyH;Lnz6RQ_x3sE(Wy9O zC=h{mF_rEIno)v~Ds+Ysv%wT(4_Sb6L)&Atw+vhv@*V(@Xy zz;8l1Tw!%o6Aj*qa%JW5IH)EDvRuk};plguNUcF48+_viT(1Hs@n*t4>H?H|{r1;) zy`|s+%DF!7*+i-5$zW!+L9|LZ7(uWs3i#v-Qf~M*OpZaN!P@D46)r_NG{~5XTTL|$ zzUEY$0rE5oP!40Yg7M`@ZSR)2G|KV7eSL%ZoXfxxdxVBuT3_Rl7BH{UI0k~LVW^mP zPi!yr7RLpY%dN4g4Im_<(L$c{1bhvDSpnO76rOX-FP=ubNT6!}?MEtyvZ{v1MwfYy#tq+-$l zw^oVmK_{Fmi+q5WrpeCT$mB^+Jidzi!wMPTxC&EpVM8@wDuRlnEgS|q(m**(=jbhk z3w&SV08<#;e#%2fB7Kb+2H%?G1D5$tj9~7HOdG@0t}Gs>O*)3tazKDr?hq8ch11o@ zGtCC5W;}NSCQuqU0N)$*)k?|7%J0DYc z$C(c^=YpgW`tVTC=w;AnK!OnvQcGjw$g_;T2&fh&RIS)Jgn7~vxgC1y8@>zZB}@XC z>%=a~NHK8W$RJIur?^e}w=FgMzbZX(S()Is&i~$QZSHhd`QP_ZYWUA}2U}tS=)C;T z&CX^e|EJSl?f>6L$?VrI=@^CGR(Q~A8B@0ryJWLv6t~K{ghyG8X`30@`{FiHm$Zy5 zpxPxEZ8U0P`dQsl&^mj}0}GhHnn%A>ieR%8O)6$$cP0Dmu- z0jzjo?X0YXdnq&Zzm{4pr=1zYjPAPuCI*^v*H(K}uQcY#f6xF$`QPcZR{3A|Q}m4V zxNi?E@R`P8ocSf^FSyW|w2gD%aF-kimY)F2|0P&%_%s2kB{mm2cAt7uj@VJuCC{#} z)o~Zn&@!%Z^RPiIa&z-cNF8)2ZUJ9N-ERsB1S02(vIc(-bJ|T%DR7k5iEu%zQ_yYh zfGRZ7H7P;8g~lX^$Tpw75DfhH2_53Nfu678FpXwV6QyFAnDbgPSlY*wQ=Z)}YRjSQ zgU$d=P=^3Fvjh1;o|&i&Q*7YkSRZ;OuF6A{Mdd#?+DsAQ#L&cT+=Dste|xvJQ?mbe zwzpa<`F|fpm;WHKSuW}i6|Wyi#LJUPCO`(XoBi~1$ylQZz}6S`c2^{%JglzBy0Dl4 zW)U4oA4a-l=#pgHgM#AxIK}T83vSDV+q0p<2q6k`c1WlN7%`s}3o~N@c4VWIl+)%g zC!6Mn5###WBuV%mkZHvFDB>Tby^Sv>*~!tzxFQ;*6-~g(H(^Vd*tg z7FP*44|$k*Hk--aX}$XN1nUw$(P!LzFnJPirPq0`ac#{3MoLUfnXS~!b8SmCF-#(> zi_|^6YB}+*R98)qz2f{RzQc`^l$EKRge-BuBh==o55n5fx!BaDHx?R9^!GxF9=|(0 zd%OSU==6C1;7GkCVq*&_*3}*oGIXiuNE2Kyr31Icm%P%kos7FmI#^0nPwmm&J2S04 z1t!8+B`F|Q;+YKdoW(M}BBX)F)=Gxh%}uxR8uOa;Rmz_pYf-Ofl`2}co?a7o#RAIM zaUAxkK2kh;`-&#T!AE@5%`vsTWc*k0Rfv-BW$R^2Jr)En&l7&;P@gGEW*l=AFQ90c zB@zl^d%(2kQ5+`WAoRNA{lW2cY=sVG*sA@n$A-J7?yafA_gv=^Cy(->+A3?UJZI|* zk&3F_(wBG^T*OUOdRgd*?RnwFaqLc9kB;aO8`z%I6e7x+Lk{f7=J#T_lof~K#9>r? zVj^DcNt_1zO!~+#U%o8Ac^d{NVF-i9P2=**4-6xp7|E1xigDQ*dK5CT6iGDQt>U#c zl~saKT}3^%TT@rhv#G1j3hw*cX}&veiN^4Q<9Zc?XgUTh96F~IW~>9VVCQR&s^2C4 zrw9HP@dM}hf1Rz}Rw@36H$biYzxyb6kN*|C!Yte4y$k9yv3*$ELCTl?cNP*f;?xs& zP-KxnK6aBl`}vun3vcb=gvNdOU_=xC7Y|19e_ZgJRVvuvCkSsEFrG4`;)*5oBFQLw z=;TR8#YRQO5&x$H!OHT~mIkE}OMW!l#8rP69$ThcFJ z^BSyh{~HWlYM|HVtJ+lPjvu!4OyW8zjU5I zwBBA;nQ8xVhk!cVr~Hb1pgH#6W@opY|I^u7?f>3S(e1w}!UC+nKA3vS1XPmZy@W4V zg2Fn2Wv)*i726)fG8UxA{(?*dh$5Q#?FHKx7*03_@h)5C&|L+;MowW0`?gBF??vk3 zlAZ{jf6Ah&u%U=xtuJEY|)!h*d<>Set9`lh2RQ6#V|izH+(i~bP4?b<}h6K78l{O9(}_zjtdQ?ITgWXd57B-)`>fSwfS%zMe^~p|C=4CK&s2mYLzeSH#HXM> z`ESA@_t2(@6NZW9>v<{^4?S&gEYJ0}FiG7GuGUqX&$X8@Fzf=0fXK;ky^#;=e}0<$ zLdG^;zX@I9lSm!-gMQ-c4I=3$7|v7Tf0{Hl$fvwlI8ir9rI+=C{G4~~=3B4>ZTW*0 zOYY2)hnBpLqs-L*m>B5B)Db@Xoh^X*@t;mf|8KRowpRN8KFYV#|Ha93Hw)lI;t)ID z4`%~F@0iRm)=NpL=cT+Mtb^a$Xb?ib@^V^VB?;+O-QyX37RAnNt`WUl2*J0oWJ*&< zfdJ++$%^%yzZ)dm9D5GB3pLJlNj+(LKvu7+s0>G)(!NW(677tp=UD|Cq~XBAayEAAv~|C zuW>w-hc9_>m^vE-@7L!>83^~}swyZ{V+Ab#*c0jgSwWOBJ>yNT*H+mOG7%_+aTofvlP@8$y-xn*HQiULmehYq23Hs-+37PyDeXH z{%h{RFIncw|E<#f-yLxOSMvW}${pnY>fo0;__eUizuN(^)yc3``Nm~Y`Je5=%e2Mp z??PU{Jo&%5S^oaZ?(Xht|My->DM7vQ)!|(cK~b5d zE*=(-bv^2XbdoIh$eV{=6yH&)754M8uguxWR%N9yFaM{q|F;D`!S)lE|5e5MZTkO} z1rI*DLmpDiPA*LS7{Sd=;RA-V68uVgh80`~g=D@}KxxsmNBNW+`vcFVK_VzAukNw` zmEsp*yX0WBwe042rJm0>p zYzwMpPif`Q^U)<pJsqR#hh zKU!Y%6LVi zIqQFCcYCKC|KIGazW;kKKvw+$#$x~aU$GO`S|FP4$@*u zu{$~^mNcNmpE`}j4N zKG91|cQln`-qU2bnBE2O{2rt-RaX}tEzq6Ho`6JvHUWp70w`cQ^$&FaKj}yIsov*lw@R z|KCqplN*4egsgisfd9dqNh8vjl?>P*4ecT*_=W#He@K5a*9WSTXzzi{lOw z?FFMr_OelTF%RJ9-@Rxz#db$S$jvDj>TaaTHXob$QN?3ei5zk^wmByto7J-UQ#{0aF5&*G)X@S63T_P_?siQ3 zC3^Ma*#`NM;*J_aeoLH%9<9?q6$l?%p(pB4SR*^|DZWpK2fpPIE{hz?kBDg>v8xI% zlu+{fZ+$uh|1N{avGFhC@s}2#vvbF&|9I$y`i;uM_rIg2%XSWJp$->S1@rfR%JP4= zv$cx<-bt{dd}}a{lk;_Rj8V{ohBq zzHa_(99>58d!l^Oi?7I1sVa@1o1p$s6^b*$HH+5F0r;oLtOH(?FEZug!H;*~h{SkG z8-wI&Fd#b}881Ig!HK&h4KqiUDPDtj@j!eP*H&!|Q_s61f2QD~@QZFh81c?q#vfE* z=kN)(fdgS+5DaYm+%*fKTfeDLrx-F1RSAoOU-h1S@DwbD_5Kwn$Kl&kghfjNqtVYT z8)I3-RRKQZ$sFq(_lM7y_{YSaE*n1UK_anVeK z_C&sN{>sTBphUjYOdfN<#?%q%1Q-97>RMdrgkK6KjemkUd)BzistSD{P|15XW_45E zI>GD0QY(FwQ0P!ll5Q~YQfHcCH}IRusLiD_WHR{K$u zk*gNhBr|;wRi(-o5HDe((8{#0Di#s9bjiwFQ6=GEu=Y&Fo;4}Svg|~6o+_{H$);wKxa>@} zwo)mJq9BQ9isTTaY>(sn?bnSLL5h0VQT*5ll~@u1G#cGNqr1@n6F2mRG_eP6N-rpl zX;S-P*{NQy@3mTlf9~$`&-(U`_>_q>ntQu@jooH_yH4tj-R+&$52UqpOe#{wQa1rq zdQlkq)a|(=R#^^;_4_m6$bRV0XOfah{vZDH;N9!v-`~G>M!lu90rc42*_qCN;5_ob zwcTv(G+KKE#z1{Mo`6v%6>pCYki%3I&r-VcRUyNh*HOM(=?#QP`BANOX;X%)aV2Jf6`z?n#7Anv77o` zKk(CQi$JoWjWHDRk{%Nf;Y)|~{DgXdm@0HiN4ywj+kOZmCkQ%Z7)2M1xFPh5j^Y4X zlhj2Zq6e~~Wq_DK*4BLzeJ3s>r(zNl;8`yKu(}B2{Sow&h(M2`(9-;`n*Ugw17Fe@ zn=}6#t;UWa|64f!K?1Di|3f4<#2Jrcg0*4z!W3~q6gXn4IDS-fvounJxJ@R9iw(nf zf8?g#u(G;Gla$X&UAMAW&u1_tuKD0@mqbiu1$qTJ{)mQ<(I#tYlF_xwf_g5r$+Y=j zSuakavEQT29*h&H8ijp-;N(>uHgv?p+PL8c@z8Blf=OsVT}EZcCdpS>DPnCB_+fTs zxv?)rW}A!~@H5VTHl2pkumD9b@#B;~lOm9j_c0C0Nfh|rH8}vunZ97T1Rs>8cRF-a zqB;y1#k`{31;l&U^)!hBAxVNLL#dkjV@hZ^_LC??9x!VdVgH6{8nbq-Ht^G7)&&BM zY7t;!OMot7QZqX5dx*8F#gSo-BoZHdjM0?UfI1PYnZzFttP6U58G-0*gSf;-B-VsC z0?!!rvIHgfRMN93OF%{qZ+tW)G@*f774dbLYqDxW$=g9wN zv(+f;f4hz5O8!4YTGz@$N$6T1P=k}I10zBfMEySeFY1GziWNU^+;J||01T~-T#&?x z6ahx=ra-~5tY1O?jG}~sA_Jmm#MdkW|Ax^e>S7tA9Irlg(=4G|B%yui739DyC!cze z$8yw^h(X*iM?I*Gx1FmR4FO?SP6@S7e4Fl<{OQA%p^ zp^%~hOtrUe2sB8@L>VBntE3nW2YyJo&=rCin~-^e7XwfblMwJ0rGCr0@ROoe=>-`Q zlR1PVty|79cd?~UV>j?Y>qW>g+kM70bEEhr?V{3}lkGyc!Pjg~IHWQKBx)5CYe)e8%~qG3H$x`;o90^zcyj78o9|1_B)5s3?V+ z9Pb#6IGCZ(WJ*3rgX8Yq^fVA#TP>p3>ZcgBXr^s+@+MV_olVh$9__<$7E^}7OdGkJ zwWo9t5m?=UctAGYJD9X+OU7~FD{C?*X!qKfGoaSY8oD?Gaw(=qKM09SM9Iy9lvH6& zJZK9{GtImbMZboSl79IELBUdsRb+z(kWBfAx*Yo65bCm+dZ71tCQ!{EHjJ{M$Ek^w zRYC!BadJqC0}7(89@5vv{H`BL8QZU-5!k&OzC#^A!WCm$gWBZ0HR=@0=3R^wR(b6- z+MF-zh2jlTp4a5&I%lyV^mWGR@xjsCW9L~aXAh7n^gm|^bn^!x(0@5?%=7=X8m+Sa zw^LvF{~jc*lM^sIVO8f2Ex~n|reIEWGd~bohj6ul3|trDlx1-oftm)Qg~Bp42%;|G z9snqfQ!o(rVeF-ElZU;*WFOW>n63xD@Vz8=$pawGT3A7vx5&h0NwvD}P= zr5x9J^!tR|CeX&kQ%XR&?IjT|A9KGZ(df{Hm9etH5AKC9J(7r*Ii z9&ZY;$4o%Ez8f$wcb5Q5QSNYJrQ0~pUU*C6@0t+bTk1%E@&VoShO;0w6S_v;ku$XcSKD&gJ z>%WWA6Ijw%p%JDdi>IU;M zr;4TSKy4~Mp9JbvmLxzh-3=Y0&=JuhoyB1R<#KIoYJ*5Q?a!C{akT*L457lMasv{q z2Hbz-G=72!WID&WO&a9zvn=_^%;N zF))ien&g5mH}hpE1BP8N2csz51OvaB2tM%{8M{G7w}eA~-2A(U7g4ojTs_!xSULi* zZh|5eV?epKO56Yg0IwbL2V~kdyYOS12fcIuD((+!U;yJf%E+aQF$WRBq9SM?yMcx@ zP!6MWJ4@jL-UXAaJ*7z=Y|GEQpA^>nf$%seadig*{R#++!V~fOs zhZGHEST%6~__isJ5GbpoN}mG>20%#T7y}2cB8+07T9oEtI7tNKq$A?=%%cyO7t$*j z1TfZ#Ta=Na;~0sPrK?bkr<5x8e|4bOvQ7ft`TXBDWH(pm{~jV$@Sm?8Y>5Ye=AHl9 zZf;M+|1?{x{r`tZN`GyWrd8N&g$MPzHFX=YO}6V+ajUFNxR=$Mwwa;wi`ztPQn!>t zwN235XjS<1Ro#-)T0Q2D1w6l$d%yIFk6Ou_R6KkGi=RG9LrCtK1XK+7on;#IZE{1V z*u3P{QbsA1y0r{rt4%(Awu<^PB78%Zq*g-H+Fyf!r9*=sN%Z23dob!F{&Pe}oIu>k z!HFil9EHNgvfS-qVW<}j4RL5G4XCIgPEpC22~b9T7&1_04G&}?@?IKqp+1$e$- z2C(9#v%As~9wg0N|BaJ!a@g4kjOeZ(Vql;xcWsSF)r-bF`41~VQT{iZ^;P`W!zA;7 zVbXOy2TyK9iLy&BUUH!`Zdez<;WjxGEI$R7|3k3c8qpM}mbzT%xLq1ZIpW4~o4mNW z$s^I%j01GIdALR#a(nwiNF6jN?ohsP60;^G5Qv;>%GP*3jA=i`MS+8KPK62LoWa`W zdsKswrb(&PJ7`Q65r+q7PXr6UpVB_|8|e8uiL!VGHBl;-i8-$&i)CF5Ipv2HMQz!Y z16VU)C8z>`o7thvkVjxAx+ykrv9FIk5?ARl(xUR8D{Z#$aH4DCF6O};`QO^B@0Rrc z-PX>|O8!4YGUY!=Y?h1qBhBka67ljlmklLD+BQyiDalx|5P+^P^zF6?NO|0~LZPsj z0LD{X(uR>H8JZ+&dr(lEAE)@;V8LCPaCbILFhYoeoE@^%0*si?iiMf606SFgB;|}T z%*kfhVZ^$*u}K>J8)O=BJ_`RwX>a2TNfUnrA0f;R^pU@WW+bejz>vGMwLSR;F?qv9t#kp)p2BAgp^P7i*^U#ze!hnJ=X1$@`=8 zcL#5e&rS{wk995)8(T=Rw(*dVzE6XmRKd+ux<93u$t#_>>9DP(gQG?DRE+MA%(V7& zG2zB4NdYkv&!wB^JdyqtAq@<+PDF^^-nJ*QF|Ns+rTpoM;q`hkQN@VXGi&0mSV$Q= zNun+_dx|HcU(>YM`Iz^*Hl%Kl4*x11V?prpIN@gw&5@#I#t8@U5|RN~ z0-+$bJ!U+QlPHb6C}@)phbPma6%bO;Ch@O^hP$W!ovFk3T;~!e_wwPgRbI97n5{2F zE>w-WImMN85jRokRRIwfud+Bv{IMU<0X=4(8_1PHcv^qVP0|pwqZ%T+aN1q307lnKGy7m#v^jArecI#8|tvzqX>X z4lt^!X!>?5>Y8yjRn=L+e1A91cIPe8WF!yczfM3jo$w1M&M1u79*lzB`d8TQ_woOk zj=x3hz{|F2*bs%Vc7J}jT9JA%0#W_;RzXD&f2$pUeu znDPYjzT4!*&o3-fcpDGLH0jC*1Df(rJQ&5lT=JXsCZNGj5Z*LoJY-1w6-(enkdb=W z%Y%%Hjf#jP{#9I=Q;kY2FZr|O6+5%=tGX|*0zY2riD6UIs%-^dCR(j(OWk@hufYlK ze}k@zjnB!pG1^XQ0_qB)A}$%L=$s(UQ|Omoq!!?+-z^By|I@>5>wj70AsW zjbDYy*G&X{lulYKr7aNEKKFr1*ttl}uL!ec7_F@?{Sg<~PIMrzAuANhFP-O)y>2fn z&D8(6K|p)lru>R{pgH>Ac5|;B|I^%E?f*VZGWEYH!UD9vE~t811)R7Fte^=B?Fgp1 zIe4^h+e@S`$n^b%N(6``n)&S|I}i{~IRufXW;vj%%de9&aig3Hyzj*N;*ySVy6CbP z3v_Vu=3`S-F)dZF zItd;7^wNp=uCs&Oa&i~#r}NK7Z3f^OUh#~zKMkU&NBEhFh$vt=KZJh@>XZK_yyQOW z6iLc3uzVvAh2pNKEe>VVYzu?b-SB!tx4CI#LdOsV76Xyf{>EC~t^fIH{0kZ4t(PI7 z#0QZ+@CSHe_7;)!6Ab4e@js2%w#cU(D;%g>WCF|TPJYf&yZsjIKwbWD#gcooAb#Q>pKlFNiVp=);F7re>bh6C|Y16)K6z({fL?R9p8} z;rPz*H1(}ac%YW4P~odhyi`zqI*ltTAlb?OKF)n3cb)ViJ_~s45T4gG=Qtk9!%TVm z^A_Hl?sKIKgnN2DDJXPf1t@>p7vcUYA;^TD^CmYct857xZO&mZm;9&=B1?aPu26xm z&^E6P4G{&FWIGUGOC5o&Yc|Go12-*#KOtMgwElJ2ebCyTQNP^fl+d<{tc#X|DX= zDc%3wZ0zi;!$ z%JF|tU?u+_B9#K<3j*YOlklZ6zOZ~$o@^bUZp*msot-8}ML0!el)89WJl6H357J4p zJRol#ds2KysZ!X_i@vgF2V0dFg?aHm6Z?NV^+u!d%;o>&!uoCS|H_01AN@Xesj8C; zQ(s1Kds}!P^{fED(w^Z2tiwVu-^!u1XxO8C%9VXD@M)L|O3JHy+<#E*H~Ow0WC_(5DT%kPsmAl|+lg&K-Rv2iIP`pc zg_lz@b#D?bvbe`-Y%~_R=BrjQiPa2`2pvU~y^GT0E8*Od&NvxTpF7d=FlO@%;Y5~R zC3Vi>>G8pbWBKEclOy$`;Eu~dFuzBS`+aV|k#|vu2;;3zQI_iSJ*_9pYd#|<8U8E$ z)a(W!=v~-?8#b>n8HzlE336BI+weeloh{4?l$SK@p)7oC(Y=&(ANvn}dNfIG;ZvS( z0?t|g>#h1;+5X#UuI#@DNmJ}UWbF5B{>dT!pYI}DbpB5ojf-CfG-v+r?zMKy{{QXf z>ixeDlKyk=|9N<~MTJbMMEbth0U1{_=+_SL^W;zOj-V;bT993vq;$_531^C0yPCNeM_lJ;qm(B4sok!)xB9Vfypm5-0FsFxK(isdO;1@i+v98dkdlpn zhVTc*Ocs;1S;2s7WX-q;3Vz|g%}r7#Hq4xLf-ryV!;Il)SbDyf8X1hHDs!#sVjh6c z-+R%hiS3RxAvdQ$sJf9xZ9dlWqlzam6M4zm(B_?Va5N+|jMw=V62eW%J} z-}syHc&5Y0?A$(@KOTFcextPT{qMNashvYtEQgCO1@rfR%JP4&xwG>BK1iAs|EB_o zzq5Uy?dd$zE6}7 zdhr%nDwj&@=Nc@3xD<*r!WEO&&I|BYkvWIFCZA;5#DgF2!4OIClr}oav(O{EP3bQ` z%fN`cB5QUIOf9??NAXa+71z~m^s^wiCVysNqVS7uKp1i49qV6IKf!^p%$9mJ(?>6N?r1L{6 z8RD6r>Q|{ko(5PKlGXpP2mm0F=CEV-}k7)(Ku0rdsKxgklYa zMbZzwAnQ$A*e!f#GOp%Q7no8(lEfjEZE=M@^hA5*1zk@PL92r}R^+OLHCCz*f|{uE z1;k5~YOpfwYZ8j^+xG14brGjr6)BTGC-GEgcg2hsZ(nr8s~4Thw=PzUquScN02Jog d+U&XV*o)XItDc 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 c*9z@AtDc zVQyr3R8em|NM&qo0PGxVZzH$yKKoY;oDbIm)=Kg-&^O0E1V)oP!@dhp6a_*pM_Sfg za>IvxYSI5*47qx(_95NbzBJK%u|y7s!`YePJk~Nyr5T#ulsSArEYS2)!~0hmGcK92 zT)z2w7z_r3^V8GtcQ6=K{|?U1FWwAKE>6ylhsPJ^$8QG1v$NsJ8yGyp-kspBW9H4^ ztM{rN?*9asQra;mw6dcEfRs5V^)yMDa}pDw`zabHCIa~gN?oZ%!_Ng8k)v`-*1$4OiBwbL%6!TwlLAAhEQ_Qx`mq+I09A_Qlvq&2aod|Pm*CW91IS=^b;TZS){lN+1cx)U zZ*qywnZ*P7%xlc39SsVmd z^JR@vn(u@P|~xCe~;l}{Hr*toNv zfXjphgM~p$7X}faVWvQj|Anbb;2sSvB$;{1iOWYc4h*Jxs>Ht+)GRn1wh7M4flv;O zVv+>q@d%jWkh2*WB)Z_$3Wb1T6Zlyh1feE+1etS%9rgQD;pY0E>OA*KxLH4Fu^4-& zjqP)MMA^4u+G8fogu~Q%gMC(rUSL)Q^-psC-P~u|w=1HHSA=y&sOe%js8^$WNzdpZ zvT|AEekph(i>&Llp z^yGf?XdTHufvaHcFh=kNXAXG+Hwvy;j`E6Gd~xxTByEpG*Dc^xC$)|kCA1ixdxqL4 z5$)-|z;sQ~Ia*;zF&%SA>b&A7nk_4^#ax=L57lnzO*9p<-9?N9_&JrHOsqmcILvL8 zYBLiN0x^z!;dE-T8i}{aeiMNi!)7(}h0!Tm`}$kgszUoRgN%~~Y%tXE_!jHH8J0eT zpt>T1#-~IIX5T3`mdNYm5P2PIEs<4~qVb4!rqUhHKugH!JbXX*Fm{(y%vAb8$ywbA z)`Rj1D6M*!7jAY0TFDt8c?z_kRrFeP4a1X=lH8EN7j_cmN;bPI&k_qp|l`@BVc*4V$4RtNlW$1Lua54V@_BwQ9o z%j4Xmqr?4rDdn&9A*{kjG&7e8HBDYlU)MM$qmC>sWgcQago&0?KatP)ku0bT7b&o5 zB;74c=r+hL57~Xt9SC(A=+?A443&U%_$waIBI;Xce4zOI@h$a1nq$t}t}rbitp#d& zY$^C{i_~iNs|+oZ)*+Kc#)iwWz*4VFKv$*#;=Utr#$z0C+OR2>Bi|zb-=_X!onb<` zLh~r{U5h~-^`Eoh;H*;rxwtq!+t+_y1OE8+pQ`qvP2z|4YEUgseKn}u;a2nLZ8l3o zRgAhi(I%gpg`q0W^HzzfTsD`CHhJ9_koEBxai z92y`kxVpQBCq_q>NHf~Is6JltfN~VA(fDGan@`N8S#8W%6OE#pXo^p&M{X{VpfTEP zWEu^*-kRjz(aIGAAuAJVDlyW8l=*4q;3*RlfpJa;S`$@6rJ_CmNj1m%xW6MrmpZLY z)VErkqqP*Z?!J}`UzobGRWF>SX1Lt!If`|nK@)12otxf|sL<3(YNAcf+=x{4{Ir%V zDettBMbX1tjf_^9t5>oXan>Jmr_?2ec1@YfeD-&lxa{FsV2Au~KDP6_03G??`SHnl zHUB$19_;hK*MOJE|6U?}TPS3*{M4GiHKDbpa39M>4Y}EZX7qt|{rnPhB{RE{-nwuN zSU+CG@}ts?hA*rMyO zRiB{hkLsbdeZIqPU0rz!1yA;MR6N3TLSdUbcbWt)`yplAg%GgT=}UG=*WJNQUTEW(awE9&3J!DjfQRG_4NhYsgn`Sl)1PZDCbQ@x$j*htx3!%7 zp}MfJ=s$G5a`EZrIyzS(6m!!|OK#^$?9Fv~UmSr@sr2E^flr@qu5AMF1E$PdgeL^9 z)msN2-v9J>ppk%a6lG526)-8{trd?ER>!vx!pNllIpx)qEVdH3xsXo t8N`0htV7c;So*-GX#1Pw{+jHKcMp5m!ycXw{uclM|NmOhP4NIq005R9+-(2= diff --git a/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.1.101.tgz b/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.1.101.tgz deleted file mode 100755 index 9ac972e5e8e442fc982058dd4154d9cacce4b3bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2439 zcmV;233&D&iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PGxHbK5pD&;AuV?n7QIT8b>Yqc_*ibUfE49y{sGy%i!>BF-Sd z0-zn;&HeYA1*k8IUrKDJ*K%Jh;bV8P++FMkEyGltpcyQf!w19+%^)`X^eSP-MN5{- zH{TA!;c$3gk=7d&udIS(N$E03FF>_90B=l*F#)-K=K7~S8DwpAx42?)pIVPuY>`acw zl?xNWIjY7bilt~X7ULAc;I?+!rFEEA?lUNnSsc**HMb?rK4O{p4UH9AP2q8L#L>n^ zWX^xTQPwdjEw}{X>h9XYT$>6+(NQA_x6E(~EX$;by=adfR}{z5C>jk%N8kIguc5~N z9j2LN4((~I)m$tFac-SX4O*R>7&*>`5_GgKKBC3`FV072yY~NXGMv2Y?f*4k+ZNW*8Hyh0%GoT3cEZ5ET>)8TfU6Knm;ru{HRMu+C3pGB@N13;KS{ zCfc|U8*GDOHcSe&$R#t=&7h4n`H>GRZ^(}T9+?!}%O>E^8LG?Mo8QLwae^reg8(~T zEwBb6xV5m*J2v`SFbJ2oH^tt}=!|^+icNwoEm@D1sJtaM!W!`I0Rz3_=^_UkDC;@6 zL|8DG8MJg^5CR%z3iRw>7`q7W(a=VcSuQzo`H04W!B{Vp`1cx{1*bh3@2ngM<ajNzdpZ zvSM4{eD^;O+n?c4&1NIndd3@`A;0%i& zd{AAILG4o_1+(uJn@QwVatOT6w3f)qN>O`6yHxRkXP_x`yFNNJ(zUV2Hbs(`}&PI>92(^e_PG5I8CZi54ZDj6aK7_fJQa_Q;_?axI2p1`^ zsYTr`OlUXAj)!bN=mCgY4YV_^7DFW<9sY*LvyS@K8t*awd3;NCkmi`nZCjY;7wrUU zdS)s3ZHm+?=#_>xN$ZHoEMcR~m}hBFB%oW<0Dkdqe`3wCI__@?(WQ;6i^@<`$0r z6ZChc-s(Mz__{Y*DpUGKgk8`EsL#Ixbh4!8T>Jn;jd^)zJoPzxfSOEw zHCdOhZ_{t^2+fMWpTP&%xrrI%O8k){2u}CVT%cLkt~1TSCCtH-(GJ%=^}PJ%$~H5# z(rPaf1ZXN1Y!j*~7_-5+P<*x^6(Y;|G|CWw*K$YUX1PUpLf~4x zb@1`SFaHD@@heV(%n7{$CPlcl!ZG~r@D_rn9J7o(o%I4!&R<{&%8Weq1A@&>!5ty? zvpxg@u7TX}0-gU~Lg_tmw+Gy}s=q(f`Xte$Q!)Sa~{{4sHxc~i! zSAieue#GDs?!pAb2{SI(zS#SLgxn&B*|PFS62AA@dg!5t9(t&U{{;X5|NrbrcR>J3 F00631!+!t( diff --git a/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.2.101.tgz b/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.2.101.tgz deleted file mode 100755 index 46e06d282f6da1f2746ed708100a131b0a54d3fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3693 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 AdH?_b diff --git a/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.3.1+up3.3.0.tgz b/assets/rancher-gatekeeper/rancher-gatekeeper-crd-3.3.1+up3.3.0.tgz deleted file mode 100644 index 9872166fb687949d576ce6e7c1f2ba95d2b534c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3684 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 M|FHK79RMl-05D3(xc~qF diff --git a/assets/rancher-grafana/rancher-grafana-6.6.401+up6.6.4.tgz b/assets/rancher-grafana/rancher-grafana-6.6.401+up6.6.4.tgz deleted file mode 100644 index b602ab3b4d92eebd6e42ca0d251b92a0ee077dba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27618 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 V<@p@XzXAXN|Nj98>sDc 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 diff --git a/assets/rancher-istio-1.8/rancher-istio-1.8.601.tgz b/assets/rancher-istio-1.8/rancher-istio-1.8.601.tgz deleted file mode 100644 index 81231cc0ae2a1e84030936cabf5dcad93e8155af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19461 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 Vu57*h{{a91|Np@Q_8tI20st#{Y+wKY diff --git a/assets/rancher-istio-1.9/rancher-istio-1.9.501.tgz b/assets/rancher-istio-1.9/rancher-istio-1.9.501.tgz deleted file mode 100644 index 9122e12c2ab6e688eb2b40b2c469aa906d6ce492..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19288 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 diff --git a/assets/rancher-istio/rancher-istio-1.7.100.tgz b/assets/rancher-istio/rancher-istio-1.7.100.tgz deleted file mode 100755 index 703de7f90f2e41bcb2f55f3f53234fe2db81d55f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13476 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 Sq$Yhq>Hh-|ED5#%x&Z*k!~}f+ diff --git a/assets/rancher-istio/rancher-istio-1.7.300.tgz b/assets/rancher-istio/rancher-istio-1.7.300.tgz deleted file mode 100755 index e45b7d003f9a285e17bf338755edd2e313db11a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14077 zcmV_{CyX4w z{ik~=olfU;I3(=f(TM%q=?(b5qL6O?badJs^#}b9>2!y^(eO`Xct7Z*%PNe_08p`g z&vU40n~P9e52{V48{mk3#Q%OKB}k2bKz~~~0bNip3XQe7a1YW3&|@?h6pw#z*v0W5 z_WHv?cLd|#>x@RDKatKsS}!U8=HqYECG~9TSq=@)8Vy2P#4{K4jL3=c(J@`871H2_ z2Jo5?_-Te`ggs{uEZ?&om_43&Xi(3bxYTAZ;j56n>KeU)(P7U5y7WUQ@`LpmnK~{# zYqt#p|I@YEw&rFKg^h;D32eYk}$O3C`~_6Da4|33x(f7-B$(VtSq* znYemk`NLW^Bh&R~2K*bj)PN~rt|GtXc+h><)pLcG71-bK<=yFOVOTVXoT)?Y7=X5# z?SxC$T(>v_dV@1kTMyrdOVff%Y}&TMbr{iww(c_UZycM3t=Ua*Mm!qb`oTxXn;Gm& zsA1eVL9{Ym?2BX3_Dy#}BU9gxfV$KSX)DbkokB!cPRsHaOWy-|Dsa`-^MRkbj<>pN zm`msHl4IU<;pg)22?ISf`VHuc6*x=IZqLcY3>}M;ii9*;ElD&tBO=BtB)3j9hewn* zZbhy^F6op8B=X5Tik2bpUP+0zYeqDT+JNHJ4~Pw9aNN*nI2N`gYjbvNh|aSa5<<&i z8@l9&0$6x6YkZ_@ptTLts-@5!emLGVFvBQVS4IMFWQl0K}YVLnuCC&f&;2wG# zu)Y328V;9)I9BtpJFypvJ;JSQ{nszd!5@()xe*bkytA^8Xm+3AyAmK*-z1 z`&B@GVt@bqG$$dRNy!5BZv%4~req75IG!1-VMDN3n4TR%Wnz*!{JAD`>MjUlFVEqz z<*sZH2E_D;54;|PKHCTop9wY;PSA#bi;$Ksy(1QklD}|%XNrnJ-bC;|^aUW?xSWua zlb`;IN=bq>-;5yECnsm*$B^1guFU}NIW`^zFrpwmr`S?75B$|^?yn-&B~UQtjmDEF zPsl4}gVbo8oJexL^*!9eARq!z{Rkg^2>bni%Ov&0`5!)xA!vURds0IP}1}cf+O<@Jf zf$Nef2>C21(86F~JhBR7OrE29L4HYX@V=R%+Vl$!*JQl}H2_Els47MTgVXRr9X>q~ zC5bfT1*U|Jhvb)K+&d%r^J+;g!oGN;!(D@%10E*1;`+B7cwAE- zd^`RLuOG@Iqr#9ha8n1o^*gv0-n?OS0YIppRB#7`UF$OrA4 zo^jWv9v6uCYuJ8feAb(jwElPb`ux?~*N4>ou$1Y4qi)9j3;O?{TkC(vC>i}vvMbns zHyY>hI}0`i5pZs%z;P1;EYpwXjOsPODAqJUKA5Nk#_Auc1Zk#tsT?{GR2T>|L#8#a zR-x&MgKe-68EfS_N73gBhv&U1Q{GT7aYDg0skKgwE7vqr_Ffr9&pXhkc?_J5eol{Tk8*d6bY?5$gffSmq+*H#r z(*Ff&`8z+NXD27*x>&~$dOxTQVYpgwJ%e>Q(P5F+atItDt^|2MFr%ERqr|GP98FFg z*erw~IYHT*qM!hYVo{3w5QFQU)x~Sb2$h$z4<`N)eT{4vs_S88JkSqEP*9*qeTtWr zMx_$;u66u>2OXb$VM=~ldhrF1(oG7yltx7i(rR((*-E?KxcWeKjqm=ac12bB(Q^14HfbGZsv^VP4Pp)Vbp_T;dokibB9}v_oxke3} zcAsxdVcSZrk9_~j^d517PyQDG8yR;@S!Cbf*3$$HZT&mtTA9?F0V%IC%A;ejjGkTWuTa(R* zPg~+&R!=lEGJ5cH>8@su_hvH`j;w^mKS@A!j2>T~t*+5+G$ydyO`(bd(r8$oqwPQ` zaa!6s z$Mqu}pyDpEPcof(^47US^N#O2XuVTXNIg8CL=y^U0ROwF?w1H>XdFzkfOyjp*>@ zpl9`a6ANaGefrY2U%r?&X4Ip|abQ6-doX!g-EOPfx$bn%I^DBj*LeA|*L^YSbh`hy z`B|UU-bX3g|BHP=i(7quCR3d5Br(*-yaS7_4+?X`ShuUXN~d*O4$zL(Ne}8 z{iEZ-8sj>}TXP8-Mg#z~?A)Czo; z9>5q}vi`fHZpQxG>vj6I|JPAUtJO+L`CwvN25#kHH!9riKfVaji$38F+)#T7lOx3+ zTysKQvCl3BW6ogPKg09z$Zz2+1En1;2+ggTNSY%ds7A1I`Od#Zpi|!m{%RR-{9D53 zA-?%1Obxv8-mUcd70^&~taKQ(7GYCb2;TQjoe_=gK5X#QM8Ce0Rn?{6sH~t#7h$%YGgl#x}AZ#_j)&ocRSXdU52k9%C$#X>0^-Ws^z&jmR z`TFGRqJDBi2sYz zn1e`wvh%<0u$Sfk!%nUL9i<$I_iJ@S$&R0hGr<{KfQ`&z$@`ap&f{d8 zbOA4D#H%I;C%NBkXd4LiJD0L8d8R`7uK+5-qKW~*e2(aJ<%$QTxUM2Uv`qB&&f~~< zgzv!$S^BoD$ZkKm(bYuMDhx2a1b+TtPss`2YTE%uJd54>Z` zezAK@AkpmxZn6GTJ@uW?2&Dv<1)aCH#%u;7ge)A4|s@<|d+O-nUdxQkhu za@-AIEPOe}LaSPH3MzMoVt7V!I14q-v{fQ=#_2B$Y}3z_pAy^4*FU^Izj{4>cmDRZ z@|y5_L=02olE*?a(9I_eR6==kb^Yc&gK_oY{Gtd@`DDq${qFtc#q05#cURZvKm1UH zp6I*kJ4pT&--l{4$B8C9L6b@be-XX{4JU07%k6O9eBNwX%wQsm8O)evrM(J+w(EoL zgRxWEJT_C<4ptsaztk68lD=iaQAcxe*21f$dbPlBKA6$`jIc&HYeu^}G<>OmkYN$8K{)<;+f{on~1T5zUeZ7-y;WH=bZ@L!DCEY=uB_NLtW; zp^wtNdo{8%_a8%M1FyE-&2;SDIiNN%_~Xs14!AJ{$tkISh`Nuf_G=Z`)@9H4T1{nmzyTckBJ%af;Ue^D3qIq?mlsQNMgsoqa!a&+CGv zX#J02KaIzLMzq{J6hPVfALj0V!2bvJ`aeeb^r?M9Uh~jTNq`~|;0!PJhiDN%GvfLd z<_RSyZE>rDIX>uCcZ=y}SS4jv;E)v?yczsQO4&N{YrrzQg7*4v z{Mj;ayl6_Ae-7KtodAHsOXDBSd@t0$A9|>@rGo#TP($zU{?}lbz5hAr3~Kp*l#<)h zealC?`lhhl4KQ4>+y3l+saC-#Rw}krDR8!4(kWt+->McjBDVt@I{G*l?*U4Q{x5H) z?-diM?EGiY$)5l82g5r5+fhnJc&0+XW^aIM9rxPVU4sbbsNoCDD9}PL#8A$w9gIGz znJK|Yu4@dnfg5spm=mT#j4W_p{rYZ+PLj#dQ;U51NY@Gk5uKsM18hDg{u1w(0}%4c zr{Oz4dVL3V|4@-nhcYp}bsQJtSAX&YqMYh~gCstB!ZVRu^V!>Wf&&A`!%&L^A2`j(Ph$*xVU9npCN%IUEcEfxx5x2m*BC>| zjImSl1jV!>p4pGmWo+!8(YrJ9wQKI;wdMc7=ZYjZHS|z#)dZJCylISb>Gz^V?>F3V)wR!;uexcluTin!%XQi zQqEj1f8J%WsY~mP_gus&27oM%)6W%GSav0`b%MrLC9aBQ#XNf5{1~N3{-Zy?cc25H z((|8g?);~FTFd{Vl!rb4VY4iA03`Vkd$;`-pgsYrPk`zhpp}b0{&U8OWzRNB`2T6A zpFRKSj`}tKKT1(~fA+>Buzb^9&P~bqS;~+1LSc)QL(>M*UBpVG2=12&tBNI#TBmxm zDfQHCC-V>25I`>A(oE1{;9!JuEq~9HMihGlPtG1JV z7q{c;I@29)>Q3@D8)p|w;bIi^vePV%#ar|-tC0ID4w_r|8LN@~E)^rU=+n58annr$ zn6DZye4)mACRCuab_$S{RE} z`9Ar=&{pPf#dev&oTXR^(Q%$+iEn03Yy?=W=3;(_?-LfJV?O%UvyKa?&{4xPWr0O!bT}g-E>PIl=$xlXio_zzu}HR(HE(q6$oBu z7@MYh%4cFe_(2f|FXzs{4>8dAnSO@p1wvMo?6*8b8-?@}?{f_cIMTu5Jhsi*Ek?@a4*jH1u~ChynKJN95tBT%XRzn`=JpVsjok5l%y z|6~m{Wu}cdyGOh+a3`(wen2t#uR@%hsZB#GHm{}(8#%Krf5^ zs|alRTb2`kSmW~cfU|KvrB7ueK%UKW3!3O94*MG+T&r&w%(>d(k zMrYgnf4$ytG^+Fe9ivnqf0mSeCrzNt|F1h7$nihzoOaRwci8LI^8Xkm6NdrVx#{{d z>HLo8^{XiMmenVQX<32&4RiL<0+>6tP1QsGe3fP3-#9i6TeF)$b(FHra6a+Pzzz+? zdy4xgs_KajrbuO!gQ+-QDfzU~yCH!hdWm34MV;oGfZuv(ZOo;U$Jh_gi0gQ(yL8%( z9{gM?ceF$f9m=C1u!lT(mxC#}(V@x{j%{dGM8|8EmQjc$W{W2N1b>diqH2hqi=cXDzd>>?O!QJ| z!|+0v#Y;TUa;&zqnDGZ=7y*BbHRrJOjionhe5C7JA7&gnt8;HRbXrF|RKEy(=}iOp zFj!d;-t=FXP7*Q%6e{=)>xBfbb;#0r4WuxzFtG*Rye=gu^0 zGHI{L^2Nxrv#gee%)sZ;6TGmiSW=ISWc|=VrunL0|f-h>{;Kf8Z%@Clvm( zOc0*{B*2hg1i!{>sVHX%*ElTG`xeM)0A#T882qOWs3rc&wE>Dp0bxMn z)^xaDguuA|#2bfq&@7L!jk=A;`}ZEYcZJ=T3DSAaACiaV@CtQP#bX z%n?f;UfO7>XE-ScM?L_tefIo0G0BHZjvh9AOI;AA)Zlqm#{uFbl9V#yi>1kel{r(# zVxf?5hyWUN85A;XpPl9s(*ornWJG5j1Tc+TIsu@5H1^}66)9i=xXAY%a##yz0q_(0 zTmYJL$C?up=*;dvu-vm)Ax;>Dqy5g01UA0suHi2~q*4ilp@eR(*++jtid+b#k&ias zFa{7JHS}0fzMD<*B=*+;a`MZ_vEmymqm72lLyHsA!Q+@e#1A$*#qT6VEs`~znpVtk zhP;b`Uqe1ad1DM!(Ahy6MrvQsz1&&u%4WAazW(}WVJc1@ zov>%+nSa?y*mwyHYAlX~N%P!AOLH^*RzxZX*grRN>4I~~hlSk}`#6rTv52`NR?1j@ z#3;lMvZebwugM9KY^cRkOlS{O99ym#@{3DnGKf15(9a_aCpJelg17s` zqCqrf4paCG`g;S5YYaOn@vs5gEXNy1{zvMuOL@-B17eQZMIc;&T*WwRNP}t*kA)hH zzAQ^~c9`UIUi&4#5hq!jWR(~G0=E4a$bd67#(PY7G!ywqWVY+jP;!R@7i6q;9kW_- z75)tqSTfJFOvx;+6tE99n8QT{f1HxN|APrilB+(i;*r)|Nc{9kGH}72 z#7r@y_Lz#(mU!oBqJreEB{Js-EpT3|$x=dkA}8bk0m$>ngsCcS4$733?|Gw|D~mrU zcx=K%e)@w3qmh6v)eHs<{4L9&iv<6%h6IxnZy}QBioHkdgKis zYKJa|uo@a!7Zr88DYl_oc~wbulI1Ti@Lk+)MJT!PF7xM8;N_J{#q$~8eSlY2LfurL zff$|9Z2`8DRcn-Bn|hFsSlyCdW6ho1#?mZP?>(l};Z9`9nurM_gW~Ex%c=9KTfWfi z)rq+aOG|=H#}8lw)b^K=YTjT}84+1Tjl!uS{*k)|F2?}1#nlS7y>~F)O#-dA=hSqg`R^LH56y7I^n9vs zRPLONc*_LsK1;{{1{Q1Kq174r%k}k#s~q&KjLLqI{~%39-2K9)-*jJ5*IWbN@;%t2 zlc7>!Nr8ph@vDB~4&ypEv>t*79fDMtf4LgZFRtJG{k1keKQq032P#T>Y^Dx%Z4oUi z_nb$Im-=LKfhMl2kE)+xCOKoHj*rA#HRMscVtUG$_0V7ASCz%6(eD!`E+Dis)iu;_ zZ6`(29AA%zRyZ_wZ;_^^w5}nju{(UOb!={d*JU$z!$4{vF$A_Z*oqHo0aPXN}^VGH%qlliiPS6 zX!G*X=0VuJ-W<>hGcJ|PK9^g5lC7s+(}HSC-+or~f*mhCQ>IG#WJ;xWN&Bh2 zB>XIY!tE>!lQk#uWVJhcg zjVidRP_(wPEig(QE+!w~<8*MlGNjUg%Fr?lqxg7em-C-(qr#Q>|MYv=`0t}Zr}qCj zN;zQsw{6w3J7goF{U8Y1{x zDjm8eQ$0ppYluLv%u~KaSTwe52k?N|WBLKcX~W|d4eWC7sw>*a*AwfRNEBGKdBwS!1sRjC%kLok6pW@%m_8?TT#$E z9{Vi`-IjjGR!i!ME~K2|*zr^Ir1^6idzONlicuB$E_WIx70ZQ*Mtu__+Gyx0W-49< zP=eVV94AJd%9vnn5r6Jp2m~uBrDktlR$5H9ZByL8C~a2M)3lbQXl}Eh1IKEW1Jhio z(LvK)$Js!ZOd}3RiWi_o`L33a(L1zrNXI+J=zq6#(n70LD;BJqwZRho zuQTdq^uK<$JE-$N9;H+l`aUU;n`upRLHV^>R-{dYJ|4!EpnKvVB<9XOwYIX7DbjD6# z+ss4z>;G&h`?Loc|6SJqyZ6_xuZ-v}s@O)^`X3Ai+5KOyTd)74lz;I12I!a0+{gcC z;)*VAd=lT|ub!i~x#ogm<2v>|zhYB`{DjMc-xoiR@2M2}n z`@==`JSt;Dj$K31yM?)4=9n(N%Gc#S!kCP{vDp%>xkI8xfGf5<>poP+LlZ|%`i_=k zlf-z% zu6NbjO?lttsh4(#-_7@ZpzW7>{-eKimVCD1=&0b+r1c)jb*nZC6qjAke_D7o3?@Pq z9iZ&|r<0fer=2?f&r!-lo&SjWv%mQNT#tbs$KlTxbL8_G9Q0Hs{s9kis)3PpO4m9XYeSP5vTvY4CT1EOEe=&{E-T)0Z*IdVvILbHg0}1x zY2x?IDn>| z$B0_Eoo=uoZs*?m%JP>oK3k>5yhGV3{!hFSsTK;fvvvH>(de{}|9+IR$N8_g7gjC^ z%J_f3o6-OKox!M%|8$g6cK$2EygYt=xi(VlRCZba@;YEu6|ijm!>Z4o|MYrw{->jq zef7UW{;|nFbccJV59LZy>;~d^Xf%#-jDwP8G_{8w;F7Y-`WF@%D${~s0+3C-pv?Z) z?d1Hw2ZQ?j_bBCwU;wj-JawrD|MUHit0ie}ItXr(rg8|}#Nf=$=Cfy{Lt4zrhcLgI zg5F@0vu}v)SdsD~q>+57I|GTcy0qWMFJH+GN0UdORiKF&Yeno!shOCZMC(r@|0+W8 z==j6y{f`WSsVca<6?nM5i+*vez8XI#U(q{QS|QRwz)WHEl>Qc1VO>jM5=U5XUdq2N zE?3`L({luk&|M!OZ_`iehY0dwSQSMWJJC@oekyBzZ%IiM}t$jk?`eB3zPr?j`83RHG zrt>yueyOXwZ-0_vQKz8phoG5OvsbWqolbgT(k)J`-@d!E!v8SA@ z?DUOQPIqFAePE){S}2DryeF*1X5o0oNMGUA5|R2LM>HhqjCvSegW4SLg~;)NGKz2) zUCVTzlWE{DVp9K7apbSj+!oluw_4 zP2V_+GqxabQR2OdZx%=vm;+~=+cvOTfubQ zl~iFtf7P3M@`y|oi!2=M%CpF*pNS0HYG#hXIEoi6YydIi7LZ}C$!{w_W$Ix5kL8jf zZ#4cvIc!!x!WOV2q0BhNGCGmJt|m0_Xe1;p501(=U@SEdcU)oHr>7#V(W`e?SQocd z=yLGPXuO#ckrI>x5h0Srj*CBYlFN-ePYE=_kQdl)rfwn@B!!hT*{rUSI0_Wjs6zJG zX@c=o)(PC~R~^~-QxFPXG$qYHgKGDch}B+o(2K@jAuP_=8*!V{Oedh?wU}C2MqpMo zp>Be63(-z>HhqEgU(7ojHKXQ#fRZ zP5A*6HmVi456k-Lk+Fz8A8AtfYu{tB@Y#UD^LKE|t)8IF$9%EI)_8MRxJ zb$Ux9vvcW&P)2vFHi%ggwzPPZ?8KC@%74o&Kb~$=rbYk9kh3|Paf1%M5oiwO-khbHdo{_nNy9ChPAj(dmHkoMyam6uTQUxoM_B zE<2eavyi2(t$mfc5Qz_xCjU@_>?zN`QTW2Y{@3gBEwU2$~GS8cRXa zq;hp?H3LzpRC2$HnG1?$i5=V05xxf$TRJq#l<|(jouEcNDyW;+k~UP#cN^A*eU9fC z?^X-a9qrb8*lQBpYnF94w>8ytGgF7;`?z7{WW1iWmYUqi+WaFcKDMu{694Je@_Q>{QsjAMYKHKNk%;*dA7Fs z7I4<(Bnf%~@X*gzx}dz_-#&f^l;RL{2fMm^oQt}O6nw%0feKJ9Z{~P+@*E{3zH5Vw z208ALj?wEF9j0pWd$FyFX@TstLqouMnhF~_13h3hF)V-4PK?s+R6A`a454rBK5&C4 z>~GB93fQ&={TIE#>C3^3XXQ8w#8Cf5w#BtUfm=%kOf%HM+Q~zLwJN81#?GE0NGfmj zrth*?!iOvmWm7v++hL%juHFHKW|3C)`P}gq0i#$XBaG23^k&Ryr=(8aK67cTffG5) z(#gfx@z7Rz-twQ9-xycM;@<9mWBj)XYV6+Z5b@u-ong-Z6bHIXv!Oi#JA|tVi&uqr%e9v^ z??+8~)P8Jr*{$q({~umNcP)AYOJ%Yu+7g!T|Av|P|NY)@RQvxQrIe_?8XpX<`ex*|Y-X+^ZfXw; zlI)sA$!-Sbt$b?EKpCE;^INt!{h*?0+o&ohDYBu1u%y@T6g&}4rCwQ&mXs*~fO;63 zGrCL91c=AhvB0+|yJ1Ig+DOnVn7~jEwpBiCr*`RW4EGwqjx&Ii&d-4(`?J7YJQxWk zYdpBZR2!Mzvllz`oqczyzVj)K!-)Sgb(OJB#MfS z1bkSLf+nycUh_eDmwd5cQOt_Ic^khiq0(=#2agEb$`U-=&5+7p?o1{I`2qotBR?`- ztVReTpHZ)uv;Pcg`_ECzBh>%0bLvn!pwRfs|ezi zh_h&pd*U(EPbw&X7ps6dAG*G2Q=3?>8HUxEH*1a6XWxS8<)FqK)R?_W@YqKD{pcM4 z9i~E!SKj{UTr-lA)VBhaK_M#HaoC~3g?YDIqwwKg4cjKgOPxEl&A;8PdAv-D)(D%- zskyA6RTN{h04##_*pd*(2yvW(Q5CDVFbs#n2S;XiOxRV&L!p9qjVs{tpla5h@}IN% z5+{H%`QOdQ{~gu-f5$10Q2w*e4=nV#zxx|6qJd|+ir6m^-sd0Qs7C?zDqz-t-HkWg zvmPj?oCJ&|*u&Xwn6GA$!QfK9)c5(jmB;tg_tEp2Kb{Ks_e%lUN)Zvh%e+_ZGuB6Q zR!F@M$?F38nU1>(a^j-ft45Wn_+js|G)qKHc=7a2l)W46deKq7URhZ zuM&!luVn(8bfR^l-Ipj63_1rv_!fbMBiePVp&+DgI7;?C z=vxu7AGCYw-g}R}mF(g7?@XzH-jn}_cq?%>@%>24`FSbf|D9n!%m4esZk_+(DCH6I zf6bgaIOo4&ZIExFk&O~S;pn1C>}rvK`V1A~J=Z_=Zv6GW_Mc&=o3;O(b_ezPKSp_k z>z~c31KWRIBg}YRKgp-h2TQ%WyvYRk%D?pvKrPH3j{)Atb_{QK zf+;xRP1GGI7Nf)bVHBK#-?pIHXD8w}mObVFZ!0tSSa|VAlrsAdsQcOcPrYI7|9h13 z2<5++QwP=n{>Gu|JU;#wH&`O^w{=sv0UqH8dpRoXeIPAxP(|qquj=e^KJNKm>u@Lm zw5`y}?8Bs^(4DdV(s=VR%01ZsbHbq1|8JP(|NZW$w*MccJVO4jn^X61`rlyn=lnYa z{qd&CzVMnU^jMjQFRNOGvkh&f9&?Yf9b4o+W!tv-!zLfX!Zt;9;l)_gW?`dm4|8&I z&?6HQs90o(KUdyWG2CCV2&iS<=WcfgAwlB7_ZiY*Vcs2p1n4yQ7(0Le`plm4f96++ z08}RbPeJBq?7!X9PA&hBQ68cEpZN#g`hD-~c75ObSy?~x$BsAkD~R}u4?hy-uvW$R zB;4G_)^a7?+YWI1aOvAD)^+ju?}jUZmseNhZB-NU#!dw^WbyGNC*7Ni?$xjFeRO=p z#F$n30OLK&eQkPZu_1}X(>h*t&^0?RkeOUeqUB7nl z`uhC&z(L|a6)$~O%H@AH{!@3@t?mCuDUWdd$8+l7OFtX@Y1>ub{W8|PTJ~K37-1Qc zS!=w$lTx<+PX}4~-yNRz>h*t&@(9;|Jf{x6{;w6tQtOwGiVgsUvx10mvG8q7AJE*$ zE|l0MrDtafz%m;`AtpNeK~)}g5c#ja_7Rto_22LIbMk+5I;_|KG0G!c|H+)XcLhL1 zf5b~4C4rw2opEgPFF79g5j~j>aAjU;nmb1wF191W++;g^r@YI27D0H?0=T)V6Ma+^S|^?NBR6O-P-Mx}8BS|Bq50q5Qumr{8M{w#eT% zCGt5EAWTE-UpTg4Cx*6%SZtK0eB&Py@nMx6U}>A%FvfGvoF%Yb+UNXTW*ylUftUgT z#cbufkwAXCnFfV8d|N0MoT%!36oJyr^(Uq~4rAVX01cwbNzA5>6-kv{J15~Cv4e#@ z{GOpiC??XYBqGyYVc+c^LVfoU!ZdC!jkfPV$Ui(@4{Gzzzj4`9|MPsC{#p|Lt33Wo zHyi&G^uPN4_fg6t)c^RLI=KG#4!{}=u22BQgCY%(qal@`x#`)iDig~R$8hyad{#yE zDQQp7|2H;X5FxQb>+;Lpn&&yyUEg2A5Y8$Yx;Ej&vZ*7qF+kg3-r9T~!%m{+TZAXo z=W7u-@sOl=`o)~IM3DNu&*nmTn5dK1B`1w>q`0ab)G8qb{X5M0^FG}>zcC#bSTW3cN)AcSon$_%FTFI{wRX$|IEj**SG6P2f=ZUuPEjqAX#L z28_cpK|0OUR30UY!9StijC_Al{Sc_H<6#n$HG&(@Fs!kNml0zWZ9Wa!C@y0xb+Jx& vMQFE#sZ4Mmj9!|N+lNjuc3abF(-hKS@HoUpUFuSoFR1)~8FImj0LB3TP*X0f diff --git a/assets/rancher-istio/rancher-istio-1.7.301.tgz b/assets/rancher-istio/rancher-istio-1.7.301.tgz deleted file mode 100755 index 4c7881e73790632ec5a2e7fec5c0b42cfebfd939..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17401 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 diff --git a/assets/rancher-kiali-server/rancher-kiali-server-1.23.001.tgz b/assets/rancher-kiali-server/rancher-kiali-server-1.23.001.tgz deleted file mode 100755 index 07acfd8f5583eed111be0363da5c714b3cd253e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9104 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